From 8b79d1821c2d121dca936efb18f62152feb931dd Mon Sep 17 00:00:00 2001 From: liao Date: Tue, 28 Nov 2023 13:56:44 +0800 Subject: [PATCH] =?UTF-8?q?update=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?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../process/fb/common/ConsultationCommon.java | 12 +++ .../fb/entity/ProcessFbConsultationList.java | 4 + .../fb/listener/TaskListenerService.java | 4 + ...cessFbStandardConsultationServiceImpl.java | 98 ++++++++++++++++--- 4 files changed, 106 insertions(+), 12 deletions(-) create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/fb/common/ConsultationCommon.java diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/common/ConsultationCommon.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/common/ConsultationCommon.java new file mode 100644 index 00000000..e45b55e9 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/common/ConsultationCommon.java @@ -0,0 +1,12 @@ +package com.jero.modules.activiti.process.fb.common; + +/** + * @Author: liao + * @Date: 2023/11/28 11:41 + * @Description: 常量 + */ +public class ConsultationCommon { + + public static final String USER_TYPE_MODULE_OWNER = "1"; // 模块负责人 + +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/entity/ProcessFbConsultationList.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/entity/ProcessFbConsultationList.java index 8ff59ef6..53c17fd1 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/entity/ProcessFbConsultationList.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/entity/ProcessFbConsultationList.java @@ -83,4 +83,8 @@ public class ProcessFbConsultationList implements Serializable { @Excel(name = "设计工程师名称", width = 15) @ApiModelProperty(value = "设计工程师名称") private java.lang.String designEngineerName; + /**设计工程师id*/ + @Excel(name = "设计工程师id", width = 15) + @ApiModelProperty(value = "设计工程师id") + private java.lang.String designEngineerId; } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/listener/TaskListenerService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/listener/TaskListenerService.java index aebf1f0a..e55e2baa 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/listener/TaskListenerService.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/listener/TaskListenerService.java @@ -71,6 +71,10 @@ public class TaskListenerService { userLink.setParentExecutionId(parentExecutionId); processFbConsultationUserLinkService.updateById(userLink); break; + case ConsultationTaskKey.MODULE_OWNER_END_2: // 模块负责人汇总填写意见(主管级领导驳回后) + case ConsultationTaskKey.MODULE_OWNER_END_3: // 法规工程师审批驳回后的子流程中的模块负责人汇总 + delegateTask.setFormKey(userId); // 绑定主管级领导的id + break; default: log.info("{}没有监听任务", taskDefinitionKey); } 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 2662428f..2d6615b8 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 @@ -7,6 +7,7 @@ import com.jero.modules.activiti.entity.ProcessNode; import com.jero.modules.activiti.entity.ProcessNodeLink; import com.jero.modules.activiti.enums.CommitFlagEnum; import com.jero.modules.activiti.enums.ProcessTypeEnum; +import com.jero.modules.activiti.process.fb.common.ConsultationCommon; import com.jero.modules.activiti.process.fb.common.ConsultationNodeSort; import com.jero.modules.activiti.process.fb.common.ConsultationTaskKey; import com.jero.modules.activiti.process.fb.common.ProcessDefinitionKey; @@ -295,41 +296,112 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl queryProcessInfoVO(String draftId, String processInstanceId, String taskId) { ProcessInfoVO processInfoVO = processHandleService.queryProcessInfoVO(draftId, processInstanceId, taskId); ProcessFbStandardConsultationVO processFbStandardConsultationVO = new ProcessFbStandardConsultationVO(); + processInfoVO.setBusinessInfoDTO(processFbStandardConsultationVO); String businessId = processInfoVO.getBusinessId(); ProcessFbStandardConsultation processFbStandardConsultation = getById(businessId); processFbStandardConsultationVO.setProcessFbStandardConsultation(processFbStandardConsultation); // 业务基本信息 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(ProcessFbConsultationList::getBusinessId, businessId); - List consultationLists = processFbConsultationListService.list(queryWrapper); - processFbStandardConsultationVO.setProcessFbConsultationLists(consultationLists); + if (StringUtils.isBlank(taskId)) return processInfoVO; + // 人员选择 + LambdaQueryWrapper linkQueryWrapper = new LambdaQueryWrapper<>(); + linkQueryWrapper.eq(ProcessFbConsultationUserLink::getBusinessId, businessId); + // 征求意见列表 + LambdaQueryWrapper listQueryWrapper = new LambdaQueryWrapper<>(); + listQueryWrapper.eq(ProcessFbConsultationList::getBusinessId, businessId); + + String userId = CurrentUserUtil.getId(); Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); + String executionId = task.getExecutionId(); + Execution execution = runtimeService.createExecutionQuery().executionId(executionId).singleResult(); + String executionParentId = execution.getParentId(); String taskDefinitionKey = task.getTaskDefinitionKey(); // 任务定义id + List userLinks; + ProcessFbConsultationUserLink userLink; + List linkIds; + List consultationLists; switch (taskDefinitionKey) { - case ConsultationTaskKey.DEPART_LEADER_START_1: - processDepartLeaderStart_1_draft(processInfoVO); // 各部所主管级领导分发 + case ConsultationTaskKey.DEPART_LEADER_START_1: // 各部所主管级领导分发 + linkQueryWrapper.eq(ProcessFbConsultationUserLink::getDepartLeaderId, userId); + userLinks = processFbConsultationUserLinkService.list(linkQueryWrapper); + if (CollectionUtils.isNotEmpty(userLinks)) { + userLink = userLinks.get(0); + String userType = userLink.getUserType(); + if (ConsultationCommon.USER_TYPE_MODULE_OWNER.equals(userType)) { // 模块负责人 + List collect = userLinks.stream() + .map(ProcessFbConsultationUserLink::getModuleOwnerId) + .distinct().collect(Collectors.toList()); + userLink.setModuleOwnerId(StringUtils.join(collect, ",")); + } else { // 设计工程师 + List collect = userLinks.stream() + .map(ProcessFbConsultationUserLink::getDesignEngineerId) + .distinct().collect(Collectors.toList()); + userLink.setDesignEngineerId(StringUtils.join(collect, ",")); + } + processFbStandardConsultationVO.setProcessFbConsultationUserLink(userLink); + } break; case ConsultationTaskKey.DESIGN_ENGINEER_1: // 设计工程师填写征求意见(分发给模块负责人) case ConsultationTaskKey.DESIGN_ENGINEER_2: // 设计工程师填写征求意见(不分发给模块负责人) - designEngineer_draft(processInfoVO); + linkQueryWrapper.eq(ProcessFbConsultationUserLink::getParentExecutionId, executionParentId); + linkQueryWrapper.eq(ProcessFbConsultationUserLink::getDesignEngineerId, userId); + userLink = processFbConsultationUserLinkService.getOne(linkQueryWrapper); + listQueryWrapper.eq(ProcessFbConsultationList::getDesignEngineerId, userId); + listQueryWrapper.eq(ProcessFbConsultationList::getUserLinkId, userLink.getId()); + consultationLists = processFbConsultationListService.list(listQueryWrapper); + processFbStandardConsultationVO.setProcessFbConsultationLists(consultationLists); break; case ConsultationTaskKey.MODULE_OWNER_END_1: // 模块负责人汇总填写意见(可跳过) - case ConsultationTaskKey.MODULE_OWNER_END_2: // 模块负责人汇总填写意见(主管级领导驳回后) - case ConsultationTaskKey.MODULE_OWNER_END_3: // 法规工程师审批驳回后的子流程中的模块负责人汇总 + linkQueryWrapper.eq(ProcessFbConsultationUserLink::getParentExecutionId, executionId); + linkQueryWrapper.eq(ProcessFbConsultationUserLink::getModuleOwnerId, userId); + userLinks = processFbConsultationUserLinkService.list(linkQueryWrapper); + linkIds = userLinks.stream().map(ProcessFbConsultationUserLink::getId).collect(Collectors.toList()); + listQueryWrapper.in(ProcessFbConsultationList::getUserLinkId, linkIds); + consultationLists = processFbConsultationListService.list(listQueryWrapper); + processFbStandardConsultationVO.setProcessFbConsultationLists(consultationLists); + break; case ConsultationTaskKey.DEPART_LEADER_COLLECT_3: // 法规工程师审批驳回后的子流程中的各部所主管级领导汇总 case ConsultationTaskKey.DEPART_LEADER_COLLECT_2: // 各部所主管级领导汇总(不分发给模块负责人) - collect_draft(processInfoVO); + linkQueryWrapper.eq(ProcessFbConsultationUserLink::getDepartLeaderId, userId); + userLinks = processFbConsultationUserLinkService.list(linkQueryWrapper); + linkIds = userLinks.stream().map(ProcessFbConsultationUserLink::getId).collect(Collectors.toList()); + listQueryWrapper.in(ProcessFbConsultationList::getUserLinkId, linkIds); + consultationLists = processFbConsultationListService.list(listQueryWrapper); + processFbStandardConsultationVO.setProcessFbConsultationLists(consultationLists); + break; + case ConsultationTaskKey.MODULE_OWNER_END_2: // 模块负责人汇总填写意见(主管级领导驳回后) + case ConsultationTaskKey.MODULE_OWNER_END_3: // 法规工程师审批驳回后的子流程中的模块负责人汇总 + linkQueryWrapper.eq(ProcessFbConsultationUserLink::getDepartLeaderId, task.getFormKey()); + linkQueryWrapper.eq(ProcessFbConsultationUserLink::getModuleOwnerId, userId); + userLinks = processFbConsultationUserLinkService.list(linkQueryWrapper); + linkIds = userLinks.stream().map(ProcessFbConsultationUserLink::getId).collect(Collectors.toList()); + listQueryWrapper.in(ProcessFbConsultationList::getUserLinkId, linkIds); + consultationLists = processFbConsultationListService.list(listQueryWrapper); + processFbStandardConsultationVO.setProcessFbConsultationLists(consultationLists); + break; + case ConsultationTaskKey.ENGINEER_START_END: // 法规工程师审批 + consultationLists = processFbConsultationListService.list(listQueryWrapper); + processFbStandardConsultationVO.setProcessFbConsultationLists(consultationLists); break; case ConsultationTaskKey.MODULE_OWNER_START: // 模块负责人分发 - moduleOwnerStart_draft(processInfoVO); + linkQueryWrapper.eq(ProcessFbConsultationUserLink::getParentExecutionId, executionId); + linkQueryWrapper.eq(ProcessFbConsultationUserLink::getModuleOwnerId, userId); + userLinks = processFbConsultationUserLinkService.list(linkQueryWrapper); + if (CollectionUtils.isNotEmpty(userLinks)) { + List collect = userLinks.stream() + .map(ProcessFbConsultationUserLink::getDesignEngineerId) + .distinct().collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(collect)) { + userLink = userLinks.get(0); + userLink.setDesignEngineerId(StringUtils.join(collect, ",")); + } + } break; default: log.info("taskDefinitionKey:{},没有业务数据保存", taskDefinitionKey); } - processInfoVO.setBusinessInfoDTO(processFbStandardConsultationVO); return processInfoVO; } @@ -602,6 +674,7 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl