mirror of
				https://github.com/dromara/RuoYi-Vue-Plus.git
				synced 2025-11-04 16:23:42 +08:00 
			
		
		
		
	@@ -3,11 +3,14 @@ package org.dromara.workflow.handler;
 | 
			
		||||
import cn.hutool.core.collection.CollUtil;
 | 
			
		||||
import lombok.RequiredArgsConstructor;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.dromara.common.core.domain.dto.UserDTO;
 | 
			
		||||
import org.dromara.common.core.utils.StreamUtils;
 | 
			
		||||
import org.dromara.common.core.utils.StringUtils;
 | 
			
		||||
import org.dromara.common.satoken.utils.LoginHelper;
 | 
			
		||||
import org.dromara.warm.flow.core.dto.FlowParams;
 | 
			
		||||
import org.dromara.warm.flow.core.handler.PermissionHandler;
 | 
			
		||||
import org.dromara.workflow.common.ConditionalOnEnable;
 | 
			
		||||
import org.dromara.workflow.service.IFlwCommonService;
 | 
			
		||||
import org.dromara.workflow.service.IFlwTaskAssigneeService;
 | 
			
		||||
import org.springframework.stereotype.Component;
 | 
			
		||||
 | 
			
		||||
import java.util.Collections;
 | 
			
		||||
@@ -24,7 +27,7 @@ import java.util.List;
 | 
			
		||||
@Slf4j
 | 
			
		||||
public class WorkflowPermissionHandler implements PermissionHandler {
 | 
			
		||||
 | 
			
		||||
    private final IFlwCommonService flwCommonService;
 | 
			
		||||
    private final IFlwTaskAssigneeService flwTaskAssigneeService;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 办理人权限标识,比如用户,角色,部门等,用于校验是否有权限办理任务
 | 
			
		||||
@@ -51,9 +54,11 @@ public class WorkflowPermissionHandler implements PermissionHandler {
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<String> convertPermissions(List<String> permissions) {
 | 
			
		||||
        if (CollUtil.isNotEmpty(permissions)) {
 | 
			
		||||
            permissions = flwCommonService.buildUser(permissions);
 | 
			
		||||
        if (CollUtil.isEmpty(permissions)) {
 | 
			
		||||
            return permissions;
 | 
			
		||||
        }
 | 
			
		||||
        return permissions;
 | 
			
		||||
        String storageIds = CollUtil.join(permissions, StringUtils.SEPARATOR);
 | 
			
		||||
        List<UserDTO> users = flwTaskAssigneeService.fetchUsersByStorageIds(storageIds);
 | 
			
		||||
        return StreamUtils.toList(users, userDTO -> String.valueOf(userDTO.getUserId()));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -9,8 +9,6 @@ import org.dromara.workflow.domain.bo.FlowTaskBo;
 | 
			
		||||
import org.dromara.workflow.domain.vo.FlowHisTaskVo;
 | 
			
		||||
import org.dromara.workflow.domain.vo.FlowTaskVo;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 任务信息Mapper接口
 | 
			
		||||
@@ -29,14 +27,6 @@ public interface FlwTaskMapper {
 | 
			
		||||
     */
 | 
			
		||||
    Page<FlowTaskVo> getListRunTask(@Param("page") Page<FlowTaskVo> page, @Param(Constants.WRAPPER) Wrapper<FlowTaskBo> queryWrapper);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获取待办信息
 | 
			
		||||
     *
 | 
			
		||||
     * @param queryWrapper 条件
 | 
			
		||||
     * @return 结果
 | 
			
		||||
     */
 | 
			
		||||
    List<FlowTaskVo> getListRunTask(@Param(Constants.WRAPPER) Wrapper<FlowTaskBo> queryWrapper);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获取已办
 | 
			
		||||
     *
 | 
			
		||||
 
 | 
			
		||||
@@ -9,14 +9,6 @@ import java.util.List;
 | 
			
		||||
 */
 | 
			
		||||
public interface IFlwCommonService {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 构建工作流用户
 | 
			
		||||
     *
 | 
			
		||||
     * @param permissionList 办理用户
 | 
			
		||||
     * @return 用户
 | 
			
		||||
     */
 | 
			
		||||
    List<String> buildUser(List<String> permissionList);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 发送消息
 | 
			
		||||
     *
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,6 @@ import org.dromara.warm.flow.orm.entity.FlowTask;
 | 
			
		||||
import org.dromara.workflow.common.ConditionalOnEnable;
 | 
			
		||||
import org.dromara.workflow.common.enums.MessageTypeEnum;
 | 
			
		||||
import org.dromara.workflow.service.IFlwCommonService;
 | 
			
		||||
import org.dromara.workflow.service.IFlwTaskAssigneeService;
 | 
			
		||||
import org.dromara.workflow.service.IFlwTaskService;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
 | 
			
		||||
@@ -40,26 +39,6 @@ import java.util.stream.Collectors;
 | 
			
		||||
public class FlwCommonServiceImpl implements IFlwCommonService {
 | 
			
		||||
    private final NodeService nodeService;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 构建工作流用户
 | 
			
		||||
     *
 | 
			
		||||
     * @param permissionList 办理用户
 | 
			
		||||
     * @return 用户
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<String> buildUser(List<String> permissionList) {
 | 
			
		||||
        if (CollUtil.isEmpty(permissionList)) {
 | 
			
		||||
            return List.of();
 | 
			
		||||
        }
 | 
			
		||||
        IFlwTaskAssigneeService taskAssigneeService = SpringUtils.getBean(IFlwTaskAssigneeService.class);
 | 
			
		||||
        String processedBys = CollUtil.join(permissionList,  StringUtils.SEPARATOR);
 | 
			
		||||
        // 根据 processedBy 前缀判断处理人类型,分别获取用户列表
 | 
			
		||||
        List<UserDTO> users = taskAssigneeService.fetchUsersByStorageIds(processedBys);
 | 
			
		||||
 | 
			
		||||
        return StreamUtils.toList(users, userDTO -> String.valueOf(userDTO.getUserId()));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 发送消息
 | 
			
		||||
     *
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user