mirror of
				https://github.com/dromara/RuoYi-Vue-Plus.git
				synced 2025-11-04 16:23:42 +08:00 
			
		
		
		
	
							
								
								
									
										2
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								pom.xml
									
									
									
									
									
								
							@@ -49,7 +49,7 @@
 | 
			
		||||
        <!-- 面向运行时的D-ORM依赖 -->
 | 
			
		||||
        <anyline.version>8.7.2-20250101</anyline.version>
 | 
			
		||||
        <!-- 工作流配置 -->
 | 
			
		||||
        <warm-flow.version>1.7.2</warm-flow.version>
 | 
			
		||||
        <warm-flow.version>1.7.3-m1</warm-flow.version>
 | 
			
		||||
 | 
			
		||||
        <!-- 插件版本 -->
 | 
			
		||||
        <maven-jar-plugin.version>3.2.2</maven-jar-plugin.version>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,12 +1,13 @@
 | 
			
		||||
package org.dromara.workflow.handler;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.collection.CollUtil;
 | 
			
		||||
import lombok.RequiredArgsConstructor;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
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.warm.flow.core.service.impl.TaskServiceImpl;
 | 
			
		||||
import org.dromara.workflow.common.ConditionalOnEnable;
 | 
			
		||||
import org.dromara.workflow.service.IFlwCommonService;
 | 
			
		||||
import org.springframework.stereotype.Component;
 | 
			
		||||
 | 
			
		||||
import java.util.Collections;
 | 
			
		||||
@@ -23,9 +24,11 @@ import java.util.List;
 | 
			
		||||
@Slf4j
 | 
			
		||||
public class WorkflowPermissionHandler implements PermissionHandler {
 | 
			
		||||
 | 
			
		||||
    private final IFlwCommonService flwCommonService;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 审批前获取当前办理人,办理时会校验的该权限集合
 | 
			
		||||
     * 后续在{@link TaskServiceImpl#checkAuth(Task, FlowParams)} 中调用
 | 
			
		||||
     * 办理人权限标识,比如用户,角色,部门等,用于校验是否有权限办理任务
 | 
			
		||||
     * 后续在{@link FlowParams#getPermissionFlag}  中获取
 | 
			
		||||
     * 返回当前用户权限集合
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
@@ -43,4 +46,14 @@ public class WorkflowPermissionHandler implements PermissionHandler {
 | 
			
		||||
        return LoginHelper.getUserIdStr();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 转换办理人,比如设计器中预设了能办理的人,如果其中包含角色或者部门id等,可以通过此接口进行转换成用户id
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<String> convertPermissions(List<String> permissions) {
 | 
			
		||||
        if (CollUtil.isNotEmpty(permissions)) {
 | 
			
		||||
            permissions = flwCommonService.buildUser(permissions);
 | 
			
		||||
        }
 | 
			
		||||
        return permissions;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -92,13 +92,6 @@ public class WorkflowGlobalListener implements GlobalListener {
 | 
			
		||||
                String userIds = variable.get(flowTask.getNodeCode()).toString();
 | 
			
		||||
                flowTask.setPermissionList(List.of(userIds.split(StringUtils.SEPARATOR)));
 | 
			
		||||
                variable.remove(flowTask.getNodeCode());
 | 
			
		||||
            } else {
 | 
			
		||||
                // 否则把所有的角色或者部门转成对应的用户
 | 
			
		||||
                List<String> permissionList = flowTask.getPermissionList();
 | 
			
		||||
                if (CollUtil.isNotEmpty(permissionList)) {
 | 
			
		||||
                    List<String> newUserList = flwCommonService.buildUser(permissionList);
 | 
			
		||||
                    flowTask.setPermissionList(newUserList);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            // 如果是申请节点,则把启动人添加到办理人
 | 
			
		||||
            if (flowTask.getNodeCode().equals(applyNodeCode)) {
 | 
			
		||||
 
 | 
			
		||||
@@ -316,9 +316,7 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
 | 
			
		||||
        if (CollUtil.isNotEmpty(flowHisTasks)) {
 | 
			
		||||
            list.addAll(BeanUtil.copyToList(flowHisTasks, FlowHisTaskVo.class));
 | 
			
		||||
        }
 | 
			
		||||
        String flowChart = chartService.chartIns(instanceId);
 | 
			
		||||
        DefChart defChart = chartService.chartInsObj(instanceId);
 | 
			
		||||
        return Map.of("list", list, "image", flowChart,"defChart",defChart);
 | 
			
		||||
        return Map.of("list", list);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user