| | |
| | | |
| | | //处理上条数据的时刻 |
| | | private static final Map<String, Long> dealDataAtDateTime = new HashMap<>(); |
| | | private static final Map<String, ManureVo> lastUpManureData = new HashMap<>(); |
| | | |
| | | /** |
| | | * 执行节点任务 |
| | |
| | | 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){ |
| | |
| | | } |
| | | }else{ |
| | | log.error("严重错误,未能得到DbSv对象"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |