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 3ad6eac9..35e8c047 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 @@ -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 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 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 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 list = new ArrayList<>(); @@ -250,9 +254,9 @@ public class MyGlobalEventListener implements ActivitiEventListener { String processDefinitionId = delegateTask.getProcessDefinitionId(); //更新审批信息为完成 LambdaQueryWrapper 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 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 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 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 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 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 wrapper1 = new LambdaQueryWrapper<>(); - wrapper1.eq(ProcessApprovalRecord::getProcessInstanceId,processInstanceId); + wrapper1.eq(ProcessApprovalRecord::getProcessInstanceId, processInstanceId); List approvalRecordList = recordService.list(wrapper1); //对接统一平台生成办结 diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/impl/ProcessStandardComplianceCheckServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/impl/ProcessStandardComplianceCheckServiceImpl.java index c83332ac..694f99db 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/impl/ProcessStandardComplianceCheckServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/impl/ProcessStandardComplianceCheckServiceImpl.java @@ -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 detailInfoList = businessInfoDTO.getDetailInfoList(); detailInfoList.forEach(detail -> { @@ -398,13 +399,8 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl processInstanceId.equals(detail.getProcessInstanceId())) - .collect(Collectors.toList()); - processSccVO.setDetailInfoList(detailList); + this.setDesignerEngineerEvaluationHandleData(processSccVO, taskId); break; } result.setBusinessInfoDTO(processSccVO);