fix: 子流程結束把主流程結束BUG

This commit is contained in:
2024-07-16 19:17:40 +08:00
parent 0d4e811471
commit 048f5b681e
2 changed files with 55 additions and 41 deletions
@@ -36,6 +36,9 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
import static com.jero.modules.activiti.process.fb.common.ProcessDefinitionKey.*;
/** /**
* @author liJiaRao * @author liJiaRao
@@ -44,6 +47,7 @@ import java.util.*;
@Slf4j @Slf4j
@Component("myGlobalEventListener") @Component("myGlobalEventListener")
public class MyGlobalEventListener implements ActivitiEventListener { public class MyGlobalEventListener implements ActivitiEventListener {
@Override @Override
public void onEvent(ActivitiEvent event) { public void onEvent(ActivitiEvent event) {
//log.info("========================MyGlobalEventListener========================"); //log.info("========================MyGlobalEventListener========================");
@@ -375,12 +379,26 @@ public class MyGlobalEventListener implements ActivitiEventListener {
DateBetween between = date.between(createTime); DateBetween between = date.between(createTime);
// 更新流程总表信息为已完成 // 更新流程总表信息为已完成
// 复杂流程的子流程不需要更新流程状态
AtomicBoolean updateStatusFlag = new AtomicBoolean(true);
List<String> childProcessDefinitionIdList = Arrays.asList(
STANDARD_COMPLIANCE_CHECK_DISTRIBUTE,
STANDARD_COMPLIANCE_CHECK_REDISTRIBUTE);
childProcessDefinitionIdList.forEach(s -> {
if (processDefinitionId.contains(s)) {
updateStatusFlag.set(false);
}
});
if (updateStatusFlag.get()) {
LambdaUpdateWrapper<ProcessAll> wrapper = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<ProcessAll> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(ProcessAll::getProcessInstanceId, processInstanceId); wrapper.eq(ProcessAll::getProcessInstanceId, processInstanceId);
wrapper.set(ProcessAll::getPrcStatus, ProcessStatusEnum.COMPLETED.getValue()); wrapper.set(ProcessAll::getPrcStatus, ProcessStatusEnum.COMPLETED.getValue());
wrapper.set(ProcessAll::getEndTime, date); wrapper.set(ProcessAll::getEndTime, date);
wrapper.set(ProcessAll::getOverTime, between.toString()); wrapper.set(ProcessAll::getOverTime, between.toString());
processAllService.update(wrapper); processAllService.update(wrapper);
}
//如果有父id,判断所有子流程是否都完成,如果都完成,那么父流程的任务开始流转 //如果有父id,判断所有子流程是否都完成,如果都完成,那么父流程的任务开始流转
String parentTaskId = (String) execution.getVariable(ActivitiCommon.PARENT_TASK_ID); String parentTaskId = (String) execution.getVariable(ActivitiCommon.PARENT_TASK_ID);
if (StringUtils.isNotBlank(parentTaskId)) { if (StringUtils.isNotBlank(parentTaskId)) {
@@ -54,9 +54,9 @@ import java.io.InputStream;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.jero.modules.activiti.common.ActivitiCommon.DISTRIBUTE; import static com.jero.modules.activiti.common.ActivitiCommon.*;
import static com.jero.modules.activiti.common.ActivitiCommon.PASS;
import static com.jero.modules.activiti.process.standardComplianceCheck.common.ProcessStandardComplianceCheckConstants.*; import static com.jero.modules.activiti.process.standardComplianceCheck.common.ProcessStandardComplianceCheckConstants.*;
import static com.jero.modules.activiti.process.standardComplianceCheck.common.ProcessStandardComplianceCheckConstants.UNALLOCATED_QUANTITY;
/** /**
* @author ThinkBook * @author ThinkBook
@@ -159,6 +159,7 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
save(standardInfo); save(standardInfo);
// 给流程中设置主表流程变量Id // 给流程中设置主表流程变量Id
runtimeService.setVariable(processInstanceId, CHECK_ID, standardInfo.getId()); runtimeService.setVariable(processInstanceId, CHECK_ID, standardInfo.getId());
runtimeService.setVariable(processInstanceId, MAIN_INSTANCE_ID, processInstanceId);
// 子表设置流程实例Id // 子表设置流程实例Id
List<ProcessStandardComplianceCheckDetail> detailInfoList = businessInfoDTO.getDetailInfoList(); List<ProcessStandardComplianceCheckDetail> detailInfoList = businessInfoDTO.getDetailInfoList();
detailInfoList.forEach(detail -> { detailInfoList.forEach(detail -> {
@@ -398,13 +399,8 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
processSccVO.setDetailInfoList(detailList); processSccVO.setDetailInfoList(detailList);
break; break;
case DESIGNER_ENGINEER_EVALUATION: case DESIGNER_ENGINEER_EVALUATION:
this.setDesignerEngineerEvaluationHandleData(processSccVO, taskId);
break;
case MAIN_CHECK_USER_APPROVAL: case MAIN_CHECK_USER_APPROVAL:
detailList = detailList.stream() this.setDesignerEngineerEvaluationHandleData(processSccVO, taskId);
.filter(detail -> processInstanceId.equals(detail.getProcessInstanceId()))
.collect(Collectors.toList());
processSccVO.setDetailInfoList(detailList);
break; break;
} }
result.setBusinessInfoDTO(processSccVO); result.setBusinessInfoDTO(processSccVO);