优化流程实例变量获取方式

- 新增 selectFormVariables 方法,直接获取流程实例变量
- 修改 getProcessInstanceExtDO 方法中的变量获取逻辑
- 优化代码结构,提高可维护性
This commit is contained in:
furongxin 2024-10-15 16:34:39 +08:00
parent 549e13267c
commit 51bb4c20a0
4 changed files with 34 additions and 2 deletions

View File

@ -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<BpmProcessInsta
* @return
*/
List<BpmProcessInstanceResultStatusStatisticsGroupTimeVO> getProcessInstanceResultStatusStatisticsGroupTime(BpmProcessInstanceStatisticsReqVO pageReqVO);
@TenantIgnore
List<ProcessInstanceVariablesDTO> selectFormVariables(@Param("processInstanceId") String processInstanceId);
}

View File

@ -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<String, Object> paramMap = processInstanceExtMapper.selectOne(BpmProcessInstanceExtDO::getProcessInstanceId, instance.getProcessInstanceId()).getFormVariables();
List<ProcessInstanceVariablesDTO> variables = processInstanceExtMapper.selectFormVariables(instance.getProcessInstanceId());
Map<String, Object> 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<DeptRespDTO> 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())) {

View File

@ -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;
}

View File

@ -106,5 +106,12 @@
GROUP BY name,DATE_FORMAT( create_time, '%Y-%m-%d' );
</select>
<select id="selectFormVariables" resultType="cn.iocoder.yudao.module.bpm.service.task.dto.ProcessInstanceVariablesDTO">
SELECT
NAME_ AS name,
TEXT_ AS value
FROM act_ru_variable
WHERE PROC_INST_ID_ = #{processInstanceId}
</select>
</mapper>