fix: 企标计划状态修复

This commit is contained in:
2024-09-11 07:10:35 +08:00
parent a011232d2b
commit 3c7ec8ac84
2 changed files with 49 additions and 15 deletions
@@ -27,7 +27,10 @@ import com.jero.modules.activiti.process.common.service.ActFlowCommonService;
import com.jero.modules.activiti.process.common.service.ProcessDraftService;
import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectStatus;
import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPRevisionType;
import com.jero.modules.activiti.process.esRevision.entity.*;
import com.jero.modules.activiti.process.esRevision.entity.EsRevisionAdvice;
import com.jero.modules.activiti.process.esRevision.entity.HandleAdviceEnum;
import com.jero.modules.activiti.process.esRevision.entity.ProcessEsRevision;
import com.jero.modules.activiti.process.esRevision.entity.SignInfo;
import com.jero.modules.activiti.process.esRevision.entity.vo.ESRevisionDataVO;
import com.jero.modules.activiti.process.esRevision.entity.vo.InspectContentVO;
import com.jero.modules.activiti.process.esRevision.entity.vo.OtherDraftUserVO;
@@ -945,7 +948,8 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
@Override
public void updatePlanDateByProcessInstanceId(List<String> processInstanceIdList) {
for (String processInstanceId : processInstanceIdList) {
List<EnterpriseStandardPlan> espList = new ArrayList<>();
processInstanceIdList.forEach(processInstanceId -> {
String espId = "";
ProcessEsRevision revision = getOne(new LambdaQueryWrapper<ProcessEsRevision>()
.eq(ProcessEsRevision::getProcessInstanceId, processInstanceId));
@@ -956,7 +960,7 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
.eq(ProcessDraft::getSaveSource, 3));
if (CollUtil.isEmpty(draftList)) {
log.error("根据流程实例ID未找到企标制修订流程草稿数据 processInstanceId{}", processInstanceId);
continue;
return;
}
ProcessDraft draft = draftList.get(0);
String infoJsonStr = draft.getInfoJsonStr();
@@ -971,7 +975,7 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
EnterpriseStandardPlan esp = espService.getById(espId);
if (esp == null) {
log.error("根据企标制计划ID未找到企标制计划数据,espId:{}", espId);
continue;
return;
}
// 获取所有通过和已完成的审批记录
List<ProcessApprovalRecord> approvalRecords = parService.list(new LambdaQueryWrapper<ProcessApprovalRecord>()
@@ -1023,18 +1027,17 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
} else {
esp.setReleaseDate(new Date());
}
espService.updateById(esp);
}
espList.add(esp);
});
espService.updateBatchById(espList);
log.info("企标制计划审批完成日期更新成功,共更新企标制计划{}条数据", espList.size());
}
@Override
public void updateAllPlanDate() {
List<String> prcStatus = new ArrayList<>();
// 从流程主表找到所有已经完成的企标制修订流程
// 从流程主表找到所有企标制修订流程
List<ProcessAll> processAlls = processAllService.list(new LambdaQueryWrapper<ProcessAll>()
.eq(ProcessAll::getPrcType, ProcessTypeEnum.ES_REVISION.getValue())
.in(ProcessAll::getPrcStatus, FinishFlagEnum.COMPLETE.getValue())
);
.eq(ProcessAll::getPrcType, ProcessTypeEnum.ES_REVISION.getValue()));
List<String> prcIds = processAlls.stream().map(ProcessAll::getProcessInstanceId).collect(Collectors.toList());
this.updatePlanDateByProcessInstanceId(prcIds);
}
@@ -1,6 +1,8 @@
package com.jero.modules.laws.enterprise.job;
import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPChangeType;
import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectStatus;
import com.jero.modules.activiti.process.esRevision.service.impl.EsRevisionServiceImpl;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService;
import lombok.extern.slf4j.Slf4j;
@@ -10,6 +12,7 @@ import org.quartz.JobExecutionException;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.time.ZoneId;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@@ -25,12 +28,40 @@ public class ESPlanProjectStatusJob implements Job {
@Resource
private EnterpriseStandardPlanService espService;
@Resource
private EsRevisionServiceImpl esRevisionService;
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
// 更新所有流程状态
esRevisionService.updateAllPlanDate();
// 每天执行定时任务 判断所有进行中的计划是否逾期 逾期则修改项目状态为逾期
List<EnterpriseStandardPlan> list = espService.list();
// 将list中的时间的时分秒都去掉
list.forEach(esp -> {
if (null != esp.getApprovalDate()) {
esp.setApprovalDate(Date.from(esp.getApprovalDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate().atStartOfDay(ZoneId.systemDefault()).toInstant()));
}
if (null != esp.getReviewDate()) {
esp.setReviewDate(Date.from(esp.getReviewDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate().atStartOfDay(ZoneId.systemDefault()).toInstant()));
}
});
List<EnterpriseStandardPlan> cancelList = list.stream()
.filter(esp -> ESPChangeType.CANCEL.getValue().equals(esp.getChangeStatus()) ||
ESPChangeType.WORK_TERMINATE.getValue().equals(esp.getChangeStatus()))
.collect(Collectors.toList());
// 将工作中止和取消的设置为未开始
cancelList.forEach(esp -> {
esp.setProjectStatus(ESPProjectStatus.NOT_STARTED.getValue());
});
espService.updateBatchById(cancelList);
List<EnterpriseStandardPlan> inProgressList = list.stream()
.filter(esp -> ESPProjectStatus.IN_PROGRESS.getValue().equals(esp.getProjectStatus()))
.filter(esp -> ESPProjectStatus.IN_PROGRESS.getValue().equals(esp.getProjectStatus()) ||
ESPProjectStatus.NOT_STARTED.getValue().equals(esp.getProjectStatus()))
.filter(esp -> !ESPChangeType.WORK_TERMINATE.getValue().equals(esp.getChangeStatus()) &&
!ESPChangeType.CANCEL.getValue().equals(esp.getChangeStatus()))
.collect(Collectors.toList());
List<EnterpriseStandardPlan> overdueList = list.stream()
.filter(esp -> ESPProjectStatus.OVERDUE.getValue().equals(esp.getProjectStatus()))
@@ -41,7 +72,7 @@ public class ESPlanProjectStatusJob implements Job {
.collect(Collectors.toList());
Date curDate = new Date();
// 判断所有进行中的流程是否逾期
inProgressList.forEach(p -> {
inProgressList.parallelStream().forEach(p -> {
if (null == p.getPlanApprovalDate()) {
return;
}
@@ -56,7 +87,7 @@ public class ESPlanProjectStatusJob implements Job {
});
espService.updateBatchById(inProgressList);
// 判断所有逾期的流程是否还是逾期
overdueList.forEach(p -> {
overdueList.parallelStream().forEach(p -> {
if (null == p.getPlanApprovalDate()) {
return;
}
@@ -72,7 +103,7 @@ public class ESPlanProjectStatusJob implements Job {
});
espService.updateBatchById(overdueList);
// 判断所有已完成的计划是否逾期完成
completeList.forEach(p -> {
completeList.parallelStream().forEach(p -> {
// 判断两个日期都不能为null
if (null == p.getApprovalDate() || null == p.getPlanApprovalDate()) {
return;