fix: 企标计划状态修复
This commit is contained in:
-15
@@ -9,7 +9,6 @@ import com.jero.modules.activiti.process.common.entity.TransferVO;
|
||||
import com.jero.modules.activiti.process.common.service.ActFlowCommonService;
|
||||
import com.jero.modules.activiti.process.esRevision.entity.vo.ESRevisionDataVO;
|
||||
import com.jero.modules.activiti.process.esRevision.service.EsRevisionService;
|
||||
import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
|
||||
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
@@ -19,8 +18,6 @@ import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
@@ -141,16 +138,4 @@ public class ESRevisionController {
|
||||
return Result.OK(revisionService.getSignInfo(processInstanceId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新所有已完成的企标计划的完成时间字段
|
||||
*
|
||||
*/
|
||||
@AutoLog(value = "企标制修订流程-更新所有已完成的企标计划的完成时间字段")
|
||||
@ApiOperation(value="企标制修订流程-更新所有已完成的企标计划的完成时间字段", notes="企标制修订流程-更新所有已完成的企标计划的完成时间字段")
|
||||
@GetMapping(value = "/updateAllPlanDate")
|
||||
public Result<?> updateAllPlanDate() {
|
||||
revisionService.updateAllPlanDate();
|
||||
return Result.OK();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+3
-11
@@ -7,7 +7,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
||||
import com.jero.common.constant.enums.YesOrNoEnum;
|
||||
import com.jero.modules.activiti.process.common.enums.StandardStateEnum;
|
||||
import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectStatus;
|
||||
import com.jero.modules.activiti.process.esRevision.entity.ProcessEsRevision;
|
||||
import com.jero.modules.activiti.process.esRevision.entity.vo.ReviewMeetingDetailVO;
|
||||
import com.jero.modules.activiti.process.esRevision.service.EsRevisionService;
|
||||
@@ -29,7 +28,9 @@ import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author: Mzaxd
|
||||
@@ -125,16 +126,7 @@ public class ProcessESRevisionEndListener implements ExecutionListener {
|
||||
BeanCopyUtils.copyBeanList(reviewMeetingDetailVOS, EnterpriseStandardRmrEvaluateDetail.class);
|
||||
rmrEvaluateDetails.forEach(r -> r.setReviewMeetingId(esRmr.getId()));
|
||||
rmrDetailService.saveBatch(rmrEvaluateDetails);
|
||||
// 企标计划改为已完成或者逾期完成
|
||||
Date curDate = new Date();
|
||||
if (curDate.after(esp.getPlanApprovalDate())) {
|
||||
esp.setProjectStatus(ESPProjectStatus.OVERDUE_COMPLETED.getValue());
|
||||
} else {
|
||||
esp.setProjectStatus(ESPProjectStatus.COMPLETED.getValue());
|
||||
}
|
||||
// 更新企标计划状态
|
||||
espService.updateById(esp);
|
||||
// 更新所有时间
|
||||
esRevisionService.updatePlanDateByProcessInstanceId(Collections.singletonList(processInstanceId));
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -1,5 +1,6 @@
|
||||
package com.jero.modules.activiti.process.esRevision.service;
|
||||
|
||||
import com.jero.modules.activiti.entity.ProcessAll;
|
||||
import com.jero.modules.activiti.process.esRevision.entity.ProcessEsRevision;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.jero.modules.activiti.process.esRevision.entity.SignInfo;
|
||||
@@ -31,7 +32,7 @@ public interface EsRevisionService extends IService<ProcessEsRevision> {
|
||||
|
||||
Map<String, List<SignInfo>> getSignInfo(String processInstanceId);
|
||||
|
||||
void updatePlanDateByProcessInstanceId(List<String> processInstanceId);
|
||||
void updatePlanDateByProcessInstanceId(List<ProcessAll> processAllList);
|
||||
|
||||
void updateAllPlanDate();
|
||||
}
|
||||
|
||||
+36
-37
@@ -1,6 +1,5 @@
|
||||
package com.jero.modules.activiti.process.esRevision.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
@@ -18,6 +17,7 @@ import com.jero.modules.activiti.entity.ProcessAll;
|
||||
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
|
||||
import com.jero.modules.activiti.enums.CommitFlagEnum;
|
||||
import com.jero.modules.activiti.enums.FinishFlagEnum;
|
||||
import com.jero.modules.activiti.enums.ProcessStatusEnum;
|
||||
import com.jero.modules.activiti.enums.ProcessTypeEnum;
|
||||
import com.jero.modules.activiti.process.common.common.DraftCommon;
|
||||
import com.jero.modules.activiti.process.common.entity.CommonVO;
|
||||
@@ -947,34 +947,23 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updatePlanDateByProcessInstanceId(List<String> processInstanceIdList) {
|
||||
public void updatePlanDateByProcessInstanceId(List<ProcessAll> processAllList) {
|
||||
List<EnterpriseStandardPlan> espList = new ArrayList<>();
|
||||
processInstanceIdList.forEach(processInstanceId -> {
|
||||
String espId = "";
|
||||
ProcessEsRevision revision = getOne(new LambdaQueryWrapper<ProcessEsRevision>()
|
||||
.eq(ProcessEsRevision::getProcessInstanceId, processInstanceId));
|
||||
if (revision == null) {
|
||||
// 通过草稿表寻找espId
|
||||
List<ProcessDraft> draftList = prcDraftService.list(new LambdaQueryWrapper<ProcessDraft>()
|
||||
.eq(ProcessDraft::getProcessInstanceId, processInstanceId)
|
||||
.eq(ProcessDraft::getSaveSource, 3));
|
||||
if (CollUtil.isEmpty(draftList)) {
|
||||
log.error("根据流程实例ID未找到企标制修订流程草稿数据 processInstanceId:{}", processInstanceId);
|
||||
return;
|
||||
}
|
||||
ProcessDraft draft = draftList.get(0);
|
||||
String infoJsonStr = draft.getInfoJsonStr();
|
||||
// 解析json 获取 data下的espId
|
||||
JSONObject jsonObject = JSON.parseObject(infoJsonStr);
|
||||
JSONObject data = jsonObject.getJSONObject("data");
|
||||
espId = (String) data.get("espId");
|
||||
} else {
|
||||
espId = revision.getEspId();
|
||||
processAllList.forEach(processAll -> {
|
||||
String processInstanceId = processAll.getProcessInstanceId();
|
||||
String prcName = processAll.getPrcName();
|
||||
String newStandardNo = "";
|
||||
String[] parts = prcName.split("-");
|
||||
if (parts.length > 0) {
|
||||
newStandardNo = parts[0].trim() + "-" + parts[1].trim(); // 提取标准编号部分
|
||||
}
|
||||
// 获取计划
|
||||
EnterpriseStandardPlan esp = espService.getById(espId);
|
||||
LambdaQueryWrapper<EnterpriseStandardPlan> espQueryWrapper = new LambdaQueryWrapper<>();
|
||||
espQueryWrapper.eq(EnterpriseStandardPlan::getNewEnStandardNo, newStandardNo);
|
||||
List<EnterpriseStandardPlan> findEspList = espService.list(espQueryWrapper);
|
||||
EnterpriseStandardPlan esp = findEspList.stream().findFirst().orElse(null);
|
||||
if (esp == null) {
|
||||
log.error("根据企标制计划ID未找到企标制计划数据,espId:{}", espId);
|
||||
log.error("根据企标制计划ID未找到企标制计划数据,新企标编号:{}", newStandardNo);
|
||||
return;
|
||||
}
|
||||
// 获取所有通过和已完成的审批记录
|
||||
@@ -986,6 +975,8 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
|
||||
.sorted(Comparator.comparing(ProcessApprovalRecord::getEndTime, Comparator.reverseOrder()))
|
||||
.collect(Collectors.groupingBy(ProcessApprovalRecord::getNodeId));
|
||||
// 设置不同的时间
|
||||
Date planApprovalDate = esp.getPlanApprovalDate();
|
||||
esp.setProjectStatus(ESPProjectStatus.IN_PROGRESS.getValue());
|
||||
// 提交草稿日期
|
||||
if (approvalRecordMap.containsKey(OTHER_DRAFT_USER_UPLOAD)) {
|
||||
ProcessApprovalRecord approvalRecord = approvalRecordMap.get(OTHER_DRAFT_USER_UPLOAD).get(0);
|
||||
@@ -1011,35 +1002,43 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
|
||||
esp.setSolicitationDraftCompletionDate(approvalRecord.getEndTime());
|
||||
}
|
||||
// 评审日期
|
||||
if (approvalRecordMap.containsKey(MAIN_DRAFT_USER_UPLOAD)) {
|
||||
ProcessApprovalRecord approvalRecord = approvalRecordMap.get(MAIN_DRAFT_USER_UPLOAD).get(0);
|
||||
esp.setReviewDate(approvalRecord.getEndTime());
|
||||
if (approvalRecordMap.containsKey(RATER_RATE)) {
|
||||
ProcessApprovalRecord approvalRecord = approvalRecordMap.get(RATER_RATE).get(0);
|
||||
Date reviewDate = approvalRecord.getCreateTime();
|
||||
esp.setReviewDate(reviewDate);
|
||||
if (!reviewDate.after(planApprovalDate)) {
|
||||
esp.setProjectStatus(ESPProjectStatus.REVIEW.getValue());
|
||||
}
|
||||
}
|
||||
// 报批日期
|
||||
if (approvalRecordMap.containsKey(CHIEF_ENGINEER_APPROVAL)) {
|
||||
ProcessApprovalRecord approvalRecord = approvalRecordMap.get(CHIEF_ENGINEER_APPROVAL).get(0);
|
||||
esp.setApprovalDate(approvalRecord.getEndTime());
|
||||
if (approvalRecordMap.containsKey(MAIN_DRAFT_USER_UPLOAD)) {
|
||||
ProcessApprovalRecord approvalRecord = approvalRecordMap.get(MAIN_DRAFT_USER_UPLOAD).get(0);
|
||||
Date approvalDate = approvalRecord.getEndTime();
|
||||
esp.setApprovalDate(approvalDate);
|
||||
if (approvalDate.after(planApprovalDate)) {
|
||||
esp.setProjectStatus(ESPProjectStatus.OVERDUE_COMPLETED.getValue());
|
||||
} else {
|
||||
esp.setProjectStatus(ESPProjectStatus.COMPLETED.getValue());
|
||||
}
|
||||
}
|
||||
// 发布日期
|
||||
if (approvalRecordMap.containsKey(MAIN_DRAFT_USER_RELEASE)) {
|
||||
ProcessApprovalRecord approvalRecord = approvalRecordMap.get(MAIN_DRAFT_USER_RELEASE).get(0);
|
||||
esp.setReleaseDate(approvalRecord.getEndTime());
|
||||
} else {
|
||||
esp.setReleaseDate(new Date());
|
||||
}
|
||||
espList.add(esp);
|
||||
});
|
||||
espService.updateBatchById(espList);
|
||||
log.info("企标制计划审批完成日期更新成功,共更新企标制计划{}条数据", espList.size());
|
||||
log.info("企标计划时间更新成功,共更新企标制计划{}条数据", espList.size());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateAllPlanDate() {
|
||||
// 从流程主表找到所有企标制修订流程
|
||||
List<ProcessAll> processAlls = processAllService.list(new LambdaQueryWrapper<ProcessAll>()
|
||||
.eq(ProcessAll::getPrcType, ProcessTypeEnum.ES_REVISION.getValue()));
|
||||
List<String> prcIds = processAlls.stream().map(ProcessAll::getProcessInstanceId).collect(Collectors.toList());
|
||||
this.updatePlanDateByProcessInstanceId(prcIds);
|
||||
.eq(ProcessAll::getPrcType, ProcessTypeEnum.ES_REVISION.getValue())
|
||||
.ne(ProcessAll::getPrcStatus, ProcessStatusEnum.WITHDRAWN.getValue()));
|
||||
this.updatePlanDateByProcessInstanceId(processAlls);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+11
-56
@@ -33,6 +33,7 @@ public class ESPlanProjectStatusJob implements Job {
|
||||
|
||||
@Override
|
||||
public void execute(JobExecutionContext context) throws JobExecutionException {
|
||||
log.info("计划状态更新开始");
|
||||
// 更新所有流程状态
|
||||
esRevisionService.updateAllPlanDate();
|
||||
// 每天执行定时任务 判断所有进行中的计划是否逾期 逾期则修改项目状态为逾期
|
||||
@@ -56,67 +57,21 @@ public class ESPlanProjectStatusJob implements Job {
|
||||
esp.setProjectStatus(ESPProjectStatus.NOT_STARTED.getValue());
|
||||
});
|
||||
espService.updateBatchById(cancelList);
|
||||
|
||||
List<EnterpriseStandardPlan> inProgressList = list.stream()
|
||||
.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()))
|
||||
.collect(Collectors.toList());
|
||||
List<EnterpriseStandardPlan> completeList = list.stream()
|
||||
.filter(esp -> ESPProjectStatus.OVERDUE_COMPLETED.getValue().equals(esp.getProjectStatus()) ||
|
||||
ESPProjectStatus.COMPLETED.getValue().equals(esp.getProjectStatus()))
|
||||
// 将所有未开始的判断是否逾期
|
||||
List<EnterpriseStandardPlan> notStartedList = list.stream()
|
||||
.filter(esp -> ESPProjectStatus.NOT_STARTED.getValue().equals(esp.getProjectStatus()))
|
||||
.collect(Collectors.toList());
|
||||
Date curDate = new Date();
|
||||
// 判断所有进行中的流程是否逾期
|
||||
inProgressList.parallelStream().forEach(p -> {
|
||||
if (null == p.getPlanApprovalDate()) {
|
||||
return;
|
||||
}
|
||||
if (curDate.after(p.getPlanApprovalDate()) && null == p.getApprovalDate()) {
|
||||
log.info("计划【" + p.getNewEnStandardName() + "】已逾期,计划完成日期:" + p.getPlanApprovalDate());
|
||||
// 判断所有未开始的是否逾期
|
||||
notStartedList.parallelStream().forEach(p -> {
|
||||
Date planApprovalDate = p.getPlanApprovalDate();
|
||||
if (curDate.after(planApprovalDate)) {
|
||||
log.info("计划【" + p.getNewEnStandardName() + "】逾期,计划完成日期:" + p.getPlanApprovalDate());
|
||||
p.setProjectStatus(ESPProjectStatus.OVERDUE.getValue());
|
||||
}
|
||||
if (null != p.getReviewDate() && p.getPlanApprovalDate().after(curDate)) {
|
||||
log.info("计划【" + p.getNewEnStandardName() + "】评审,计划完成日期:" + p.getPlanApprovalDate());
|
||||
p.setProjectStatus(ESPProjectStatus.REVIEW.getValue());
|
||||
}
|
||||
});
|
||||
espService.updateBatchById(inProgressList);
|
||||
// 判断所有逾期的流程是否还是逾期
|
||||
overdueList.parallelStream().forEach(p -> {
|
||||
if (null == p.getPlanApprovalDate()) {
|
||||
return;
|
||||
}
|
||||
if (p.getApprovalDate() != null && p.getPlanApprovalDate().after(p.getApprovalDate())
|
||||
|| (null == p.getApprovalDate() && curDate.before(p.getPlanApprovalDate()))) {
|
||||
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.parallelStream().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);
|
||||
espService.updateBatchById(notStartedList);
|
||||
log.info("计划状态更新完成");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user