fix: scc流程强制撤回问题

This commit is contained in:
2024-07-16 11:36:14 +08:00
parent 6e9a21a2cd
commit 5c78346475
4 changed files with 39 additions and 15 deletions
@@ -13,7 +13,7 @@ public enum ProcessTypeEnum {
DEMO("测试流程", 0, "com.jero.modules.activiti.process.demo.service.ProcessDemoService", "/workCenter/StandardEntryOrChangeProcess", "/workCenter/StandardEntryOrChangeProcess"),
NEW_STANDARD_IMPORT("新法规导入流程", 1, "com.jero.modules.activiti.process.ni.service.impl.ProcessNewStandardImportServiceImpl", "/workCenter/", "/workCenter/"),
STANDARD_INTERPRET("标准解读流程", 2, "com.jero.modules.activiti.process.standardinterpret.service.impl.StandardInterpretFlow", "", ""),
STANDARD_COMPLIANCE_CHECK("法规符合性排查流程", 3, "com.jero.modules.activiti.process.standardComplianceCheck.service.ProcessStandardComplianceCheckService", "/workCenter/StandardComplianceCheckProcess", "/workCenter/StandardComplianceCheckProcess"),
STANDARD_COMPLIANCE_CHECK("法规符合性排查流程", 3, "com.jero.modules.activiti.process.standardComplianceCheck.service.impl.ProcessStandardComplianceCheckServiceImpl", "/workCenter/StandardComplianceCheckProcess", "/workCenter/StandardComplianceCheckProcess"),
MARKET_STANDARD_PUBLISH("市场清单发布流程", 4, "com.jero.modules.activiti.process.ms.service.impl.ProcessMarketStandardReleaseServiceImpl", "/workCenter/", "/workCenter/"),
;
@@ -345,8 +345,18 @@ public class ActFlowCommonService {
return processSnapshotService.getOne(draftWrapper);
}
public String getParentTaskId(String taskId) {
ProcessApprovalRecord processApprovalRecord = processApprovalRecordService.getByTaskId(taskId);
String parentTaskId = processApprovalRecord.getParentTaskId();
if (StrUtil.isBlank(parentTaskId)) {
return taskId;
}
return parentTaskId;
}
public BasicProcessInfoDTO getProcessInfo(String taskId) {
String processInstanceId = this.getProcessInstanceIdByTaskId(taskId);
String finalTaskId = this.getParentTaskId(taskId);
String processInstanceId = this.getProcessInstanceIdByTaskId(finalTaskId);
// 获取流程通用数据
ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId);
BasicProcessInfoDTO basicProcessInfoDTO = new BasicProcessInfoDTO();
@@ -13,10 +13,10 @@ public class ProcessDefinitionKey {
public static final String DEMO_JDR = "demo_jdr";
public static final String DEMO_CXFF = "demo_cxff";
// 法规符合性排查流程-主流程
public static final String STANDARD_COMPLIANCE_CHECK_MAIN = "standard_compliance_check_main";
public static final String STANDARD_COMPLIANCE_CHECK_MAIN = "laws-evaluation-main";
// 法规符合性排查流程-分发
public static final String STANDARD_COMPLIANCE_CHECK_DISTRIBUTE = "standard_compliance_check_distribute";
public static final String STANDARD_COMPLIANCE_CHECK_DISTRIBUTE = "laws-evaluation-distribute";
// 法规符合性排查流程-重新分发
public static final String STANDARD_COMPLIANCE_CHECK_REDISTRIBUTE = "standard_compliance_check_redistribute";
public static final String STANDARD_COMPLIANCE_CHECK_REDISTRIBUTE = "laws-evaluation-redistribute";
}
@@ -1,6 +1,5 @@
package com.jero.modules.activiti.process.standardComplianceCheck.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -285,7 +284,7 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
.collect(Collectors.toList());
List<String> ids = distributeDetailList.stream().map(ProcessStandardComplianceCheckDetail::getId).collect(Collectors.toList());
// 分发需要设置未分发数据条数
unallocatedQuantity = distributeDetailList.size();
unallocatedQuantity = detailInfoList.size() - distributeDetailList.size();
// 去重找到所有设计师
List<String> designEngineerList = distributeDetailList.stream()
.map(ProcessStandardComplianceCheckDetail::getDesignEngineer)
@@ -311,8 +310,8 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
// 先删后增
sccDetailService.removeByIds(ids);
sccDetailService.saveBatch(needAddDetailInfoList);
runtimeService.setVariable(processInstanceId, DESIGNER_LIST, String.join(",", designEngineerList));
userMap.put(DESIGNER_LIST, standardInfo.getSeniorManager());
runtimeService.setVariable(processInstanceId, DESIGNER_LIST, designEngineerList);
userMap.put(DESIGNER_LIST, String.join(",", designEngineerList));
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, userMap);
} else {
// 不分发直接设置后续审批节点的人员变量
@@ -378,10 +377,13 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
queryWrapper.eq(ProcessStandardComplianceCheck::getProcessInstanceId, processInstanceId);
ProcessStandardComplianceCheck scc = getOne(queryWrapper);
LambdaQueryWrapper<ProcessStandardComplianceCheckDetail> detailQueryWrapper = new LambdaQueryWrapper<>();
detailQueryWrapper.eq(ProcessStandardComplianceCheckDetail::getCheckId, scc.getId());
List<ProcessStandardComplianceCheckDetail> detailList = sccDetailService.list(detailQueryWrapper);
String xmlNodeId = record.getNodeId();
List<ProcessStandardComplianceCheckDetail> detailList = null;
if (Objects.nonNull(scc)) {
detailQueryWrapper.eq(ProcessStandardComplianceCheckDetail::getCheckId, scc.getId());
detailList = sccDetailService.list(detailQueryWrapper);
}
processSccVO.setStandardInfo(scc);
String xmlNodeId = record.getNodeId();
// 设置流程信息
switch (xmlNodeId) {
case STANDARD_ENGINEER_START:
@@ -400,6 +402,8 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
processSccVO.setDetailInfoList(detailList);
break;
case DESIGNER_ENGINEER_EVALUATION:
this.setDesignerEngineerEvaluationHandleData(processSccVO, taskId);
break;
case MAIN_CHECK_USER_APPROVAL:
detailList = detailList.stream()
.filter(detail -> processInstanceId.equals(detail.getProcessInstanceId()))
@@ -411,6 +415,18 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
return result;
}
private void setDesignerEngineerEvaluationHandleData(ProcessSccVO processSccVO, String taskId) {
String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
LambdaQueryWrapper<ProcessStandardComplianceCheckDetail> detailQueryWrapper = new LambdaQueryWrapper<>();
detailQueryWrapper.eq(ProcessStandardComplianceCheckDetail::getProcessInstanceId, processInstanceId);
List<ProcessStandardComplianceCheckDetail> detailList = sccDetailService.list(detailQueryWrapper);
processSccVO.setDetailInfoList(detailList);
LambdaQueryWrapper<ProcessStandardComplianceCheck> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ProcessStandardComplianceCheck::getId, detailList.get(0).getCheckId());
ProcessStandardComplianceCheck scc = getOne(queryWrapper);
processSccVO.setStandardInfo(scc);
}
@Override
public void createAutoTaskListener(DelegateTask delegateTask) {
String taskId = delegateTask.getId();
@@ -431,9 +447,6 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
case AUTO_TASK_1:
case AUTO_TASK_3:
List<String> designerList = (List<String>) delegateTask.getVariable(DESIGNER_LIST);
if (CollUtil.isEmpty(designerList)) {
return;
}
String checkId = (String) delegateTask.getVariable(CHECK_ID);
for (String designer : designerList) {
userInfoMap.put(DESIGNER, designer);
@@ -449,6 +462,7 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
String childPrcId = processHandleService.startChildrenProcess(processInfoVO);
// 更新子表数据,将数据绑定给子流程
wrapper.eq(ProcessStandardComplianceCheckDetail::getCheckId, checkId);
wrapper.eq(ProcessStandardComplianceCheckDetail::getDesignEngineer, designer);
wrapper.isNull(ProcessStandardComplianceCheckDetail::getDesignEngineer);
wrapper.set(ProcessStandardComplianceCheckDetail::getDesignEngineer, designer);
wrapper.set(ProcessStandardComplianceCheckDetail::getProcessInstanceId, childPrcId);