package com.dy.rtuMw.server.rtuData.pSdV1; 
 | 
  
 | 
import com.dy.common.mw.protocol4Mqtt.MqttSubMsg; 
 | 
import com.dy.common.mw.protocol4Mqtt.pSdV1.upVos.SoilVo; 
 | 
import com.dy.common.springUtil.SpringContextUtil; 
 | 
import com.dy.pipIrrGlobal.pojoPr.PrStSoil; 
 | 
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 TkPreGenObjs4SoilSdV1 extends TaskSurpport { 
 | 
  
 | 
    private static Logger log = LogManager.getLogger(TkPreGenObjs4SoilSdV1.class.getName()) ; 
 | 
  
 | 
    //类ID,一定与Tree.xml配置文件中配置一致 
 | 
    public static final String taskId = "TkPreGenObjs4SoilSdV1" ; 
 | 
  
 | 
    //处理上条数据的时刻 
 | 
    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 SoilVo){ 
 | 
            //墒情数据 
 | 
            SoilVo stVo = (SoilVo)msg.vo4Up ; 
 | 
            Long lastAt = dealDataAtDateTime.get(msg.deviceId + stVo.no); 
 | 
            Long now = System.currentTimeMillis() ; 
 | 
            if(lastAt == null || ((now - lastAt) >= ServerProperties.acceptSoilDataMinInterval)) { 
 | 
                dealDataAtDateTime.put(msg.deviceId + stVo.no, now); 
 | 
                DbSv sv = SpringContextUtil.getBean(DbSv.class); 
 | 
                if (sv != null) { 
 | 
                    PrStSoil stPo = sv.getStSoilByFBoxIdAndNo(msg.deviceId, stVo.no); 
 | 
                    if (stPo != null) { 
 | 
                        this.taskResult = new Object[]{sv, stPo}; 
 | 
                        this.toNextTasks(data); 
 | 
                    } 
 | 
                } else { 
 | 
                    log.error("严重错误,未能得到DbSv对象"); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
} 
 |