From a64e6867aad1bb3fc5c8955cd30741dc3d8d8806 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期六, 12 七月 2025 11:45:50 +0800
Subject: [PATCH] 水肥机上报数据,当有状态变化时,即时进行历史数据存储,无变化时进行间隔最小时间历史数据存储。

---
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/pSdV1/TkPreGenObjs4ManureSdV1.java |   39 ++++++++++++++++++++++++++-------------
 1 files changed, 26 insertions(+), 13 deletions(-)

diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/pSdV1/TkPreGenObjs4ManureSdV1.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/pSdV1/TkPreGenObjs4ManureSdV1.java
index 0890f30..28ddede 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/pSdV1/TkPreGenObjs4ManureSdV1.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/pSdV1/TkPreGenObjs4ManureSdV1.java
@@ -27,6 +27,7 @@
 
     //澶勭悊涓婃潯鏁版嵁鐨勬椂鍒�
     private static final Map<String, Long> dealDataAtDateTime = new HashMap<>();
+    private static final Map<String, ManureVo> lastUpManureData = new HashMap<>();
 
     /**
      * 鎵ц鑺傜偣浠诲姟
@@ -38,22 +39,34 @@
         MqttSubMsg msg = (MqttSubMsg)data ;
         if(msg.vo4Up != null && msg.vo4Up instanceof ManureVo){
             //姘磋偉鏁版嵁
-            ManureVo stVo = (ManureVo)msg.vo4Up ;
-            Long lastAt = dealDataAtDateTime.get(msg.deviceId + stVo.no);
+            ManureVo nowVo = (ManureVo)msg.vo4Up ;
+            ManureVo lastVo = lastUpManureData.get(msg.deviceId + nowVo.no) ;
             Long now = System.currentTimeMillis() ;
-            if(lastAt == null || ((now - lastAt) >= ServerProperties.mqttAcceptDataMinInterval)){
-                dealDataAtDateTime.put(msg.deviceId + stVo.no, now);
-                DbSv sv = SpringContextUtil.getBean(DbSv.class) ;
-                if(sv != null){
-                    PrStManure stPo = sv.getStManureByFBoxIdAndNo(msg.deviceId, stVo.no) ;
-                    if(stPo != null){
-                        this.taskResult = new Object[]{sv, stPo} ;
-                        this.toNextTasks(data);
-                    }
-                }else{
-                    log.error("涓ラ噸閿欒锛屾湭鑳藉緱鍒癉bSv瀵硅薄");
+            if(lastVo != null && nowVo.stateIsChanged(lastVo)){
+                //鐘舵�佹湁鍙樺寲
+                this.deal(data, msg, nowVo, now);
+            }else{
+                //鐘舵�佹棤鍙樺寲
+                Long lastAt = dealDataAtDateTime.get(msg.deviceId + nowVo.no);
+                if(lastAt == null || ((now - lastAt) >= ServerProperties.mqttAcceptDataMinInterval)){
+                    //瓒呰繃鏈�灏忔椂闂撮棿闅�
+                    this.deal(data, msg, nowVo, now);
                 }
             }
+            lastUpManureData.put(msg.deviceId + nowVo.no, nowVo);
+        }
+    }
+    private void deal(Object data, MqttSubMsg msg, ManureVo stVo, Long now){
+        dealDataAtDateTime.put(msg.deviceId + stVo.no, now);
+        DbSv sv = SpringContextUtil.getBean(DbSv.class) ;
+        if(sv != null){
+            PrStManure stPo = sv.getStManureByFBoxIdAndNo(msg.deviceId, stVo.no) ;
+            if(stPo != null){
+                this.taskResult = new Object[]{sv, stPo} ;
+                this.toNextTasks(data);
+            }
+        }else{
+            log.error("涓ラ噸閿欒锛屾湭鑳藉緱鍒癉bSv瀵硅薄");
         }
     }
 }

--
Gitblit v1.8.0