wisdomisite-java/src/main/java/com/zhgd/xmgl/task/ProgressPanoramaNodePlanAlarmTask.java

88 lines
3.8 KiB
Java
Raw Normal View History

2024-08-07 15:17:31 +08:00
package com.zhgd.xmgl.task;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.zhgd.xmgl.async.AsyncCommon;
import com.zhgd.xmgl.call.SanjiangDataCall;
import com.zhgd.xmgl.modules.basicdata.entity.SystemUser;
import com.zhgd.xmgl.modules.basicdata.service.ISystemUserService;
import com.zhgd.xmgl.modules.project.constants.ProgressTaskConstant;
import com.zhgd.xmgl.modules.project.entity.ProgressPanoramaNodePlan;
import com.zhgd.xmgl.modules.project.entity.ProgressPanoramaNodePlanAlarm;
import com.zhgd.xmgl.modules.project.entity.ProgressTask;
import com.zhgd.xmgl.modules.project.entity.ProgressTaskAlarm;
import com.zhgd.xmgl.modules.project.enums.ProgressAlarmTypeEnum;
import com.zhgd.xmgl.modules.project.service.IProgressPanoramaNodePlanAlarmService;
import com.zhgd.xmgl.modules.project.service.IProgressPanoramaNodePlanService;
import com.zhgd.xmgl.modules.project.service.ProgressTaskAlarmService;
import com.zhgd.xmgl.modules.project.service.ProgressTaskService;
import lombok.extern.slf4j.Slf4j;
import net.javacrumbs.shedlock.core.SchedulerLock;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author 邱平毅
* @ClassName ProgressTask
* @date 2022/11/2 11:25
* @Version 1.0
* 甘特图任务调度
*/
@Slf4j
@Component
public class ProgressPanoramaNodePlanAlarmTask {
@Autowired
private IProgressPanoramaNodePlanService progressPanoramaNodePlanService;
@Autowired
private IProgressPanoramaNodePlanAlarmService progressPanoramaNodePlanAlarmService;
/**
* 每天0点5分处理报警数据
*/
@Scheduled(cron = "0 17 15 * * ?")
public void manageAlarmData() {
log.info("定时处理项目计划任务");
String today = DateUtil.today();
// 预计开始时间已过未开始、预计结束时间已过进行中任务
List<ProgressPanoramaNodePlan> planList = progressPanoramaNodePlanService.list(Wrappers.lambdaQuery(ProgressPanoramaNodePlan.class)
2024-08-16 11:53:37 +08:00
.eq(ProgressPanoramaNodePlan::getApprovalStatue, 2)
2024-08-07 15:17:31 +08:00
.eq(ProgressPanoramaNodePlan::getStatus, 1).lt(ProgressPanoramaNodePlan::getPlanStartDate, today)
.or(wrapper -> wrapper.eq(ProgressPanoramaNodePlan::getStatus, 2).lt(ProgressPanoramaNodePlan::getFinishDate, today)));
// 判断是否有逾期任务
if (CollUtil.isNotEmpty(planList)) {
List<ProgressPanoramaNodePlanAlarm> alarmList = new LinkedList<>();
// 根据状态分组
planList.forEach(p -> {
ProgressPanoramaNodePlanAlarm progressPanoramaNodePlanAlarm = new ProgressPanoramaNodePlanAlarm();
progressPanoramaNodePlanAlarm.setNodeId(p.getId());
if (p.getStatus() == 1) {
2024-08-16 11:53:37 +08:00
progressPanoramaNodePlanAlarm.setAlarmDetails("当前任务预计开始时间为:" + p.getPlanStartDate() + "" + "目前任务未开始");
2024-08-07 15:17:31 +08:00
} else {
2024-08-16 11:53:37 +08:00
progressPanoramaNodePlanAlarm.setAlarmDetails("当前任务预计完成时间为:" + p.getPlanFinishDate() + "" + "目前任务未完成");
2024-08-07 15:17:31 +08:00
}
progressPanoramaNodePlanAlarm.setCreateDate(new Date());
progressPanoramaNodePlanAlarm.setAlarmType(p.getStatus());
progressPanoramaNodePlanAlarm.setProjectSn(p.getProjectSn());
progressPanoramaNodePlanAlarm.setNodeName(p.getNodeName());
progressPanoramaNodePlanAlarm.setChargerId(p.getChargerId());
progressPanoramaNodePlanAlarm.setChargerName(p.getChargerName());
alarmList.add(progressPanoramaNodePlanAlarm);
});
log.info("当前逾期数据:{}", alarmList);
progressPanoramaNodePlanAlarmService.saveBatch(alarmList);
}
}
}