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);
}
/**