From 6227edc9d7a5ca11f31f51718f665f33ca08b8a8 Mon Sep 17 00:00:00 2001 From: liao Date: Tue, 21 Nov 2023 15:56:14 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E9=80=89=E6=8B=A9=E6=A0=87=E5=87=86?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=A2=9E=E5=8A=A0=E6=A0=87=E5=87=86=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fb/common/ConsultationNodeSort.java | 14 ++ .../fb/common/ConsultationTaskKey.java | 2 + .../fb/listener/TaskListenerService.java | 18 +- ...cessFbStandardConsultationServiceImpl.java | 65 +++++- .../impl/ProcessHandleServiceImpl.java | 6 +- .../common/mapper/xml/LawsCommonMapper.xml | 3 + .../common/vo/ManyStandardSelectionBoxVO.java | 3 + .../main/resources/bpmn/标准征求意见流程.bpmn | 215 +++++++++--------- 8 files changed, 211 insertions(+), 115 deletions(-) create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/fb/common/ConsultationNodeSort.java diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/common/ConsultationNodeSort.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/common/ConsultationNodeSort.java new file mode 100644 index 00000000..aef5990d --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/common/ConsultationNodeSort.java @@ -0,0 +1,14 @@ +package com.jero.modules.activiti.process.fb.common; + +/** + * @Author: liao + * @Date: 2023/11/21 15:29 + * @Description: 节点排序值 + */ +public class ConsultationNodeSort { + + public final static Integer MODULE_OWNER_LIST = 3; // 模块负责人 + + public final static Integer DESIGN_ENGINEER_LIST = 4; // 模块负责人 + +} 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 db1cc80f..b4359918 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 @@ -13,6 +13,8 @@ public class ConsultationTaskKey { public static final String ENGINEER_START_END = "engineer_start_end"; // 法规工程师汇总 + public static final String REJECT = "reject"; // 法规工程师驳回 + public static final String DEPART_LEADER_START_1 = "depart_leader_start_1"; // 各部所主管级领导分发 public static final String DEPART_LEADER_START_2 = "depart_leader_start_2"; // 各部所主管级领导分发 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 71884bbf..e124cb1c 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 @@ -40,29 +40,39 @@ public class TaskListenerService { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(ProcessFbConsultationUserLink::getBusinessId, processAll.getProjectId()); String userId = CurrentUserUtil.getId(); + ProcessFbConsultationUserLink userLink; switch (taskDefinitionKey) { case ConsultationTaskKey.MODULE_OWNER_START: // 模块负责人分发 queryWrapper.eq(ProcessFbConsultationUserLink::getDepartLeaderId, userId); queryWrapper.eq(ProcessFbConsultationUserLink::getModuleOwnerId, assignee); + userLink = processFbConsultationUserLinkService.getOne(queryWrapper); + delegateTask.setFormKey(userLink.getId()); break; case ConsultationTaskKey.DESIGN_ENGINEER_2: // 设计工程师填写征求意见(不分发给模块负责人) queryWrapper.eq(ProcessFbConsultationUserLink::getDepartLeaderId, userId); queryWrapper.eq(ProcessFbConsultationUserLink::getDesignEngineerId, assignee); + userLink = processFbConsultationUserLinkService.getOne(queryWrapper); + delegateTask.setFormKey(userLink.getId()); + break; + case ConsultationTaskKey.DESIGN_ENGINEER_1: // 设计工程师填写征求意见(分发给模块负责人) + userLink = processFbConsultationUserLinkService.getById(assignee); + assignee = userLink.getDesignEngineerId(); + delegateTask.setAssignee(userLink.getDesignEngineerId()); + delegateTask.setFormKey(userLink.getId()); break; default: log.info("{}没有监听任务", taskDefinitionKey); - return; } - ProcessFbConsultationUserLink userLink = processFbConsultationUserLinkService.getOne(queryWrapper); - delegateTask.setFormKey(userLink.getId()); log.info("================================任务监听器================================="); log.info("任务id: {}", delegateTask.getId()); + log.info("TaskDefinitionKey: {}", delegateTask.getTaskDefinitionKey()); + log.info("任务Name: {}", delegateTask.getName()); log.info("taskDefinitionKey: {}", taskDefinitionKey); log.info("assignee: {}", assignee); log.info("FormKey: {}", delegateTask.getFormKey()); log.info("任务ExecutionId: {}", execution.getId()); - log.info("任务SuperExecutionId: {}", execution.getSuperExecutionId()); + log.info("任务父ExecutionId: {}", execution.getParentId()); log.info("======================================================================="); } 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 93c60582..e8597d47 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.ConsultationNodeSort; import com.jero.modules.activiti.process.fb.common.ConsultationTaskKey; import com.jero.modules.activiti.process.fb.common.ProcessDefinitionKey; import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO; @@ -39,6 +40,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import javax.annotation.Resource; import java.util.*; +import java.util.stream.Collectors; /** @@ -189,11 +191,12 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl processInfoVO) { + ProcessFbStandardConsultationVO businessInfoDTO = processInfoVO.getBusinessInfoDTO(); // 全部业务信息 + String designEngineerId = businessInfoDTO.getProcessFbConsultationUserLink().getDesignEngineerId(); + + if (StringUtils.isBlank(designEngineerId)) { + throw new JeroBootException(ResultCommon.EMPTY_COMMON, "designEngineerId"); + } + + String taskId = processInfoVO.getBasicTaskInfoDTO().getTaskId(); + Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); + + String userLinkId = task.getFormKey(); + log.info("userLinkId: {}", userLinkId); + ProcessFbConsultationUserLink processFbConsultationUserLink = processFbConsultationUserLinkService.getById(userLinkId); + + List designEngineerIdList = Arrays.asList(designEngineerId.split(",")); + List userLinkList = new ArrayList<>(); + + designEngineerIdList.forEach(designEngineer -> { + ProcessFbConsultationUserLink userLink = new ProcessFbConsultationUserLink(); + userLink.setUserType(processFbConsultationUserLink.getUserType()); + userLink.setBusinessId(processFbConsultationUserLink.getBusinessId()); + userLink.setDepartLeaderId(processFbConsultationUserLink.getDepartLeaderId()); + userLink.setModuleOwnerId(processFbConsultationUserLink.getModuleOwnerId()); + userLink.setDesignEngineerId(designEngineer); + userLinkList.add(userLink); + }); + + processFbConsultationUserLinkService.removeById(userLinkId); // 先删除 + processFbConsultationUserLinkService.saveBatch(userLinkList, userLinkList.size()); // 后新增 + + List idList = userLinkList.stream().map(ProcessFbConsultationUserLink::getId).collect(Collectors.toList()); + String processInstanceId = task.getProcessInstanceId(); + runtimeService.setVariableLocal(processInstanceId, "designEngineerList", idList); + saveNodeUserLink(processInstanceId, ConsultationNodeSort.DESIGN_ENGINEER_LIST, designEngineerIdList); + + // 完成任务 + taskService.complete(taskId); + } + /** * @Author: liao * @Date: 2023/11/21 9:39 @@ -222,7 +273,9 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl moduleOwnerIds = Arrays.asList(userLink.getModuleOwnerId().split(",")); moduleOwnerIds.forEach(moduleOwnerId -> { ProcessFbConsultationUserLink link = new ProcessFbConsultationUserLink(); + link.setUserType("1"); link.setBusinessId(processInfoVO.getBusinessId()); link.setDepartLeaderId(CurrentUserUtil.getId()); link.setModuleOwnerId(moduleOwnerId); @@ -293,7 +347,7 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl designEngineerIds = Arrays.asList(userLink.getDesignEngineerId().split(",")); designEngineerIds.forEach(designEngineerId -> { ProcessFbConsultationUserLink link = new ProcessFbConsultationUserLink(); + link.setUserType("2"); link.setBusinessId(processInfoVO.getBusinessId()); link.setDepartLeaderId(CurrentUserUtil.getId()); link.setDesignEngineerId(designEngineerId); @@ -309,7 +364,7 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl AND #{vo.source} LIKE CONCAT('%', standard.source, '%') + + AND #{vo.standardState} LIKE CONCAT('%', standard.standard_state, '%') + AND (standard_number LIKE CONCAT('%', #{vo.standardNumberOrName}, '%') OR standard_name LIKE CONCAT('%', #{vo.standardNumberOrName}, '%')) diff --git a/laws-modules/src/main/java/com/jero/modules/laws/common/vo/ManyStandardSelectionBoxVO.java b/laws-modules/src/main/java/com/jero/modules/laws/common/vo/ManyStandardSelectionBoxVO.java index 7626edcb..a11fb25b 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/common/vo/ManyStandardSelectionBoxVO.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/common/vo/ManyStandardSelectionBoxVO.java @@ -28,4 +28,7 @@ public class ManyStandardSelectionBoxVO { @ApiModelProperty(value = "发布状态的拆分稿-标识") private String releaseSplitFlag; + + @ApiModelProperty(value = "标准状态") + private java.lang.String standardState; } diff --git a/laws-modules/src/main/resources/bpmn/标准征求意见流程.bpmn b/laws-modules/src/main/resources/bpmn/标准征求意见流程.bpmn index 9b5ee05c..c9d40b49 100644 --- a/laws-modules/src/main/resources/bpmn/标准征求意见流程.bpmn +++ b/laws-modules/src/main/resources/bpmn/标准征求意见流程.bpmn @@ -1,6 +1,6 @@ - + Flow_1d5objw @@ -144,15 +144,12 @@ Flow_19vxot3 - Flow_0g6wwzz - Flow_1f5fu60 Flow_1125yee Flow_1125yee Flow_0sb0q1z - Flow_1aeqdsv Flow_0jjkrst @@ -160,25 +157,10 @@ Flow_0sb0q1z - ${passThird == 1} + ${passThird} - - ${passThird == 2} - - - - - - Flow_1aeqdsv - Flow_0g6wwzz - - ${nrOfInstances== nrOfCompletedInstances} - - - Flow_0jjkrst - Flow_1f5fu60 ${nrOfInstances== nrOfCompletedInstances} @@ -190,7 +172,7 @@ Flow_1ft2poj - Flow_0q5ae61 + Flow_1vn8jk5 Flow_0mdmcs5 ${nrOfInstances== nrOfCompletedInstances} @@ -212,6 +194,7 @@ Flow_1ta4894 + Flow_132k5wt ${passSecond} @@ -219,20 +202,38 @@ ${!passSecond} - + Flow_07p5ivp - Flow_0q5ae61 + Flow_1ybap2u - - + + + Flow_1ybap2u + Flow_1vn8jk5 + Flow_1tg5cq9 + + + + ${passFourth} + + + + + + Flow_1tg5cq9 + Flow_132k5wt + + + ${!passFourth} + + - ${passThird == 3} + ${!passThird} - @@ -243,6 +244,12 @@ + + + + + + @@ -267,6 +274,10 @@ + + + + @@ -314,10 +325,6 @@ - - - - @@ -346,8 +353,8 @@ - - + + @@ -363,7 +370,7 @@ - + @@ -373,79 +380,96 @@ - - - + + + - - - - - - - - - - - + - + + + + + + + + + + + + + + - + - + - - - - - - - - + + - - - + + + - - - + + + - - + + - + + + + + - - - - + + + + - + - - - + + + + + + - - - + + + + + + + + + + + + + + + + @@ -460,40 +484,23 @@ - - + + - - + + - + - - - - - - - - - - - - - - + + - + - - - - -