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-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealIntakeAmountDay.java |   57 +++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 41 insertions(+), 16 deletions(-)

diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealIntakeAmountDay.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealIntakeAmountDay.java
index 9057b7c..4fd16a1 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealIntakeAmountDay.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealIntakeAmountDay.java
@@ -221,7 +221,7 @@
         lastPo.dt = DateTime.dateFrom_yyyy_MM_dd1(dV1.dt);
         lastPo.dtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1.dt);
         lastPo.rtuDtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.rtuDt);
-        //lastPo.amount = lastPo.amount ; //鏃ョ疮璁″彇姘撮噺涓嶅彉
+        //lastPo.amount = lastPo.amount ; //鏃ョ疮璁″彇姘撮噺淇濇寔涓嶅彉锛�
         lastPo.totalAmountLast = cdData.totalAmount ;
         return lastPo ;
     }
@@ -242,17 +242,29 @@
         //lastPo.dt = DateTime.dateFrom_yyyy_MM_dd1(dV1.dt);//鏃ユ湡娌″彉
         lastPo.dtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1.dt);
         lastPo.rtuDtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.rtuDt);
-        Double added = cdData.totalAmount - lastPo.totalAmountLast ;
-        if(added > 0){
-            if(lastPo.amount == null){
-                lastPo.amount = added ;
-            }else{
-                lastPo.amount += added ;
-            }
+        if(cdData.totalAmount == 0.0F){
+            //鍙戠幇闃�鎺у櫒涓�涓猙ug锛岀粡甯镐笂鎶ョ疮璁℃祦閲忎负0锛屾帹娴嬫槸闃�鎺у櫒鏈兘浠庢按琛ㄩ噰闆嗗埌鏁版嵁鏃朵細涓婃姤0鍊�
+            //杩欑鎯呭喌鏁版嵁涓嶅仛澶勭悊
+            //濡傛灉姘磋〃鍒濆畨瑁咃紝鏈繘琛岃繃浠诲姟鍙栨按锛岄偅涔堢疮璁℃祦閲忎細鏄�0锛岃繖绉嶆儏鍐靛綋bug澶勭悊涔熸棤闃�
+            //涓婇潰鏃舵爣浣滀簡鏇存柊锛屼篃姝e父锛岀浉褰撲簬鏈涓婃姤鐨勭疮璁℃祦閲忎笌涓婃涓婃姤鐨勭疮璁℃祦閲忔暟鍊肩浉绛�
+            //lastPo.totalAmountLast = lastPo.totalAmountLast ;
+            //lastPo.amount = lastPo.amount; //鏈棩鐨勬棩绱姘撮噺淇濇寔涓嶅彉
         }else{
-            //po.amount = po.amount ; //鏃ョ疮璁″彇姘撮噺涓嶅彉
+            Double added = cdData.totalAmount - lastPo.totalAmountLast ;
+            if(added > 0){
+                if(lastPo.amount == null){
+                    lastPo.amount = added ;
+                }else{
+                    lastPo.amount += added ;
+                }
+            }else{
+                //鍙兘鏄洿鎹㈡按琛ㄤ簡锛屾柊琛ㄥ簳鍊煎鍘熻〃搴曞�煎皬銆�
+                //鏈缃噺鍊间笉鍙橈紝涓嬫鍐嶄笂鎶ユ椂锛屽氨鑳芥甯歌绠椾簡銆�
+                //lastPo.amount = lastPo.amount ; //鏃ョ疮璁″彇姘撮噺涓嶅彉
+            }
+            lastPo.totalAmountLast = cdData.totalAmount ;
         }
-        lastPo.totalAmountLast = cdData.totalAmount ;
+
         return lastPo ;
     }
 
@@ -272,14 +284,27 @@
         lastPo.dt = DateTime.dateFrom_yyyy_MM_dd1(dV1.dt);//鏃ユ湡鍙樹簡
         lastPo.dtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1.dt);
         lastPo.rtuDtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.rtuDt);
-        Double added = cdData.totalAmount - lastPo.totalAmountLast ;
-        if(added > 0){
-            //鏂扮殑涓�澶╃殑澶勭悊鏂瑰紡涓庡悓涓�澶╃殑澶勭悊鏂瑰紡涓嶄竴鏍�
-            lastPo.amount = added;
+        if(cdData.totalAmount == 0.0F){
+            //鍙戠幇闃�鎺у櫒涓�涓猙ug锛岀粡甯镐笂鎶ョ疮璁℃祦閲忎负0锛屾帹娴嬫槸闃�鎺у櫒鏈兘浠庢按琛ㄩ噰闆嗗埌鏁版嵁鏃朵細涓婃姤0鍊�
+            //杩欑鎯呭喌鏁版嵁涓嶅仛澶勭悊
+            //濡傛灉姘磋〃鍒濆畨瑁咃紝鏈繘琛岃繃浠诲姟鍙栨按锛岄偅涔堢疮璁℃祦閲忎細鏄�0锛岃繖绉嶆儏鍐靛綋bug澶勭悊涔熸棤闃�
+            //涓婇潰鏃舵爣浣滀簡鏇存柊锛屼篃姝e父锛岀浉褰撲簬鏈涓婃姤鐨勭疮璁℃祦閲忎笌涓婃涓婃姤鐨勭疮璁℃祦閲忔暟鍊肩浉绛�
+            //lastPo.totalAmountLast = lastPo.totalAmountLast ;
+            lastPo.amount = 0.0D; //鏂扮殑涓�澶╃殑鏃ョ疮璁℃按閲忕疆0
         }else{
-            lastPo.amount = 0.0D; //鏃ョ疮璁℃按閲忓綊0
+            Double added = cdData.totalAmount - lastPo.totalAmountLast ;
+            if(added > 0){
+                //鏂扮殑涓�澶╃殑澶勭悊鏂瑰紡涓庡悓涓�澶╃殑澶勭悊鏂瑰紡涓嶄竴鏍�
+                lastPo.amount = added;
+            }else{
+                //鍙兘鏄洿鎹㈡按琛ㄤ簡锛屾柊琛ㄥ簳鍊兼瘮鍘熻〃搴曞�煎皬銆�
+                //鏈缃�0锛屼笅娆″啀涓婃姤鏃讹紝灏辫兘姝e父璁$畻浜嗐��
+                lastPo.amount = 0.0D; //鏃ョ疮璁℃按閲忓綊0
+            }
+            lastPo.totalAmountLast = cdData.totalAmount ;
         }
-        lastPo.totalAmountLast = cdData.totalAmount ;
+
+
         return lastPo ;
     }
 

--
Gitblit v1.8.0