diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/enums/ESPProjectStatus.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/enums/ESPProjectStatus.java index 3d771bbb..60136761 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/enums/ESPProjectStatus.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/enums/ESPProjectStatus.java @@ -10,7 +10,9 @@ public enum ESPProjectStatus { IN_PROGRESS("进行中", "2"), OVERDUE_COMPLETED("逾期完成", "3"), OVERDUE("逾期", "4"), - COMPLETED("完成", "5"); + COMPLETED("完成", "5"), + REVIEW("评审", "6"); + private final String name; diff --git a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/ESPlanProjectStatusJob.java b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/ESPlanProjectStatusJob.java index f48e9161..430a68fd 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/ESPlanProjectStatusJob.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/ESPlanProjectStatusJob.java @@ -1,22 +1,25 @@ package com.jero.modules.laws.enterprise.job; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.jero.common.constant.enums.YesOrNoEnum; import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectStatus; import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan; import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService; +import lombok.extern.slf4j.Slf4j; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; +import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; /** * @author: Mzaxd * @Date: 2024/1/16 11:42 */ +@Component +@Slf4j public class ESPlanProjectStatusJob implements Job { @Resource @@ -25,22 +28,63 @@ public class ESPlanProjectStatusJob implements Job { @Override public void execute(JobExecutionContext context) throws JobExecutionException { // 每天执行定时任务 判断所有进行中的计划是否逾期 逾期则修改项目状态为逾期 - LambdaQueryWrapper espWrapper = new LambdaQueryWrapper<>(); - espWrapper.eq(EnterpriseStandardPlan::getProjectStatus, ESPProjectStatus.IN_PROGRESS.getValue()) - .or().eq(EnterpriseStandardPlan::getProjectStatus, ESPProjectStatus.OVERDUE.getValue()); - espWrapper.eq(EnterpriseStandardPlan::getDelFlag, YesOrNoEnum.NO.getValue()); - List list = espService.list(espWrapper); + List list = espService.list(); + List inProgressList = list.stream() + .filter(esp -> ESPProjectStatus.IN_PROGRESS.getValue().equals(esp.getProjectStatus())) + .collect(Collectors.toList()); + List overdueList = list.stream() + .filter(esp -> ESPProjectStatus.OVERDUE.getValue().equals(esp.getProjectStatus())) + .collect(Collectors.toList()); + List completeList = list.stream() + .filter(esp -> ESPProjectStatus.OVERDUE_COMPLETED.getValue().equals(esp.getProjectStatus()) || + ESPProjectStatus.COMPLETED.getValue().equals(esp.getProjectStatus())) + .collect(Collectors.toList()); Date curDate = new Date(); - list.forEach(p -> { - if (curDate.after(p.getDraftPlannedCompleteDate()) || - curDate.after(p.getSolicitationDraftPlanCompleteDate()) || - curDate.after(p.getPlanApprovalDate())) { + // 判断所有进行中的流程是否逾期 + inProgressList.forEach(p -> { + if (null == p.getPlanApprovalDate()) { + return; + } + if (curDate.after(p.getPlanApprovalDate()) && null == p.getApprovalDate()) { + log.info("计划【" + p.getNewEnStandardName() + "】已逾期,计划完成日期:" + p.getPlanApprovalDate()); p.setProjectStatus(ESPProjectStatus.OVERDUE.getValue()); - } else { - p.setProjectStatus(ESPProjectStatus.IN_PROGRESS.getValue()); + } + if (null != p.getReviewDate() && p.getPlanApprovalDate().after(curDate)) { + log.info("计划【" + p.getNewEnStandardName() + "】评审,计划完成日期:" + p.getPlanApprovalDate()); + p.setProjectStatus(ESPProjectStatus.REVIEW.getValue()); } }); - espService.updateBatchById(list); + espService.updateBatchById(inProgressList); + // 判断所有逾期的流程是否还是逾期 + overdueList.forEach(p -> { + if (null == p.getApprovalDate()) { + return; + } + if (null != p.getPlanApprovalDate() && p.getPlanApprovalDate().after(p.getApprovalDate())) { + log.info("计划【" + p.getNewEnStandardName() + "】进行中,计划完成日期:" + p.getPlanApprovalDate()); + p.setProjectStatus(ESPProjectStatus.IN_PROGRESS.getValue()); + } + if (null != p.getReviewDate() && null != p.getPlanApprovalDate() && p.getPlanApprovalDate().after(curDate)) { + log.info("计划【" + p.getNewEnStandardName() + "】评审,计划完成日期:" + p.getPlanApprovalDate()); + p.setProjectStatus(ESPProjectStatus.REVIEW.getValue()); + } + }); + espService.updateBatchById(overdueList); + // 判断所有已完成的计划是否逾期完成 + completeList.forEach(p -> { + // 判断两个日期都不能为null + if (null == p.getApprovalDate() || null == p.getPlanApprovalDate()) { + return; + } + if (p.getApprovalDate().after(p.getPlanApprovalDate())) { + log.info("计划【" + p.getNewEnStandardName() + "】逾期完成,计划完成日期:" + p.getPlanApprovalDate()); + p.setProjectStatus(ESPProjectStatus.OVERDUE_COMPLETED.getValue()); + } else { + log.info("计划【" + p.getNewEnStandardName() + "】完成,计划完成日期:" + p.getPlanApprovalDate()); + p.setProjectStatus(ESPProjectStatus.COMPLETED.getValue()); + } + }); + espService.updateBatchById(completeList); } }