fix(标准解读流程): 修复同一条条款分给多人,多人都进行过退回重新分发,走完其中一条分支后,主流程的却进行了任务完成,导致主流程进行到了下个节点,并且其余填写人员子流程走完后无法正常回归到主流程,因为主线的taskId已经被第一个走完的子流程的进行任务提交了,主流程taskId已经不存在了

This commit is contained in:
yjz
2024-07-17 18:02:27 +08:00
parent b78e0db544
commit 09a4f81860
2 changed files with 32 additions and 4 deletions
@@ -19,6 +19,7 @@ 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.standardinterpret.common.StandardInterpretCommon;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.activiti.service.ProcessNodeService;
@@ -38,7 +39,8 @@ import org.springframework.stereotype.Component;
import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
import static com.jero.modules.activiti.process.fb.common.ProcessDefinitionKey.*;
import static com.jero.modules.activiti.process.fb.common.ProcessDefinitionKey.STANDARD_COMPLIANCE_CHECK_DISTRIBUTE;
import static com.jero.modules.activiti.process.fb.common.ProcessDefinitionKey.STANDARD_COMPLIANCE_CHECK_REDISTRIBUTE;
/**
* @author liJiaRao
@@ -403,9 +405,30 @@ public class MyGlobalEventListener implements ActivitiEventListener {
String parentTaskId = (String) execution.getVariable(ActivitiCommon.PARENT_TASK_ID);
if (StringUtils.isNotBlank(parentTaskId)) {
int i = processAllService.countByParentTaskId(parentTaskId);
if (i == 0) {
TaskService taskService = SpringContextUtil.getBean(TaskService.class);
taskService.complete(parentTaskId);
// 判断当前parentTaskId是否是第一个子流程 解读人填写信息节点的parentTaskId
ProcessApprovalRecordService processApprovalRecordService = SpringContextUtil.getBean(ProcessApprovalRecordService.class);
int count = processApprovalRecordService.count(
new LambdaQueryWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getProcessInstanceId, processInstanceId)
.eq(ProcessApprovalRecord::getNodeId, StandardInterpretCommon.INTERPRETING_PEOPLE_FILLOUT)
.eq(ProcessApprovalRecord::getParentTaskId, parentTaskId));
if (count > 0){
// 判断子流程是否还有未完成的节点
int childCount = processApprovalRecordService.count(
new LambdaQueryWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getProcessInstanceId, processInstanceId)
.isNotNull(ProcessApprovalRecord::getParentTaskId)
.eq(ProcessApprovalRecord::getFinishFlag, FinishFlagEnum.INCOMPLETE.getValue()));
if (childCount == 0){
TaskService taskService = SpringContextUtil.getBean(TaskService.class);
taskService.complete(parentTaskId);
}
}else {
if (i == 0) {
TaskService taskService = SpringContextUtil.getBean(TaskService.class);
taskService.complete(parentTaskId);
}
}
} else {
//查询所有审批信息
@@ -1367,6 +1367,11 @@ public class StandardInterpretFlowServiceImpl implements StandardInterpretFlowSe
}
processStandardInterpretClauseService.saveOrUpdateBatch(processStandardInterpretClauseList);
if (CollectionUtils.isEmpty(processStandardInterpretClauseList)){
// 列表为空不再继续分发
map.put(StandardInterpretCommon.PASS, false);
}
// 生成 标准解读流程_条款中间表_子表 数据
List<ProcessStandardInterpretClauseSublist> processStandardInterpretClauseSublists =
new ArrayList<>();