From ebe8f763747e265badf2f16bc19a84d2388dbc4d Mon Sep 17 00:00:00 2001 From: caihaohan Date: Sun, 11 Aug 2024 23:17:45 +0800 Subject: [PATCH] =?UTF-8?q?fix:=2088345=20=E6=B3=95=E8=A7=84=E7=AC=A6?= =?UTF-8?q?=E5=90=88=E6=80=A7=E6=8E=92=E6=9F=A5=E6=B5=81=E7=A8=8B=EF=BC=88?= =?UTF-8?q?=E4=B8=BB=E6=8E=92=E6=9F=A5=E4=BA=BA=E5=8D=95=E7=BA=BF=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8=EF=BC=89=20--=E5=AE=A1=E6=A0=B8=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=EF=BC=8C=E6=B1=87=E6=80=BB=E8=8A=82=E7=82=B9=E5=B0=B1=E6=9C=89?= =?UTF-8?q?=E4=BB=A3=E5=8A=9E=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listener/MyGlobalEventListener.java | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) 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; + } }