添加根据前置心跳更新设备通信状态
This commit is contained in:
@@ -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) ;
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -33,11 +33,11 @@ public class DataRecallTaskRunner implements TimerTaskRunner {
|
|||||||
|
|
||||||
if(StrUtil.isBlank(date)){
|
if(StrUtil.isBlank(date)){
|
||||||
baseParam.setReCallStartTime(LocalDate.now().minusDays(1));
|
baseParam.setReCallStartTime(LocalDate.now().minusDays(1));
|
||||||
baseParam.setReCallEndTime(LocalDate.now());
|
baseParam.setReCallEndTime(LocalDate.now().minusDays(1));
|
||||||
}else {
|
}else {
|
||||||
LocalDate localDate = LocalDateTimeUtil.parseDate(date,DatePattern.NORM_DATE_FORMATTER);
|
LocalDate localDate = LocalDateTimeUtil.parseDate(date,DatePattern.NORM_DATE_FORMATTER);
|
||||||
baseParam.setReCallStartTime(localDate);
|
baseParam.setReCallStartTime(localDate);
|
||||||
baseParam.setReCallEndTime(localDate.plusDays(1));
|
baseParam.setReCallEndTime(localDate);
|
||||||
}
|
}
|
||||||
dataRecallFeignClient.recall(baseParam);
|
dataRecallFeignClient.recall(baseParam);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user