pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/upVos/ManureVo.java
@@ -105,6 +105,31 @@ } } public boolean stateIsChanged(ManureVo compareVo){ if(this.stirRunning1 != null && compareVo.stirRunning1 != null && this.stirRunning1.byteValue() != compareVo.stirRunning1.byteValue()){ return true ; } if(this.stirRunning2 != null && compareVo.stirRunning2 != null && this.stirRunning2.byteValue() != compareVo.stirRunning2.byteValue()){ return true ; } if(this.stirRunning3 != null && compareVo.stirRunning3 != null && this.stirRunning3.byteValue() != compareVo.stirRunning3.byteValue()){ return true ; } if(this.stirRunning4 != null && compareVo.stirRunning4 != null && this.stirRunning4.byteValue() != compareVo.stirRunning4.byteValue()){ return true ; } if(this.injectRunning != null && compareVo.injectRunning != null && this.injectRunning.byteValue() != compareVo.injectRunning.byteValue()){ return true ; } if(this.irrRunning != null && compareVo.irrRunning != null && this.irrRunning.byteValue() != compareVo.irrRunning.byteValue()){ return true ; } if(this.alarm != null && compareVo.alarm != null && this.alarm.byteValue() != compareVo.alarm.byteValue()){ return true ; } return false ; } @Override public String toString(){ StringBuilder sb = new StringBuilder(); 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,10 +39,24 @@ 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(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){ @@ -52,8 +67,6 @@ } }else{ log.error("严重错误,未能得到DbSv对象"); } } } } }