From a002a4e7a1e1622481a4ade1033c210279a11a24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=99=93=E5=8D=8E?= <290631660@qq.com> Date: Tue, 27 May 2025 09:02:05 +0000 Subject: [PATCH] =?UTF-8?q?!690=20=E6=96=B0=E5=A2=9E=E9=80=9A=E8=BF=87?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=E6=98=BE=E7=A4=BA=E6=B5=81=E7=A8=8B=E5=9B=BE?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=E5=92=8C=E6=96=B0=E5=A2=9E=E5=8A=9E=E7=90=86?= =?UTF-8?q?=E4=BA=BA=E8=BD=AC=E6=8D=A2=E6=8E=A5=E5=8F=A3=20*=20feat=20?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=80=9A=E8=BF=87=E5=89=8D=E7=AB=AF=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E6=B5=81=E7=A8=8B=E5=9B=BE=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../handler/WorkflowPermissionHandler.java | 19 ++++++++++++++++--- .../listener/WorkflowGlobalListener.java | 7 ------- .../service/impl/FlwInstanceServiceImpl.java | 4 +--- 4 files changed, 18 insertions(+), 14 deletions(-) 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); } /**