diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/impl/ProcessHandleServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/impl/ProcessHandleServiceImpl.java index 2eadda05..edd80050 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/impl/ProcessHandleServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/impl/ProcessHandleServiceImpl.java @@ -8,6 +8,7 @@ import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.jero.common.api.vo.ResultCommon; import com.jero.common.exception.JeroBootException; +import com.jero.modules.activiti.common.ActivitiCommon; import com.jero.modules.activiti.entity.ProcessAll; import com.jero.modules.activiti.entity.ProcessApprovalRecord; import com.jero.modules.activiti.entity.ProcessNode; @@ -16,8 +17,10 @@ import com.jero.modules.activiti.enums.ProcessTypeEnum; import com.jero.modules.activiti.process.common.common.DraftCommon; import com.jero.modules.activiti.process.common.entity.ProcessDraft; import com.jero.modules.activiti.process.common.entity.ProcessSnapshot; +import com.jero.modules.activiti.process.common.enums.ProcessType; import com.jero.modules.activiti.process.common.service.ProcessDraftService; import com.jero.modules.activiti.process.common.service.ProcessSnapshotService; +import com.jero.modules.activiti.process.fb.common.ProcessDefinitionKey; import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO; import com.jero.modules.activiti.process.fb.dto.BasicTaskInfoDTO; import com.jero.modules.activiti.process.fb.dto.ProcessDTO; @@ -95,7 +98,7 @@ public class ProcessHandleServiceImpl implements IProcessHandleService { // 根据流程定义id启动流程 Map variables = setProcessVariables(userInfoMap); Map processVariables = processInfoVO.getProcessVariables(); - if (processVariables != null){ + if (processVariables != null) { variables.putAll(processVariables); } ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinitionId, variables); @@ -135,6 +138,7 @@ public class ProcessHandleServiceImpl implements IProcessHandleService { return processInstanceId; } + /** * @Author: liao * @Date: 2023/11/2 17:04 @@ -154,7 +158,7 @@ public class ProcessHandleServiceImpl implements IProcessHandleService { // 根据流程定义id启动流程 Map variables = setProcessVariables(userInfoMap); Map processVariables = processInfoVO.getProcessVariables(); - if (processVariables != null){ + if (processVariables != null) { variables.putAll(processVariables); } ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinitionId, variables); @@ -225,12 +229,12 @@ public class ProcessHandleServiceImpl implements IProcessHandleService { WorkCenterService classByValue = null; try { Object o = Class.forName(ProcessTypeEnum.getClassByValue(prcType)).newInstance(); - if (o instanceof WorkCenterService){ + if (o instanceof WorkCenterService) { classByValue = (WorkCenterService) o; - classByValue.handleTransfer(processAll,processApprovalRecord, toUserId, userId); + classByValue.handleTransfer(processAll, processApprovalRecord, toUserId, userId); } - }catch (Exception e) { - log.error(e.getMessage(),e); + } catch (Exception e) { + log.error(e.getMessage(), e); throw new JeroBootException(e.getMessage()); } @@ -238,25 +242,41 @@ public class ProcessHandleServiceImpl implements IProcessHandleService { Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); String processDefinitionId = task.getProcessDefinitionId(); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(ProcessApprovalRecord::getTaskId,taskId); + wrapper.eq(ProcessApprovalRecord::getTaskId, taskId); ProcessApprovalRecord record = processApprovalRecordService.getOne(wrapper, false); - if(Objects.isNull(record)){ + if (Objects.isNull(record)) { throw new JeroBootException("数据不存在"); } String xmlNodeId = record.getNodeId(); LambdaQueryWrapper queryProcessNode = new LambdaQueryWrapper<>(); - queryProcessNode.eq(ProcessNode::getProcessDefinitionId,processDefinitionId); - queryProcessNode.eq(ProcessNode::getXmlNodeId,xmlNodeId); - ProcessNode processNode = processNodeService.getOne(queryProcessNode,false); - if(Objects.isNull(processNode)){ + queryProcessNode.eq(ProcessNode::getProcessDefinitionId, processDefinitionId); + queryProcessNode.eq(ProcessNode::getXmlNodeId, xmlNodeId); + ProcessNode processNode = processNodeService.getOne(queryProcessNode, false); + if (Objects.isNull(processNode)) { throw new JeroBootException("数据不存在"); } LambdaUpdateWrapper updateProcessNodeLink = new LambdaUpdateWrapper<>(); - updateProcessNodeLink.eq(ProcessNodeLink::getProcessInstanceId,processInstanceId); - updateProcessNodeLink.eq(ProcessNodeLink::getProcessNodeId,processNode.getId()); - updateProcessNodeLink.eq(ProcessNodeLink::getProcessDefinitionId,processDefinitionId); - updateProcessNodeLink.eq(ProcessNodeLink::getUserId,userId); - updateProcessNodeLink.set(ProcessNodeLink::getUserId,toUserId); + // 制修订流程特殊处理 + if (processDefinitionId.contains(ProcessDefinitionKey.STANDARD_COMPLIANCE_CHECK_MAIN) || + processDefinitionId.contains(ProcessDefinitionKey.STANDARD_COMPLIANCE_CHECK_DISTRIBUTE) || + processDefinitionId.contains(ProcessDefinitionKey.STANDARD_COMPLIANCE_CHECK_REDISTRIBUTE) + ) { + LambdaQueryWrapper queryProcessNodeScc = new LambdaQueryWrapper<>(); + queryProcessNodeScc.eq(ProcessNode::getXmlNodeId, xmlNodeId); + String mainInstanceId = (String) taskService.getVariable(taskId, ActivitiCommon.MAIN_INSTANCE_ID); + queryProcessNodeScc.like(ProcessNode::getProcessDefinitionId, ProcessType.STANDARD_COMPLIANCE_CHECK.getProcessKey()); + List list = processNodeService.list(queryProcessNodeScc); + // 获取创建时间最新的 + processNode = list.stream().max(Comparator.comparing(ProcessNode::getCreateTime)).get(); + updateProcessNodeLink.eq(ProcessNodeLink::getProcessNodeId, processNode.getId()); + updateProcessNodeLink.eq(ProcessNodeLink::getProcessInstanceId, mainInstanceId); + } else { + updateProcessNodeLink.eq(ProcessNodeLink::getProcessInstanceId, processInstanceId); + updateProcessNodeLink.eq(ProcessNodeLink::getProcessNodeId, processNode.getId()); + updateProcessNodeLink.eq(ProcessNodeLink::getProcessDefinitionId, processDefinitionId); + } + updateProcessNodeLink.eq(ProcessNodeLink::getUserId, userId); + updateProcessNodeLink.set(ProcessNodeLink::getUserId, toUserId); processNodeLinkService.update(updateProcessNodeLink); } @@ -439,7 +459,8 @@ public class ProcessHandleServiceImpl implements IProcessHandleService { String jsonString = objectMapper.writeValueAsString(detailInfoMapList); // 将 JSON 字符串反序列化为 List - List detailInfoList = objectMapper.readValue(jsonString, new TypeReference>() {}); + List detailInfoList = objectMapper.readValue(jsonString, new TypeReference>() { + }); List ids = detailInfoList.stream().map(ProcessStandardComplianceCheckDetail::getId).collect(Collectors.toList()); // 先删后增 if (CollUtil.isNotEmpty(ids)) {