Quellcode durchsuchen

Revert "update 添加 FlowCopyVo 类,优化抄送对象处理逻辑"

This reverts commit e5e8d305d2bc4b86cb797b9d8febfe9c7f87d3e0.
疯狂的狮子Li vor 10 Monaten
Ursprung
Commit
cfa67fcd8c

+ 0 - 36
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowCopyVo.java

@@ -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;
-    }
-
-}

+ 1 - 1
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java

@@ -192,7 +192,7 @@ public class FlowTaskVo implements Serializable {
      * <p>
      * 根据扩展属性中 CopySettingEnum 类型的数据生成,存储需要抄送的对象 ID
      */
-    private List<FlowCopyVo> copyList;
+    private List<FlowCopyBo> copyList;
 
     /**
      * 自定义参数 Map

+ 3 - 2
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<ButtonPermissionVo> buttonPermissions;
 
     /**
-     * 抄送对象
+     * 抄送对象 ID 集合
      * <p>
      * 根据扩展属性中 CopySettingEnum 类型的数据生成,存储需要抄送的对象 ID
      */
-    private List<FlowCopyVo> flowCopyList;
+    private Set<String> copySettings;
 
     /**
      * 自定义参数 Map

+ 17 - 7
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<String, Object> variable = listenerVariable.getVariable();
-
-            if (CollUtil.isNotEmpty(nodeExt.getFlowCopyList())) {
-                variable.put(FlowConstant.FLOW_COPY_LIST, nodeExt.getFlowCopyList());
+            Set<String> copyList = nodeExt.getCopySettings();
+            if (CollUtil.isNotEmpty(copyList)) {
+                List<FlowCopyBo> 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<FlowCopyBo> flowCopyList = MapUtil.get(variable, FlowConstant.FLOW_COPY_LIST, new TypeReference<>() {
-            });
+            List<FlowCopyBo> flowCopyList = MapUtil.get(variable, FlowConstant.FLOW_COPY_LIST, new TypeReference<>() {});
             // 添加抄送人
             flwTaskService.setCopy(task, flowCopyList);
         }
         if (variable.containsKey(FlowConstant.MESSAGE_TYPE)) {
-            List<String> messageType = MapUtil.get(variable, FlowConstant.MESSAGE_TYPE, new TypeReference<>() {
-            });
+            List<String> messageType = MapUtil.get(variable, FlowConstant.MESSAGE_TYPE, new TypeReference<>() {});
             String notice = MapUtil.getStr(variable, FlowConstant.MESSAGE_NOTICE);
             // 消息通知
             if (CollUtil.isNotEmpty(messageType)) {

+ 2 - 5
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<String> userIds = StringUtils.str2Set(value, StringUtils.SEPARATOR);
-                List<FlowCopyVo> 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

+ 12 - 3
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<FlowCopyVo> flowCopyList = nodeExtVo.getFlowCopyList();
-        flowTaskVo.setCopyList(CollUtil.isEmpty(flowCopyList) ? Collections.emptyList() : flowCopyList);
+        if (CollUtil.isNotEmpty(nodeExtVo.getCopySettings())) {
+            List<FlowCopyBo> 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())));