From cfa67fcd8c4f0a684937aac4705ca786e19fe852 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?=
<15040126243@163.com>
Date: Fri, 29 Aug 2025 01:35:27 +0000
Subject: [PATCH] =?UTF-8?q?Revert=20"update=20=E6=B7=BB=E5=8A=A0=20FlowCop?=
=?UTF-8?q?yVo=20=E7=B1=BB=EF=BC=8C=E4=BC=98=E5=8C=96=E6=8A=84=E9=80=81?=
=?UTF-8?q?=E5=AF=B9=E8=B1=A1=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91"?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This reverts commit e5e8d305d2bc4b86cb797b9d8febfe9c7f87d3e0.
---
.../workflow/domain/vo/FlowCopyVo.java | 36 -------------------
.../workflow/domain/vo/FlowTaskVo.java | 2 +-
.../dromara/workflow/domain/vo/NodeExtVo.java | 5 +--
.../listener/WorkflowGlobalListener.java | 24 +++++++++----
.../service/impl/FlwNodeExtServiceImpl.java | 7 ++--
.../service/impl/FlwTaskServiceImpl.java | 15 ++++++--
6 files changed, 35 insertions(+), 54 deletions(-)
delete mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowCopyVo.java
diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowCopyVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowCopyVo.java
deleted file mode 100644
index 67ef9e2c3..000000000
--- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowCopyVo.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package org.dromara.workflow.domain.vo;
-
-import lombok.Data;
-import org.dromara.common.translation.annotation.Translation;
-import org.dromara.common.translation.constant.TransConstant;
-
-import java.io.Serial;
-import java.io.Serializable;
-
-/**
- * 抄送对象
- *
- * @author AprilWind
- */
-@Data
-public class FlowCopyVo implements Serializable {
-
- @Serial
- private static final long serialVersionUID = 1L;
-
- /**
- * 用户id
- */
- private Long userId;
-
- /**
- * 用户名称
- */
- @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "userId")
- private String userName;
-
- public FlowCopyVo(Long userId) {
- this.userId = userId;
- }
-
-}
diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java
index 9108655a0..aee4a7f1d 100644
--- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java
+++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java
@@ -192,7 +192,7 @@ public class FlowTaskVo implements Serializable {
*
* 根据扩展属性中 CopySettingEnum 类型的数据生成,存储需要抄送的对象 ID
*/
- private List copyList;
+ private List copyList;
/**
* 自定义参数 Map
diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/NodeExtVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/NodeExtVo.java
index f10caac3b..5fb3380b4 100644
--- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/NodeExtVo.java
+++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/NodeExtVo.java
@@ -6,6 +6,7 @@ import java.io.Serial;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
+import java.util.Set;
/**
* Node 扩展属性解析结果 VO
@@ -28,11 +29,11 @@ public class NodeExtVo implements Serializable {
private List buttonPermissions;
/**
- * 抄送对象
+ * 抄送对象 ID 集合
*
* 根据扩展属性中 CopySettingEnum 类型的数据生成,存储需要抄送的对象 ID
*/
- private List flowCopyList;
+ private Set copySettings;
/**
* 自定义参数 Map
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 09e861ce8..79404b619 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
@@ -1,12 +1,15 @@
package org.dromara.workflow.listener;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.convert.Convert;
import cn.hutool.core.lang.TypeReference;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.enums.BusinessStatusEnum;
+import org.dromara.common.core.service.UserService;
+import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.warm.flow.core.dto.FlowParams;
import org.dromara.warm.flow.core.entity.Definition;
@@ -30,6 +33,7 @@ import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
/**
* 全局任务办理监听
@@ -47,6 +51,7 @@ public class WorkflowGlobalListener implements GlobalListener {
private final FlowProcessEventHandler flowProcessEventHandler;
private final IFlwCommonService flwCommonService;
private final IFlwNodeExtService nodeExtService;
+ private final UserService userService;
private final InsService insService;
/**
@@ -70,9 +75,16 @@ public class WorkflowGlobalListener implements GlobalListener {
if (StringUtils.isNotBlank(ext)) {
NodeExtVo nodeExt = nodeExtService.parseNodeExt(ext);
Map variable = listenerVariable.getVariable();
-
- if (CollUtil.isNotEmpty(nodeExt.getFlowCopyList())) {
- variable.put(FlowConstant.FLOW_COPY_LIST, nodeExt.getFlowCopyList());
+ Set copyList = nodeExt.getCopySettings();
+ if (CollUtil.isNotEmpty(copyList)) {
+ List list = StreamUtils.toList(copyList, x -> {
+ FlowCopyBo bo = new FlowCopyBo();
+ Long id = Convert.toLong(x);
+ bo.setUserId(id);
+ bo.setUserName(userService.selectUserNameById(id));
+ return bo;
+ });
+ variable.put(FlowConstant.FLOW_COPY_LIST, list);
}
if (CollUtil.isNotEmpty(nodeExt.getVariables())) {
variable.putAll(nodeExt.getVariables());
@@ -169,14 +181,12 @@ public class WorkflowGlobalListener implements GlobalListener {
}
if (variable.containsKey(FlowConstant.FLOW_COPY_LIST)) {
- List flowCopyList = MapUtil.get(variable, FlowConstant.FLOW_COPY_LIST, new TypeReference<>() {
- });
+ List flowCopyList = MapUtil.get(variable, FlowConstant.FLOW_COPY_LIST, new TypeReference<>() {});
// 添加抄送人
flwTaskService.setCopy(task, flowCopyList);
}
if (variable.containsKey(FlowConstant.MESSAGE_TYPE)) {
- List messageType = MapUtil.get(variable, FlowConstant.MESSAGE_TYPE, new TypeReference<>() {
- });
+ List messageType = MapUtil.get(variable, FlowConstant.MESSAGE_TYPE, new TypeReference<>() {});
String notice = MapUtil.getStr(variable, FlowConstant.MESSAGE_NOTICE);
// 消息通知
if (CollUtil.isNotEmpty(messageType)) {
diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwNodeExtServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwNodeExtServiceImpl.java
index 7b83ca793..b5f4c6deb 100644
--- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwNodeExtServiceImpl.java
+++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwNodeExtServiceImpl.java
@@ -7,7 +7,6 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.dto.DictTypeDTO;
import org.dromara.common.core.service.DictService;
-import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.json.utils.JsonUtils;
import org.dromara.warm.flow.ui.service.NodeExtService;
@@ -18,7 +17,6 @@ import org.dromara.workflow.common.enums.CopySettingEnum;
import org.dromara.workflow.common.enums.NodeExtEnum;
import org.dromara.workflow.common.enums.VariablesEnum;
import org.dromara.workflow.domain.vo.ButtonPermissionVo;
-import org.dromara.workflow.domain.vo.FlowCopyVo;
import org.dromara.workflow.domain.vo.NodeExtVo;
import org.dromara.workflow.service.IFlwNodeExtService;
import org.springframework.stereotype.Service;
@@ -237,9 +235,8 @@ public class FlwNodeExtServiceImpl implements NodeExtService, IFlwNodeExtService
} else if (CopySettingEnum.class.getSimpleName().equals(code)) {
// 解析抄送对象 ID 集合
- Set userIds = StringUtils.str2Set(value, StringUtils.SEPARATOR);
- List copySettings = StreamUtils.toList(userIds, x -> new FlowCopyVo(Convert.toLong(x)));
- nodeExtVo.setFlowCopyList(copySettings);
+ nodeExtVo.setCopySettings(StringUtils.str2Set(value, StringUtils.SEPARATOR));
+
} else if (VariablesEnum.class.getSimpleName().equals(code)) {
// 解析自定义参数
// 将 key=value 字符串拆分为 Map
diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java
index 96a705189..d21b978b6 100644
--- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java
+++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java
@@ -46,7 +46,6 @@ import org.dromara.workflow.common.enums.TaskAssigneeType;
import org.dromara.workflow.common.enums.TaskStatusEnum;
import org.dromara.workflow.domain.FlowInstanceBizExt;
import org.dromara.workflow.domain.bo.*;
-import org.dromara.workflow.domain.vo.FlowCopyVo;
import org.dromara.workflow.domain.vo.FlowHisTaskVo;
import org.dromara.workflow.domain.vo.FlowTaskVo;
import org.dromara.workflow.domain.vo.NodeExtVo;
@@ -602,8 +601,18 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
NodeExtVo nodeExtVo = flwNodeExtService.parseNodeExt(flowNode.getExt());
//设置按钮权限
flowTaskVo.setButtonList(nodeExtVo.getButtonPermissions());
- List flowCopyList = nodeExtVo.getFlowCopyList();
- flowTaskVo.setCopyList(CollUtil.isEmpty(flowCopyList) ? Collections.emptyList() : flowCopyList);
+ if (CollUtil.isNotEmpty(nodeExtVo.getCopySettings())) {
+ List list = StreamUtils.toList(nodeExtVo.getCopySettings(), x -> {
+ FlowCopyBo bo = new FlowCopyBo();
+ Long id = Convert.toLong(x);
+ bo.setUserId(id);
+ bo.setUserName(userService.selectUserNameById(id));
+ return bo;
+ });
+ flowTaskVo.setCopyList(list);
+ } else {
+ flowTaskVo.setCopyList(new ArrayList<>());
+ }
flowTaskVo.setVarList(nodeExtVo.getVariables());
flowTaskVo.setNodeRatio(flowNode.getNodeRatio());
flowTaskVo.setApplyNode(flowNode.getNodeCode().equals(flwCommonService.applyNodeCode(task.getDefinitionId())));