package com.dy.rtuMw.server.rtuData.pSdV1;
|
|
import com.dy.common.mw.protocol4Mqtt.MqttSubMsg;
|
import com.dy.common.mw.protocol4Mqtt.pSdV1.upVos.ManureVo;
|
import com.dy.common.springUtil.SpringContextUtil;
|
import com.dy.pipIrrGlobal.pojoPr.PrStManure;
|
import com.dy.rtuMw.server.ServerProperties;
|
import com.dy.rtuMw.server.rtuData.TaskSurpport;
|
import com.dy.rtuMw.server.rtuData.dbSv.DbSv;
|
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.Logger;
|
|
import java.util.HashMap;
|
import java.util.Map;
|
|
/**
|
* @Author: liurunyu
|
* @Date: 2025/6/25 8:56
|
* @Description
|
*/
|
public class TkPreGenObjs4ManureSdV1 extends TaskSurpport {
|
|
private static Logger log = LogManager.getLogger(TkPreGenObjs4ManureSdV1.class.getName()) ;
|
|
//类ID,一定与Tree.xml配置文件中配置一致
|
public static final String taskId = "TkPreGenObjs4ManureSdV1" ;
|
|
//处理上条数据的时刻
|
private static final Map<String, Long> dealDataAtDateTime = new HashMap<>();
|
|
/**
|
* 执行节点任务
|
* @param data 需要处理的数据
|
*/
|
@Override
|
public void execute(Object data) {
|
//前面的任务已经判断了data不为空
|
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);
|
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("严重错误,未能得到DbSv对象");
|
}
|
}
|
}
|
}
|
}
|