package com.dy.rtuMw.server.rtuData.pSdV1;
|
|
import com.dy.common.mw.protocol4Mqtt.MqttSubMsg;
|
import com.dy.common.mw.protocol4Mqtt.pSdV1.upVos.WeatherVo;
|
import com.dy.common.springUtil.SpringContextUtil;
|
import com.dy.pipIrrGlobal.pojoPr.PrStWeather;
|
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 11:25
|
* @Description
|
*/
|
public class TkPreGenObjs4WeatherSdV1 extends TaskSurpport {
|
|
private static Logger log = LogManager.getLogger(TkPreGenObjs4WeatherSdV1.class.getName()) ;
|
|
//类ID,一定与Tree.xml配置文件中配置一致
|
public static final String taskId = "TkPreGenObjs4WeatherSdV1" ;
|
|
//处理上条数据的时刻
|
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 WeatherVo){
|
//气象数据
|
WeatherVo stVo = (WeatherVo)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) {
|
PrStWeather stPo = sv.getStWeatherByFBoxIdAndNo(msg.deviceId, stVo.no);
|
if (stPo != null) {
|
this.taskResult = new Object[]{sv, stPo};
|
this.toNextTasks(data);
|
}
|
} else {
|
log.error("严重错误,未能得到DbSv对象");
|
}
|
}
|
}
|
}
|
}
|