From b397edee2be2dfcc3f28eeac50298b4de26b1afa Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期五, 13 十二月 2024 16:53:45 +0800
Subject: [PATCH] 取水口日取水量表中,出现一些大数,明显不正确,发析系统日志,发现一些阀控器会上报一些累计流量为0的数据,且无规律,推测是其不能从水表读取到累计流量时会上报0值。如果间歇上报0值,间歇上报一些非0值,非0值减去0值,就会出现大数,一天中出现几次那么会大数进行累加,数值将更大。为此变更算法,规避这种情况,但也会丢失一些流量值。

---
 pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/tcpClient/downData/DownData.java |   35 +++++++++++++++++++++++++++++------
 1 files changed, 29 insertions(+), 6 deletions(-)

diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/tcpClient/downData/DownData.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/tcpClient/downData/DownData.java
index 33709d1..3876932 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/tcpClient/downData/DownData.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/tcpClient/downData/DownData.java
@@ -2,6 +2,8 @@
 
 import com.dy.common.mw.protocol.p206V1.ProtocolConstantV206V1;
 import com.dy.common.util.ByteUtil;
+import com.dy.common.util.CreateRandom;
+import com.dy.simRtu.ServerProperties;
 import com.dy.simRtu.tcpClient.upData.*;
 
 /**
@@ -11,8 +13,10 @@
  */
 public class DownData {
 
+    private static int count9602 = 0;
+
     public void parseData(byte[] bs){
-        if(bs != null && bs.length >= ProtocolConstantV206V1.lenHead2Code){
+        if(bs != null && bs.length > 0){
             if(bs.length >= (ProtocolConstantV206V1.ctrlIndex)
                     && bs[0] == ProtocolConstantV206V1.P_Head_Byte
                     && bs[2] == ProtocolConstantV206V1.P_Head_Byte){
@@ -29,19 +33,38 @@
         //搴旇鏄摼璺娴嬫暟鎹�
     }
     private void dealUpgrade(byte[] bs){
-        String cdPre = ByteUtil.bytes2Hex(bs, false, ProtocolConstantV206V1.codeIndex, 1);
+        String cdPre = ByteUtil.bytes2Hex(bs, false, ProtocolConstantV206V1.UG_codeIndex, 1);
         if(cdPre.equals("16")){
             //鍗囩骇鍔熻兘鐮�
-            UpHeartBeat.upHeartBeat = false ;//涓嶄笂琛屽績璺�
-            if(bs.length >= ProtocolConstantV206V1.lenHead2Code + 1){
-                String cdSuf = ByteUtil.bytes2Hex(bs, false, ProtocolConstantV206V1.codeIndex + 1, 1);
+            UpHeartBeat.upHeartBeat = false ;//绂佹涓婅蹇冭烦
+            if(bs.length >= ProtocolConstantV206V1.UG_lenHead2Cmd + 1){
+                String cdSuf = ByteUtil.bytes2Hex(bs, false, ProtocolConstantV206V1.UG_codeIndex + 1, 1);
                 String cd = cdPre + cdSuf;
                 if(cd.equals("1601")){
                     //鍗囩骇閰嶇疆
                     UpCd9601.upData() ;
+
                 }else if(cd.equals("1602")){
                     //鍗囩骇鏁版嵁
-                    UpCd9602.upData() ;
+                    count9602 ++ ;
+                    if(ServerProperties.argOneDie){
+                        UpHeartBeat.upHeartBeat = true ;//浣胯兘涓婅蹇冭烦
+                    }else{
+                        if(ServerProperties.argMultiDie){
+                            if(count9602 > 10){
+                                int random =  CreateRandom.create_between(10, 100) ;
+                                if(random > 90){
+                                    UpHeartBeat.upHeartBeat = true ;//浣胯兘涓婅蹇冭烦
+                                }else{
+                                    UpCd9602.upData() ;
+                                }
+                            }else{
+                                UpCd9602.upData() ;
+                            }
+                        }else{
+                            UpCd9602.upData() ;
+                        }
+                    }
                 }else if(cd.equals("1603")){
                     //鍗囩骇鏍¢獙
                     UpCd9603.upData() ;

--
Gitblit v1.8.0