diff --git a/pom.xml b/pom.xml index b460f737a..95b550e70 100644 --- a/pom.xml +++ b/pom.xml @@ -49,7 +49,7 @@ 8.7.2-20250101 - 1.7.2 + 1.7.3-m1 3.2.2 diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/WorkflowPermissionHandler.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/WorkflowPermissionHandler.java index 53dbd20ed..f9ede15ce 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/WorkflowPermissionHandler.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/WorkflowPermissionHandler.java @@ -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 convertPermissions(List permissions) { + if (CollUtil.isNotEmpty(permissions)) { + permissions = flwCommonService.buildUser(permissions); + } + return permissions; + } } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java index 4765d8216..a5b5d4d1d 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java @@ -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 permissionList = flowTask.getPermissionList(); - if (CollUtil.isNotEmpty(permissionList)) { - List newUserList = flwCommonService.buildUser(permissionList); - flowTask.setPermissionList(newUserList); - } } // 如果是申请节点,则把启动人添加到办理人 if (flowTask.getNodeCode().equals(applyNodeCode)) { diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java index 40ac21c0d..dcf123689 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java @@ -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); } /**