feat: 制修订流程结束之后回写企标计划的完成时间
This commit is contained in:
+14
-3
@@ -19,6 +19,8 @@ import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
@@ -33,9 +35,6 @@ public class ESRevisionController {
|
||||
|
||||
@Resource
|
||||
private EsRevisionService revisionService;
|
||||
|
||||
@Resource
|
||||
private IProcessHandleService processHandleService;
|
||||
|
||||
@Resource
|
||||
private ActFlowCommonService actFlowCommonService;
|
||||
@@ -142,4 +141,16 @@ 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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+6
-2
@@ -32,6 +32,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
/**
|
||||
* @author: Mzaxd
|
||||
@@ -58,6 +59,8 @@ public class ProcessESRevisionEndListener implements ExecutionListener {
|
||||
@Resource
|
||||
private IBusProcessModelHisService busProcessModelHisService;
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void notify(DelegateExecution delegateExecution) {
|
||||
// 获取流程实例Id
|
||||
@@ -134,8 +137,9 @@ public class ProcessESRevisionEndListener implements ExecutionListener {
|
||||
} else {
|
||||
esp.setProjectStatus(ESPProjectStatus.COMPLETED.getValue());
|
||||
}
|
||||
// 更新企标计划状态
|
||||
espService.updateById(esp);
|
||||
// 软删除制修订计划
|
||||
esRevisionService.removeById(data.getId());
|
||||
// 更新所有时间
|
||||
esRevisionService.updatePlanDateByProcessInstanceId(Collections.singletonList(processInstanceId));
|
||||
}
|
||||
}
|
||||
|
||||
+4
@@ -30,4 +30,8 @@ public interface EsRevisionService extends IService<ProcessEsRevision> {
|
||||
void transfer(String taskId, String userId);
|
||||
|
||||
Map<String, List<SignInfo>> getSignInfo(String processInstanceId);
|
||||
|
||||
void updatePlanDateByProcessInstanceId(List<String> processInstanceId);
|
||||
|
||||
void updateAllPlanDate();
|
||||
}
|
||||
|
||||
+97
@@ -1,5 +1,6 @@
|
||||
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;
|
||||
@@ -904,6 +905,102 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
|
||||
sendMessageAPI.sendMessage(sendMessageDTO);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updatePlanDateByProcessInstanceId(List<String> processInstanceIdList) {
|
||||
for (String processInstanceId : processInstanceIdList) {
|
||||
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);
|
||||
continue;
|
||||
}
|
||||
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();
|
||||
}
|
||||
// 获取计划
|
||||
EnterpriseStandardPlan esp = espService.getById(espId);
|
||||
if (esp == null) {
|
||||
log.error("根据企标制计划ID未找到企标制计划数据,espId:{}", espId);
|
||||
continue;
|
||||
}
|
||||
// 获取所有通过和已完成的审批记录
|
||||
List<ProcessApprovalRecord> approvalRecords = parService.list(new LambdaQueryWrapper<ProcessApprovalRecord>()
|
||||
.eq(ProcessApprovalRecord::getProcessInstanceId, processInstanceId)
|
||||
.eq(ProcessApprovalRecord::getFinishFlag, FinishFlagEnum.COMPLETE.getValue()));
|
||||
// 按照任务名称分类并按照完成时间降序
|
||||
Map<String, List<ProcessApprovalRecord>> approvalRecordMap = approvalRecords.stream()
|
||||
.sorted(Comparator.comparing(ProcessApprovalRecord::getEndTime, Comparator.reverseOrder()))
|
||||
.collect(Collectors.groupingBy(ProcessApprovalRecord::getNodeId));
|
||||
// 设置不同的时间
|
||||
// 提交草稿日期
|
||||
if (approvalRecordMap.containsKey(OTHER_DRAFT_USER_UPLOAD)) {
|
||||
ProcessApprovalRecord approvalRecord = approvalRecordMap.get(OTHER_DRAFT_USER_UPLOAD).get(0);
|
||||
esp.setDraftSubmissionDate(approvalRecord.getEndTime());
|
||||
} else if (approvalRecordMap.containsKey(MAIN_DRAFT_USER_DISTRIBUTE)) {
|
||||
ProcessApprovalRecord approvalRecord = approvalRecordMap.get(MAIN_DRAFT_USER_DISTRIBUTE).get(0);
|
||||
esp.setDraftSubmissionDate(approvalRecord.getEndTime());
|
||||
}
|
||||
// 草稿完成日期
|
||||
if (approvalRecordMap.containsKey(MAIN_DRAFT_USER_COLLECT_FIRST)) {
|
||||
ProcessApprovalRecord approvalRecord = approvalRecordMap.get(MAIN_DRAFT_USER_COLLECT_FIRST).get(0);
|
||||
esp.setDraftCompletionDate(approvalRecord.getEndTime());
|
||||
}
|
||||
// 是否征求意见
|
||||
if (approvalRecordMap.containsKey(CONTACT_USER_DISTRIBUTE)) {
|
||||
esp.setSolicitationOpinionEnabled(YesOrNoEnum.YES.getValue());
|
||||
} else {
|
||||
esp.setSolicitationOpinionEnabled(YesOrNoEnum.NO.getValue());
|
||||
}
|
||||
// 征求意见稿完成日期
|
||||
if (approvalRecordMap.containsKey(MAIN_DRAFT_USER_COLLECT_SECOND)) {
|
||||
ProcessApprovalRecord approvalRecord = approvalRecordMap.get(MAIN_DRAFT_USER_COLLECT_SECOND).get(0);
|
||||
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(CHIEF_ENGINEER_APPROVAL)) {
|
||||
ProcessApprovalRecord approvalRecord = approvalRecordMap.get(CHIEF_ENGINEER_APPROVAL).get(0);
|
||||
esp.setApprovalDate(approvalRecord.getEndTime());
|
||||
}
|
||||
// 发布日期
|
||||
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());
|
||||
}
|
||||
espService.updateById(esp);
|
||||
}
|
||||
}
|
||||
|
||||
@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())
|
||||
);
|
||||
List<String> prcIds = processAlls.stream().map(ProcessAll::getProcessInstanceId).collect(Collectors.toList());
|
||||
this.updatePlanDateByProcessInstanceId(prcIds);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user