diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/listener/MyGlobalEventListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/listener/MyGlobalEventListener.java index 9e332493..ddd9a689 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/listener/MyGlobalEventListener.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/listener/MyGlobalEventListener.java @@ -20,6 +20,7 @@ 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.fb.common.ProcessDefinitionKey; +import com.jero.modules.activiti.process.standardComplianceCheck.common.ProcessStandardComplianceCheckConstants; import com.jero.modules.activiti.process.standardinterpret.common.StandardInterpretCommon; import com.jero.modules.activiti.service.ProcessAllService; import com.jero.modules.activiti.service.ProcessApprovalRecordService; @@ -446,7 +447,18 @@ public class MyGlobalEventListener implements ActivitiEventListener { if (variable != null) { int unallocatedQuantity = (int) variable; if (unallocatedQuantity == 0) { - taskService.complete(parentTaskId); + if (processInstanceId.equals(mainInstanceId)) { + List nodeIdList = new ArrayList<>(); + nodeIdList.add(ProcessStandardComplianceCheckConstants.DESIGNER_ENGINEER_EVALUATION); + nodeIdList.add(ProcessStandardComplianceCheckConstants.MAIN_CHECK_USER_APPROVAL); + nodeIdList.add(ProcessStandardComplianceCheckConstants.MAIN_CHECK_USER_REDISTRIBUTE); + boolean b = isChildrenNodeAllComplete2(processInstanceId, nodeIdList); + if (b) { + taskService.complete(parentTaskId); + } + } else { + taskService.complete(parentTaskId); + } } } else { taskService.complete(parentTaskId); @@ -518,4 +530,21 @@ public class MyGlobalEventListener implements ActivitiEventListener { } return false; } + + /** + * 判断所有子流程是否都完成 + * + * @param processInstanceId + * @return true:都完成 false:未都完成 + */ + private boolean isChildrenNodeAllComplete2(String processInstanceId, List nodeIdList) { + // 判断当前parentTaskId是否是第一个自动处理任务节点 + ProcessApprovalRecordService processApprovalRecordService = SpringContextUtil.getBean(ProcessApprovalRecordService.class); + int count = processApprovalRecordService.count( + new LambdaQueryWrapper() + .eq(ProcessApprovalRecord::getProcessInstanceId, processInstanceId) + .in(ProcessApprovalRecord::getNodeId, nodeIdList) + .eq(ProcessApprovalRecord::getFinishFlag, FinishFlagEnum.INCOMPLETE.getValue())); + return count == 0; + } }