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