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 org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -33,9 +35,6 @@ public class ESRevisionController {
|
|||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private EsRevisionService revisionService;
|
private EsRevisionService revisionService;
|
||||||
|
|
||||||
@Resource
|
|
||||||
private IProcessHandleService processHandleService;
|
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private ActFlowCommonService actFlowCommonService;
|
private ActFlowCommonService actFlowCommonService;
|
||||||
@@ -142,4 +141,16 @@ public class ESRevisionController {
|
|||||||
return Result.OK(revisionService.getSignInfo(processInstanceId));
|
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 javax.annotation.Resource;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author: Mzaxd
|
* @author: Mzaxd
|
||||||
@@ -58,6 +59,8 @@ public class ProcessESRevisionEndListener implements ExecutionListener {
|
|||||||
@Resource
|
@Resource
|
||||||
private IBusProcessModelHisService busProcessModelHisService;
|
private IBusProcessModelHisService busProcessModelHisService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void notify(DelegateExecution delegateExecution) {
|
public void notify(DelegateExecution delegateExecution) {
|
||||||
// 获取流程实例Id
|
// 获取流程实例Id
|
||||||
@@ -134,8 +137,9 @@ public class ProcessESRevisionEndListener implements ExecutionListener {
|
|||||||
} else {
|
} else {
|
||||||
esp.setProjectStatus(ESPProjectStatus.COMPLETED.getValue());
|
esp.setProjectStatus(ESPProjectStatus.COMPLETED.getValue());
|
||||||
}
|
}
|
||||||
|
// 更新企标计划状态
|
||||||
espService.updateById(esp);
|
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);
|
void transfer(String taskId, String userId);
|
||||||
|
|
||||||
Map<String, List<SignInfo>> getSignInfo(String processInstanceId);
|
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;
|
package com.jero.modules.activiti.process.esRevision.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
@@ -904,6 +905,102 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
|
|||||||
sendMessageAPI.sendMessage(sendMessageDTO);
|
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