From 51bb4c20a00127f94d561c7dac12c63a1f657ea5 Mon Sep 17 00:00:00 2001 From: furongxin <419481438@qq.com> Date: Tue, 15 Oct 2024 16:34:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=B5=81=E7=A8=8B=E5=AE=9E?= =?UTF-8?q?=E4=BE=8B=E5=8F=98=E9=87=8F=E8=8E=B7=E5=8F=96=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 selectFormVariables 方法,直接获取流程实例变量 - 修改 getProcessInstanceExtDO 方法中的变量获取逻辑 - 优化代码结构,提高可维护性 --- .../mysql/task/BpmProcessInstanceExtMapper.java | 7 +++++++ .../bpm/service/task/BpmTaskServiceImpl.java | 7 +++++-- .../task/dto/ProcessInstanceVariablesDTO.java | 15 +++++++++++++++ .../mapper/task/BpmProcessInstanceExtMapper.xml | 7 +++++++ 4 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/dto/ProcessInstanceVariablesDTO.java diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/task/BpmProcessInstanceExtMapper.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/task/BpmProcessInstanceExtMapper.java index bd1b3a53..e8c4b00d 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/task/BpmProcessInstanceExtMapper.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/task/BpmProcessInstanceExtMapper.java @@ -4,14 +4,18 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; +import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore; import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.*; import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmProcessDefinitionExtDO; import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmProcessInstanceExtDO; +import cn.iocoder.yudao.module.bpm.service.task.dto.ProcessInstanceVariablesDTO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.Arrays; import java.util.List; +import java.util.Map; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; @@ -113,4 +117,7 @@ public interface BpmProcessInstanceExtMapper extends BaseMapperX getProcessInstanceResultStatusStatisticsGroupTime(BpmProcessInstanceStatisticsReqVO pageReqVO); + + @TenantIgnore + List selectFormVariables(@Param("processInstanceId") String processInstanceId); } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java index 08c8dfc6..3207f91e 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java @@ -33,6 +33,7 @@ import cn.iocoder.yudao.module.bpm.service.oa.BpmOAEntryService; import cn.iocoder.yudao.module.bpm.service.oa.BpmOARegularService; import cn.iocoder.yudao.module.bpm.service.oa.BpmOASalaryService; import cn.iocoder.yudao.module.bpm.service.oa.BpmOASealService; +import cn.iocoder.yudao.module.bpm.service.task.dto.ProcessInstanceVariablesDTO; import cn.iocoder.yudao.module.system.api.dept.DeptApi; import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; import cn.iocoder.yudao.module.system.api.user.AdminUserApi; @@ -499,7 +500,8 @@ public class BpmTaskServiceImpl implements BpmTaskService { * 判定流程的走向,这里是流程审核节点(就是流程设计中的任意审核节点) * 根据当前审核人的岗位判定流程走向 */ - Map paramMap = processInstanceExtMapper.selectOne(BpmProcessInstanceExtDO::getProcessInstanceId, instance.getProcessInstanceId()).getFormVariables(); + List variables = processInstanceExtMapper.selectFormVariables(instance.getProcessInstanceId()); + Map paramMap = variables.stream().collect(Collectors.toMap(ProcessInstanceVariablesDTO::getName, ProcessInstanceVariablesDTO::getValue)); // 获得审批人User AdminUserRespDTO examineUser = adminUserApi.getUser(userId).getCheckedData(); @@ -520,8 +522,9 @@ public class BpmTaskServiceImpl implements BpmTaskService { //根据审批人用户ID,获取审批人 担任的负责人的部门信息 List deptRespDTOs = deptApi.getDeptByLeaderId(userId).getCheckedData(); - // 设置审批人所在部门的负责人 + // 设置审批人所在部门的负责人和部门层级 paramMap.put("leader_id", examineDept.getLeaderUserId().toString()); + paramMap.put("level", examineDept.getLevel().toString()); //遍历查找, 发起人的上级部门 for (DeptRespDTO deptRespDTO : deptRespDTOs) { if (paramMap.get("dept_flag").toString().contains(deptRespDTO.getFlag())) { diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/dto/ProcessInstanceVariablesDTO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/dto/ProcessInstanceVariablesDTO.java new file mode 100644 index 00000000..e1dad337 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/dto/ProcessInstanceVariablesDTO.java @@ -0,0 +1,15 @@ +package cn.iocoder.yudao.module.bpm.service.task.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "流程Variables Request VO") +@Data +public class ProcessInstanceVariablesDTO { + + @Schema(description = "流程变量的key") + private String name; + + @Schema(description = "流程变量的值") + private String value; +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/task/BpmProcessInstanceExtMapper.xml b/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/task/BpmProcessInstanceExtMapper.xml index 95b4ddf7..f260a1c1 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/task/BpmProcessInstanceExtMapper.xml +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/task/BpmProcessInstanceExtMapper.xml @@ -106,5 +106,12 @@ GROUP BY name,DATE_FORMAT( create_time, '%Y-%m-%d' ); +