From 1de3ea2cf10ffe4c96d0bcdf7ee59a5bac197eab Mon Sep 17 00:00:00 2001 From: liao Date: Wed, 22 Nov 2023 15:36:57 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E6=A0=87=E5=87=86=E5=BE=81=E6=B1=82?= =?UTF-8?q?=E6=84=8F=E8=A7=81=E6=B5=81=E7=A8=8B-=E5=AE=A1=E6=89=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fb/common/ConsultationTaskKey.java | 6 +- ...cessFbStandardConsultationServiceImpl.java | 94 +++++++++++++++++-- 2 files changed, 91 insertions(+), 9 deletions(-) diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/common/ConsultationTaskKey.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/common/ConsultationTaskKey.java index b4359918..9f2cecd1 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/common/ConsultationTaskKey.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/common/ConsultationTaskKey.java @@ -11,7 +11,7 @@ public class ConsultationTaskKey { public static final String ENGINEER_START = "engineer_start"; // 法规工程师发起 - public static final String ENGINEER_START_END = "engineer_start_end"; // 法规工程师汇总 + public static final String ENGINEER_START_END = "engineer_start_end"; // 法规工程师审批 public static final String REJECT = "reject"; // 法规工程师驳回 @@ -19,13 +19,13 @@ public class ConsultationTaskKey { public static final String DEPART_LEADER_START_2 = "depart_leader_start_2"; // 各部所主管级领导分发 - public static final String DEPART_LEADER_END_1 = "depart_leader_end_1"; // 各部所主管级领导汇总 + public static final String DEPART_LEADER_END_1 = "depart_leader_end_1"; // 各部所主管级领导审批 public static final String DEPART_LEADER_COLLECT_2 = "depart_leader_collect_2"; // 各部所主管级领导汇总 public static final String DEPART_LEADER_COLLECT_3 = "depart_leader_collect_3"; // 各部所主管级领导汇总 - public static final String DEPART_LEADER_END_4 = "depart_leader_end_4"; // 各部所主管级领导汇总 + public static final String DEPART_LEADER_END_4 = "depart_leader_end_4"; // 各部所主管级领导审批 public static final String MODULE_OWNER_START = "module_owner_start"; // 模块负责人分发 diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/impl/ProcessFbStandardConsultationServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/impl/ProcessFbStandardConsultationServiceImpl.java index 008af485..d2437ae8 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/impl/ProcessFbStandardConsultationServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/impl/ProcessFbStandardConsultationServiceImpl.java @@ -113,16 +113,18 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl processInfoVO, boolean pass) { - BasicTaskInfoDTO taskInfo = processInfoVO.getBasicTaskInfoDTO(); // 任务信息 - ProcessFbStandardConsultationVO businessInfoDTO = processInfoVO.getBusinessInfoDTO(); // 全部业务信息 ProcessFbStandardConsultation businessBasicInfo = businessInfoDTO.getProcessFbStandardConsultation(); // 业务基本信息 - processInfoVO.setBusinessId(businessBasicInfo.getId()); + String businessId = businessBasicInfo.getId(); + processInfoVO.setBusinessId(businessId); + BasicTaskInfoDTO taskInfo = processInfoVO.getBasicTaskInfoDTO(); // 任务信息 String taskId = taskInfo.getTaskId(); Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); processHandleService.isMyTask(taskId); // 判断是否拥有任务处理权 + String taskDefinitionKey = task.getTaskDefinitionKey(); // 任务定义id + String processInstanceId = task.getProcessInstanceId(); Execution execution = runtimeService.createExecutionQuery().executionId(task.getExecutionId()).singleResult(); @@ -131,20 +133,98 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ProcessFbConsultationUserLink::getBusinessId, businessId); + + List userLinkList; + switch (taskDefinitionKey) { + case ConsultationTaskKey.DEPART_LEADER_END_1: // 主管级领导审批 + runtimeService.setVariableLocal(processInstanceId, "passSecond", false); + // 分发给退回的模块负责人 + queryWrapper.eq(ProcessFbConsultationUserLink::getDepartLeaderId, userId); + userLinkList = processFbConsultationUserLinkService.list(queryWrapper); + List moduleOwnerIdList = userLinkList.stream() + .map(ProcessFbConsultationUserLink::getModuleOwnerId) + .distinct() + .collect(Collectors.toList()); + runtimeService.setVariableLocal(processInstanceId, "moduleOwnerList", moduleOwnerIdList); + break; + case ConsultationTaskKey.ENGINEER_START_END: // 法规工程师审批 + runtimeService.setVariableLocal(processInstanceId, "passThird", false); + // 退回到子流程 + userLinkList = processFbConsultationUserLinkService.list(queryWrapper); + List departLeaderIdList = userLinkList.stream() + .map(ProcessFbConsultationUserLink::getDepartLeaderId) + .distinct() + .collect(Collectors.toList()); + runtimeService.setVariableLocal(processInstanceId, "departLeaderList", departLeaderIdList); + processHandleService.updateApprovalRecord(processInfoVO); + // 完成当前任务任务 + taskService.complete(taskId); + + // 法规工程师驳回 任务列表 + List chooseTaskList = taskService.createTaskQuery() + .processInstanceId(processInstanceId) + .processDefinitionKey(ConsultationTaskKey.REJECT) + .list(); + + // 自动完成任务选择 + for (Task chooseTask : chooseTaskList) { + String chooseTaskAssignee = chooseTask.getAssignee(); + String chooseTaskId = chooseTask.getId(); + List userLinks = userLinkList.stream() + .filter(userLink -> chooseTaskAssignee.equals(userLink.getDepartLeaderId())) + .collect(Collectors.toList()); + if ("1".equals(userLinks.get(0).getUserType())) { // 驳回给模块负责人 + runtimeService.setVariableLocal(processInstanceId, "passFourth", true); + List moduleOwnerList = userLinks.stream() + .map(ProcessFbConsultationUserLink::getModuleOwnerId) + .distinct() + .collect(Collectors.toList()); + runtimeService.setVariableLocal(processInstanceId, "moduleOwnerList", moduleOwnerList); + } else { // 驳回给各部所主管级领导 + runtimeService.setVariableLocal(processInstanceId, "passFourth", false); + } + // 完成驳回任务 + taskService.complete(chooseTaskId); + } + return; + case ConsultationTaskKey.DEPART_LEADER_END_4: + runtimeService.setVariableLocal(processInstanceId, "passSecond", false); + break; + default: + throw new JeroBootException("目前还未开发,请联系管理员"); + } } processHandleService.updateApprovalRecord(processInfoVO); // 完成任务 taskService.complete(taskId); + + // 如果流程已经结束 + if (processHandleService.isProcessFinish(processInstanceId)) { + log.info("流程 {} 已经结束", processInstanceId); + } } /** @@ -190,7 +270,6 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl