From 157236e323aa865180bee1113b6213827aa399d3 Mon Sep 17 00:00:00 2001 From: liao Date: Tue, 28 Nov 2023 09:16:24 +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 --- .../fb/common/ConsultationTaskKey.java | 4 +- .../entity/ProcessFbConsultationUserLink.java | 4 ++ .../fb/listener/TaskListenerService.java | 15 +++++- ...IProcessFbStandardConsultationService.java | 10 ++++ ...cessFbStandardConsultationServiceImpl.java | 50 ++++++++++++++++++- 5 files changed, 78 insertions(+), 5 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 fe402489..518fcf19 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 @@ -23,9 +23,9 @@ public class ConsultationTaskKey { 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_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/entity/ProcessFbConsultationUserLink.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/entity/ProcessFbConsultationUserLink.java index 0474b4aa..86f87007 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/entity/ProcessFbConsultationUserLink.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/entity/ProcessFbConsultationUserLink.java @@ -57,4 +57,8 @@ public class ProcessFbConsultationUserLink implements Serializable { @Excel(name = "下发人员类型(1模块负责人、2设计工程师)", width = 15) @ApiModelProperty(value = "下发人员类型(1模块负责人、2设计工程师)") private java.lang.String userType; + /**父执行实例流id*/ + @Excel(name = "父执行实例流id", width = 15) + @ApiModelProperty(value = "父执行实例流id") + private java.lang.String parentExecutionId; } 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 e124cb1c..aebf1f0a 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 @@ -36,6 +36,8 @@ public class TaskListenerService { ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId); DelegateExecution execution = delegateTask.getExecution(); + String executionId = execution.getId(); + String parentExecutionId = execution.getParentId(); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(ProcessFbConsultationUserLink::getBusinessId, processAll.getProjectId()); @@ -47,18 +49,27 @@ public class TaskListenerService { queryWrapper.eq(ProcessFbConsultationUserLink::getModuleOwnerId, assignee); userLink = processFbConsultationUserLinkService.getOne(queryWrapper); delegateTask.setFormKey(userLink.getId()); + // 给人员关系表绑定执行流父id + userLink.setParentExecutionId(executionId); + processFbConsultationUserLinkService.updateById(userLink); break; case ConsultationTaskKey.DESIGN_ENGINEER_2: // 设计工程师填写征求意见(不分发给模块负责人) queryWrapper.eq(ProcessFbConsultationUserLink::getDepartLeaderId, userId); queryWrapper.eq(ProcessFbConsultationUserLink::getDesignEngineerId, assignee); userLink = processFbConsultationUserLinkService.getOne(queryWrapper); delegateTask.setFormKey(userLink.getId()); + // 给人员关系表绑定执行流父id + userLink.setParentExecutionId(parentExecutionId); + processFbConsultationUserLinkService.updateById(userLink); break; case ConsultationTaskKey.DESIGN_ENGINEER_1: // 设计工程师填写征求意见(分发给模块负责人) userLink = processFbConsultationUserLinkService.getById(assignee); assignee = userLink.getDesignEngineerId(); delegateTask.setAssignee(userLink.getDesignEngineerId()); delegateTask.setFormKey(userLink.getId()); + // 给人员关系表绑定执行流父id + userLink.setParentExecutionId(parentExecutionId); + processFbConsultationUserLinkService.updateById(userLink); break; default: log.info("{}没有监听任务", taskDefinitionKey); @@ -71,8 +82,8 @@ public class TaskListenerService { log.info("taskDefinitionKey: {}", taskDefinitionKey); log.info("assignee: {}", assignee); log.info("FormKey: {}", delegateTask.getFormKey()); - log.info("任务ExecutionId: {}", execution.getId()); - log.info("任务父ExecutionId: {}", execution.getParentId()); + log.info("任务ExecutionId: {}", executionId); + log.info("任务父ExecutionId: {}", parentExecutionId); log.info("======================================================================="); } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/IProcessFbStandardConsultationService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/IProcessFbStandardConsultationService.java index 5607e489..5df35ede 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/IProcessFbStandardConsultationService.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/IProcessFbStandardConsultationService.java @@ -1,10 +1,13 @@ package com.jero.modules.activiti.process.fb.service; +import com.jero.modules.activiti.process.fb.entity.ProcessFbConsultationUserLink; import com.jero.modules.activiti.process.fb.entity.ProcessFbStandardConsultation; import com.baomidou.mybatisplus.extension.service.IService; import com.jero.modules.activiti.process.fb.vo.ProcessFbStandardConsultationVO; import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; +import java.util.List; + /** * @Description: 标准征求意见流程表 * @Author: jero-boot @@ -54,4 +57,11 @@ public interface IProcessFbStandardConsultationService extends IService queryProcessInfoVO(String draftId, String processInstanceId, String taskId); + + /** + * @Author: liao + * @Date: 2023/11/27 16:50 + * @Description: 根据任务id和业务id查询关联表集合 + **/ + List listByTaskIdAndBusinessId(String taskId, String businessId); } 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 6548b95c..cc4c5114 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 @@ -234,10 +234,28 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl processInfoVO) { // 保存业务信息 ProcessFbStandardConsultationVO businessInfoDTO = processInfoVO.getBusinessInfoDTO(); + + BasicTaskInfoDTO taskInfoDTO = processInfoVO.getBasicTaskInfoDTO(); + String taskId = taskInfoDTO.getTaskId(); + ProcessFbStandardConsultation processFbStandardConsultation = businessInfoDTO.getProcessFbStandardConsultation(); ProcessFbConsultationUserLink processFbConsultationUserLink = businessInfoDTO.getProcessFbConsultationUserLink(); List processFbConsultationLists = businessInfoDTO.getProcessFbConsultationLists(); + if (StringUtils.isBlank(taskId)) { // 流程没有发起时保存 + saveOrUpdate(processFbStandardConsultation); + processInfoVO.setBusinessId(processFbStandardConsultation.getId()); + } else { // 流程发起后保存 + Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); + String taskDefinitionKey = task.getTaskDefinitionKey(); + switch (taskDefinitionKey) { + case ConsultationTaskKey.DEPART_LEADER_START_1: // 各部所主管级领导分发 + break; + default: + log.info("保存为草稿,节点 {} 无操作", taskDefinitionKey); + } + } + // 流程信息 BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO(); basicProcessInfoDTO.setProcessType(ProcessTypeEnum.FB_STANDARD_CONSULTATION.getValue()); // 流程类型 @@ -278,6 +296,36 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl listByTaskIdAndBusinessId(String taskId, String businessId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ProcessFbConsultationUserLink::getBusinessId, businessId); + + Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); + String taskDefinitionKey = task.getTaskDefinitionKey(); + String executionId = task.getExecutionId(); + switch (taskDefinitionKey) { + case ConsultationTaskKey.DEPART_LEADER_START_1: // 各部所主管级领导分发 + case ConsultationTaskKey.DEPART_LEADER_END_1: // 各部所主管级领导审批 + case ConsultationTaskKey.DEPART_LEADER_COLLECT_2: // 各部所主管级领导汇总 + case ConsultationTaskKey.DEPART_LEADER_END_4: // 各部所主管级领导审批(驳回流程) + case ConsultationTaskKey.DEPART_LEADER_COLLECT_3: // 各部所主管级领导汇总(驳回流程) + queryWrapper.eq(ProcessFbConsultationUserLink::getDepartLeaderId, task.getAssignee()); + break; + case ConsultationTaskKey.MODULE_OWNER_START: // 模块负责人分发 + case ConsultationTaskKey.MODULE_OWNER_END_1: // 模块负责人汇总 + queryWrapper.eq(ProcessFbConsultationUserLink::getParentExecutionId, executionId); + default: + return new ArrayList<>(); + } + return processFbConsultationUserLinkService.list(queryWrapper); + } + /** * @Author: liao * @Date: 2023/11/13 16:00 @@ -400,7 +448,7 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl { ProcessFbConsultationUserLink userLink = new ProcessFbConsultationUserLink(); - userLink.setUserType(processFbConsultationUserLink.getUserType()); + userLink.setUserType("1"); userLink.setBusinessId(processFbConsultationUserLink.getBusinessId()); userLink.setDepartLeaderId(processFbConsultationUserLink.getDepartLeaderId()); userLink.setModuleOwnerId(processFbConsultationUserLink.getModuleOwnerId());