fix: 子流程結束把主流程結束BUG
This commit is contained in:
+51
-33
@@ -36,6 +36,9 @@ import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
import static com.jero.modules.activiti.process.fb.common.ProcessDefinitionKey.*;
|
||||
|
||||
/**
|
||||
* @author liJiaRao
|
||||
@@ -44,6 +47,7 @@ import java.util.*;
|
||||
@Slf4j
|
||||
@Component("myGlobalEventListener")
|
||||
public class MyGlobalEventListener implements ActivitiEventListener {
|
||||
|
||||
@Override
|
||||
public void onEvent(ActivitiEvent event) {
|
||||
//log.info("========================MyGlobalEventListener========================");
|
||||
@@ -94,7 +98,7 @@ public class MyGlobalEventListener implements ActivitiEventListener {
|
||||
String processDefinitionId = execution.getProcessDefinitionId();
|
||||
ExecutionEntityImpl parent = execution.getParent();
|
||||
String mainInstanceId = (String) execution.getVariable(ActivitiCommon.MAIN_INSTANCE_ID);
|
||||
if (mainInstanceId != null){
|
||||
if (mainInstanceId != null) {
|
||||
return;
|
||||
}
|
||||
String name = parent.getProcessDefinitionName();
|
||||
@@ -144,11 +148,11 @@ public class MyGlobalEventListener implements ActivitiEventListener {
|
||||
log.info("execution.getActivityId() = " + execution.getActivityId());
|
||||
//判断是否需要创建待办
|
||||
LambdaQueryWrapper<ProcessNode> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(ProcessNode::getProcessDefinitionId,processDefinitionId);
|
||||
wrapper.eq(ProcessNode::getNodeName,name);
|
||||
wrapper.eq(ProcessNode::getProcessDefinitionId, processDefinitionId);
|
||||
wrapper.eq(ProcessNode::getNodeName, name);
|
||||
wrapper.eq(ProcessNode::getIsView, YesOrNoEnum.YES.getValue());
|
||||
int count = processNodeService.count(wrapper);
|
||||
if (count == 0 || "123".equals(assignee)){
|
||||
if (count == 0 || "123".equals(assignee)) {
|
||||
// 标准化发起流程不走这个逻辑
|
||||
if (!processDefinitionId.contains("es-annual-init")) {
|
||||
return;
|
||||
@@ -174,8 +178,8 @@ public class MyGlobalEventListener implements ActivitiEventListener {
|
||||
//更新最新接受任务时间
|
||||
ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId);
|
||||
LambdaUpdateWrapper<ProcessAll> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
updateWrapper.eq(ProcessAll::getId,processAll.getId());
|
||||
updateWrapper.set(ProcessAll::getReceivedTaskTime,createTime);
|
||||
updateWrapper.eq(ProcessAll::getId, processAll.getId());
|
||||
updateWrapper.set(ProcessAll::getReceivedTaskTime, createTime);
|
||||
processAllService.update(updateWrapper);
|
||||
|
||||
// 对接统一平台生成待办任务
|
||||
@@ -199,15 +203,15 @@ public class MyGlobalEventListener implements ActivitiEventListener {
|
||||
|
||||
ProcessApprovalRecordService recordService = SpringContextUtil.getBean(ProcessApprovalRecordService.class);
|
||||
LambdaQueryWrapper<ProcessApprovalRecord> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(ProcessApprovalRecord::getTaskId,taskId);
|
||||
wrapper.eq(ProcessApprovalRecord::getTaskId, taskId);
|
||||
ProcessApprovalRecord approvalRecord = recordService.getOne(wrapper);
|
||||
if (approvalRecord == null){
|
||||
if (approvalRecord == null) {
|
||||
return;
|
||||
}
|
||||
String userId = approvalRecord.getUserId();
|
||||
|
||||
if (!Objects.equals(assignee,userId)) {
|
||||
log.info("由"+userId+"转办给"+assignee);
|
||||
if (!Objects.equals(assignee, userId)) {
|
||||
log.info("由" + userId + "转办给" + assignee);
|
||||
// 对接统一平台生成完成任务
|
||||
PushWorkflowIntegrationAPI pushWorkflowIntegrationAPI = SpringContextUtil.getBean(PushWorkflowIntegrationAPI.class);
|
||||
List<UnifiedTodoVO> list = new ArrayList<>();
|
||||
@@ -250,9 +254,9 @@ public class MyGlobalEventListener implements ActivitiEventListener {
|
||||
String processDefinitionId = delegateTask.getProcessDefinitionId();
|
||||
//更新审批信息为完成
|
||||
LambdaQueryWrapper<ProcessApprovalRecord> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(ProcessApprovalRecord::getTaskId,taskId);
|
||||
wrapper.eq(ProcessApprovalRecord::getTaskId, taskId);
|
||||
ProcessApprovalRecord approvalRecord = recordService.getOne(wrapper);
|
||||
if (approvalRecord == null){
|
||||
if (approvalRecord == null) {
|
||||
return;
|
||||
}
|
||||
Date createTime = approvalRecord.getCreateTime();
|
||||
@@ -264,7 +268,7 @@ public class MyGlobalEventListener implements ActivitiEventListener {
|
||||
DateBetween between = date.between(createTime);
|
||||
|
||||
// 征求意见流程 超期待办特殊处理
|
||||
if (YesOrNoEnum.NO.getValue().equals(approvalRecord.getOverDue())){
|
||||
if (YesOrNoEnum.NO.getValue().equals(approvalRecord.getOverDue())) {
|
||||
approvalRecord.setFinishFlag(FinishFlagEnum.COMPLETE.getValue());
|
||||
approvalRecord.setEndTime(date);
|
||||
approvalRecord.setOverTime(between.toString());
|
||||
@@ -297,8 +301,8 @@ public class MyGlobalEventListener implements ActivitiEventListener {
|
||||
//更新最新完成任务时间
|
||||
ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId);
|
||||
LambdaUpdateWrapper<ProcessAll> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
updateWrapper.eq(ProcessAll::getId,processAll.getId());
|
||||
updateWrapper.set(ProcessAll::getCompletedTaskTime,date);
|
||||
updateWrapper.eq(ProcessAll::getId, processAll.getId());
|
||||
updateWrapper.set(ProcessAll::getCompletedTaskTime, date);
|
||||
processAllService.update(updateWrapper);
|
||||
|
||||
// 对接统一平台生成完成任务
|
||||
@@ -316,9 +320,9 @@ public class MyGlobalEventListener implements ActivitiEventListener {
|
||||
log.info("===================任务删除事件===================");
|
||||
ActivitiEntityEventImpl activitiEntityEvent = (ActivitiEntityEventImpl) event;
|
||||
TaskEntity delegateTask;
|
||||
if (activitiEntityEvent.getEntity() instanceof TaskEntity){
|
||||
if (activitiEntityEvent.getEntity() instanceof TaskEntity) {
|
||||
delegateTask = (TaskEntity) activitiEntityEvent.getEntity();
|
||||
}else {
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
ExecutionEntity execution = delegateTask.getExecution();
|
||||
@@ -328,15 +332,15 @@ public class MyGlobalEventListener implements ActivitiEventListener {
|
||||
String processDefinitionId = delegateTask.getProcessDefinitionId();
|
||||
//更新审批信息为完成
|
||||
LambdaQueryWrapper<ProcessApprovalRecord> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(ProcessApprovalRecord::getTaskId,taskId);
|
||||
wrapper.ne(ProcessApprovalRecord::getFinishFlag,FinishFlagEnum.COMPLETE.getValue());
|
||||
wrapper.ne(ProcessApprovalRecord::getFinishFlag,FinishFlagEnum.WITHDRAWN.getValue());
|
||||
wrapper.eq(ProcessApprovalRecord::getTaskId, taskId);
|
||||
wrapper.ne(ProcessApprovalRecord::getFinishFlag, FinishFlagEnum.COMPLETE.getValue());
|
||||
wrapper.ne(ProcessApprovalRecord::getFinishFlag, FinishFlagEnum.WITHDRAWN.getValue());
|
||||
ProcessApprovalRecord approvalRecord = recordService.getOne(wrapper);
|
||||
if (approvalRecord == null){
|
||||
if (approvalRecord == null) {
|
||||
return;
|
||||
}
|
||||
Integer finishFlag = approvalRecord.getFinishFlag();
|
||||
if (FinishFlagEnum.COMPLETE.getValue().equals(finishFlag)){
|
||||
if (FinishFlagEnum.COMPLETE.getValue().equals(finishFlag)) {
|
||||
return;
|
||||
}
|
||||
log.info("id = " + delegateTask.getId());
|
||||
@@ -374,26 +378,40 @@ public class MyGlobalEventListener implements ActivitiEventListener {
|
||||
DateTime date = DateUtil.date();
|
||||
DateBetween between = date.between(createTime);
|
||||
|
||||
//更新流程总表信息为已完成
|
||||
LambdaUpdateWrapper<ProcessAll> wrapper = new LambdaUpdateWrapper<>();
|
||||
wrapper.eq(ProcessAll::getProcessInstanceId, processInstanceId);
|
||||
wrapper.set(ProcessAll::getPrcStatus, ProcessStatusEnum.COMPLETED.getValue());
|
||||
wrapper.set(ProcessAll::getEndTime, date);
|
||||
wrapper.set(ProcessAll::getOverTime, between.toString());
|
||||
processAllService.update(wrapper);
|
||||
// 更新流程总表信息为已完成
|
||||
// 复杂流程的子流程不需要更新流程状态
|
||||
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<>();
|
||||
wrapper.eq(ProcessAll::getProcessInstanceId, processInstanceId);
|
||||
wrapper.set(ProcessAll::getPrcStatus, ProcessStatusEnum.COMPLETED.getValue());
|
||||
wrapper.set(ProcessAll::getEndTime, date);
|
||||
wrapper.set(ProcessAll::getOverTime, between.toString());
|
||||
processAllService.update(wrapper);
|
||||
}
|
||||
|
||||
//如果有父id,判断所有子流程是否都完成,如果都完成,那么父流程的任务开始流转
|
||||
String parentTaskId = (String) execution.getVariable(ActivitiCommon.PARENT_TASK_ID);
|
||||
if (StringUtils.isNotBlank(parentTaskId)){
|
||||
if (StringUtils.isNotBlank(parentTaskId)) {
|
||||
int i = processAllService.countByParentTaskId(parentTaskId);
|
||||
if (i == 0){
|
||||
if (i == 0) {
|
||||
TaskService taskService = SpringContextUtil.getBean(TaskService.class);
|
||||
taskService.complete(parentTaskId);
|
||||
}
|
||||
}else {
|
||||
} else {
|
||||
//查询所有审批信息
|
||||
ProcessApprovalRecordService recordService = SpringContextUtil.getBean(ProcessApprovalRecordService.class);
|
||||
LambdaQueryWrapper<ProcessApprovalRecord> wrapper1 = new LambdaQueryWrapper<>();
|
||||
wrapper1.eq(ProcessApprovalRecord::getProcessInstanceId,processInstanceId);
|
||||
wrapper1.eq(ProcessApprovalRecord::getProcessInstanceId, processInstanceId);
|
||||
List<ProcessApprovalRecord> approvalRecordList = recordService.list(wrapper1);
|
||||
|
||||
//对接统一平台生成办结
|
||||
|
||||
+4
-8
@@ -54,9 +54,9 @@ import java.io.InputStream;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.jero.modules.activiti.common.ActivitiCommon.DISTRIBUTE;
|
||||
import static com.jero.modules.activiti.common.ActivitiCommon.PASS;
|
||||
import static com.jero.modules.activiti.common.ActivitiCommon.*;
|
||||
import static com.jero.modules.activiti.process.standardComplianceCheck.common.ProcessStandardComplianceCheckConstants.*;
|
||||
import static com.jero.modules.activiti.process.standardComplianceCheck.common.ProcessStandardComplianceCheckConstants.UNALLOCATED_QUANTITY;
|
||||
|
||||
/**
|
||||
* @author ThinkBook
|
||||
@@ -159,6 +159,7 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
|
||||
save(standardInfo);
|
||||
// 给流程中设置主表流程变量Id
|
||||
runtimeService.setVariable(processInstanceId, CHECK_ID, standardInfo.getId());
|
||||
runtimeService.setVariable(processInstanceId, MAIN_INSTANCE_ID, processInstanceId);
|
||||
// 子表设置流程实例Id
|
||||
List<ProcessStandardComplianceCheckDetail> detailInfoList = businessInfoDTO.getDetailInfoList();
|
||||
detailInfoList.forEach(detail -> {
|
||||
@@ -398,13 +399,8 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
|
||||
processSccVO.setDetailInfoList(detailList);
|
||||
break;
|
||||
case DESIGNER_ENGINEER_EVALUATION:
|
||||
this.setDesignerEngineerEvaluationHandleData(processSccVO, taskId);
|
||||
break;
|
||||
case MAIN_CHECK_USER_APPROVAL:
|
||||
detailList = detailList.stream()
|
||||
.filter(detail -> processInstanceId.equals(detail.getProcessInstanceId()))
|
||||
.collect(Collectors.toList());
|
||||
processSccVO.setDetailInfoList(detailList);
|
||||
this.setDesignerEngineerEvaluationHandleData(processSccVO, taskId);
|
||||
break;
|
||||
}
|
||||
result.setBusinessInfoDTO(processSccVO);
|
||||
|
||||
Reference in New Issue
Block a user