fix: 复杂流程父流程被流转BUG

This commit is contained in:
2024-07-19 18:03:06 +08:00
parent 8adc8e986c
commit 87c7dbc506
@@ -26,6 +26,7 @@ import com.jero.modules.activiti.service.ProcessNodeService;
import com.jero.modules.activiti.util.SpringContextUtil;
import com.jero.modules.laws.common.util.CurrentUserUtil;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.delegate.event.ActivitiEvent;
import org.activiti.engine.delegate.event.ActivitiEventListener;
@@ -39,6 +40,7 @@ import org.springframework.stereotype.Component;
import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
import static com.jero.modules.activiti.common.ActivitiCommon.UNALLOCATED_QUANTITY;
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;
@@ -426,13 +428,23 @@ public class MyGlobalEventListener implements ActivitiEventListener {
.isNotNull(ProcessApprovalRecord::getParentTaskId)
.eq(ProcessApprovalRecord::getFinishFlag, FinishFlagEnum.INCOMPLETE.getValue()));
if (childCount == 0){
// 子流程都结束并且没有未分发数据才完成父任务
TaskService taskService = SpringContextUtil.getBean(TaskService.class);
taskService.complete(parentTaskId);
RuntimeService runtimeService = SpringContextUtil.getBean(RuntimeService.class);
int unallocatedQuantity = (int) runtimeService.getVariable(mainInstanceId, UNALLOCATED_QUANTITY);
if (unallocatedQuantity == 0){
taskService.complete(parentTaskId);
}
}
}else {
if (i == 0) {
// 子流程都结束并且没有未分发数据才完成父任务
TaskService taskService = SpringContextUtil.getBean(TaskService.class);
taskService.complete(parentTaskId);
RuntimeService runtimeService = SpringContextUtil.getBean(RuntimeService.class);
int unallocatedQuantity = (int) runtimeService.getVariable(mainInstanceId, UNALLOCATED_QUANTITY);
if (unallocatedQuantity == 0){
taskService.complete(parentTaskId);
}
}
}
} else {