添加根据前置心跳更新设备通信状态

This commit is contained in:
hzj
2025-07-31 17:35:49 +08:00
parent b37fba545b
commit 354e6f1cf9
2 changed files with 91 additions and 2 deletions

View File

@@ -0,0 +1,89 @@
package com.njcn.device.pq.job;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.njcn.dataProcess.api.PqsCommunicateFeignClient;
import com.njcn.dataProcess.pojo.dto.PqsCommunicateDto;
import com.njcn.device.pq.constant.Param;
import com.njcn.device.pq.mapper.LineMapper;
import com.njcn.device.pq.mapper.NodeMapper;
import com.njcn.device.pq.mapper.PqsTerminalLogsMapper;
import com.njcn.device.pq.pojo.dto.DeviceInfo;
import com.njcn.device.pq.pojo.dto.NodeProcessDeviceTree;
import com.njcn.device.pq.pojo.po.Device;
import com.njcn.device.pq.pojo.po.DeviceProcess;
import com.njcn.device.pq.pojo.po.Node;
import com.njcn.device.pq.pojo.po.PqsTerminalLogs;
import com.njcn.device.pq.service.DeviceProcessService;
import com.njcn.device.pq.service.IDeviceService;
import com.njcn.message.constant.DeviceRebootType;
import com.njcn.redis.utils.RedisUtil;
import com.njcn.system.api.DicDataFeignClient;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* Description:
* Date: 2025/07/31 下午 4:23【需求编号】
*定时根据前置心跳设置设备状态
* @author clam
* @version V1.0.0
*/
@Component
@EnableScheduling
@RequiredArgsConstructor
public class DeviceComflagTasks {
private final NodeMapper nodeMapper;
private final IDeviceService iDeviceService;
private final DeviceProcessService deviceProcessService;
private final PqsCommunicateFeignClient pqsCommunicateFeignClient;
private final RedisUtil redisUtil;
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
@Scheduled(fixedRate = 1000*60*3) // 每3钟执行一次
public void updateDeviceComflag() {
List<Node> nodeList = nodeMapper.selectList(null);
for (Node node : nodeList) {
for (int i = 1; i <= node.getMaxProcessNum(); i++) {
//h获取redis里心跳如果收不到心跳
String heartByKey = redisUtil.getStringByKey(node.getId().concat(":").concat(i + ""));
if(StringUtils.isBlank(heartByKey)){
List<Device> list = iDeviceService.lambdaQuery().eq(Device::getNodeId, node.getId()).list();
if(!CollectionUtils.isEmpty(list)){
List<String> collect = list.stream().map(Device::getId).collect(Collectors.toList());
List<DeviceProcess> deviceProcess = deviceProcessService.lambdaQuery().in(DeviceProcess::getId, collect).eq(DeviceProcess::getProcessNo, i).list();
List<String> collect2 = deviceProcess.stream().map(DeviceProcess::getId).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(list)){
collect2.forEach(temp->{
PqsCommunicateDto pqsCommunicateDto = new PqsCommunicateDto();
pqsCommunicateDto.setTime(LocalDateTimeUtil.now().format(DatePattern.NORM_DATETIME_FORMATTER));
pqsCommunicateDto.setDevId(temp);
pqsCommunicateDto.setType(0);
pqsCommunicateFeignClient.insertion(pqsCommunicateDto) ;
});
}
}
}
}
}
}
}

View File

@@ -33,11 +33,11 @@ public class DataRecallTaskRunner implements TimerTaskRunner {
if(StrUtil.isBlank(date)){
baseParam.setReCallStartTime(LocalDate.now().minusDays(1));
baseParam.setReCallEndTime(LocalDate.now());
baseParam.setReCallEndTime(LocalDate.now().minusDays(1));
}else {
LocalDate localDate = LocalDateTimeUtil.parseDate(date,DatePattern.NORM_DATE_FORMATTER);
baseParam.setReCallStartTime(localDate);
baseParam.setReCallEndTime(localDate.plusDays(1));
baseParam.setReCallEndTime(localDate);
}
dataRecallFeignClient.recall(baseParam);
}