From 1b75675d283160bbc63c5ee3efbfcab1bd7ce63e Mon Sep 17 00:00:00 2001 From: yjz <3131811435@qq.com> Date: Wed, 24 Jul 2024 15:05:10 +0800 Subject: [PATCH] =?UTF-8?q?fix(87436):=E6=A0=87=E5=87=86=E8=A7=A3=E8=AF=BB?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=EF=BC=88=E6=A0=87=E5=87=86=E4=B8=BB=E8=A7=A3?= =?UTF-8?q?=E8=AF=BB=E4=BA=BA=E9=87=8D=E6=96=B0=E5=88=86=E5=8F=91=EF=BC=89?= =?UTF-8?q?=20--=E5=AE=A1=E6=A0=B8=E6=B2=A1=E5=85=A8=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=EF=BC=8C=E6=B1=87=E6=80=BB=E8=8A=82=E7=82=B9=E7=9A=84=E5=BE=85?= =?UTF-8?q?=E5=8A=9E=E5=B0=B1=E5=87=BA=E6=9D=A5=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listener/MyGlobalEventListener.java | 46 ++++++++++++++++--- 1 file changed, 40 insertions(+), 6 deletions(-) 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 d90334ad..621f559e 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 @@ -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; @@ -412,14 +413,21 @@ public class MyGlobalEventListener implements ActivitiEventListener { int i = processAllService.countByParentTaskId(parentTaskId); if (i == 0) { TaskService taskService = SpringContextUtil.getBean(TaskService.class); - Object variable = taskService.getVariable(parentTaskId, UNALLOCATED_QUANTITY); - if (variable != null) { - int unallocatedQuantity = (int) variable; - if (unallocatedQuantity == 0) { + if (StandardInterpretCommon.KEY_1.equals(processDefinitionId)){ + boolean b = isChildrenNodeAllComplete(processInstanceId, parentTaskId); + if (b){ + taskService.complete(parentTaskId); + } + }else { + Object variable = taskService.getVariable(parentTaskId, UNALLOCATED_QUANTITY); + if (variable != null) { + int unallocatedQuantity = (int) variable; + if (unallocatedQuantity == 0) { + taskService.complete(parentTaskId); + } + } else { taskService.complete(parentTaskId); } - } else { - taskService.complete(parentTaskId); } } } else { @@ -459,4 +467,30 @@ public class MyGlobalEventListener implements ActivitiEventListener { .eq(ProcessNode::getSort, 1)); return record.getNodeId().equals(node.getXmlNodeId()) && record.getTaskName().equals(node.getNodeName()); } + + /** + * 判断所有子流程是否都完成 + * @param processInstanceId + * @param parentTaskId + * @return true:都完成 false:未都完成 + */ + private boolean isChildrenNodeAllComplete(String processInstanceId, String parentTaskId){ + // 判断当前parentTaskId是否是第一个自动处理任务节点 + ProcessApprovalRecordService processApprovalRecordService = SpringContextUtil.getBean(ProcessApprovalRecordService.class); + int count = processApprovalRecordService.count( + new LambdaQueryWrapper() + .eq(ProcessApprovalRecord::getProcessInstanceId, processInstanceId) + .eq(ProcessApprovalRecord::getNodeId, StandardInterpretCommon.INTERPRETING_PEOPLE_FILLOUT) + .eq(ProcessApprovalRecord::getParentTaskId, parentTaskId)); + if (count > 0){ + // 判断子流程是否还有未完成的节点 + int childCount = processApprovalRecordService.count( + new LambdaQueryWrapper() + .eq(ProcessApprovalRecord::getProcessInstanceId, processInstanceId) + .isNotNull(ProcessApprovalRecord::getParentTaskId) + .eq(ProcessApprovalRecord::getFinishFlag, FinishFlagEnum.INCOMPLETE.getValue())); + return childCount == 0; + } + return false; + } }