فهرست منبع

update 添加抄送设置和变量枚举,优化扩展节点配置逻辑

AprilWind 10 ماه پیش
والد
کامیت
aa76859a05

+ 20 - 0
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/CopySettingEnum.java

@@ -0,0 +1,20 @@
+package org.dromara.workflow.common.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 抄送设置枚举
+ *
+ * @author AprilWind
+ */
+@Getter
+@AllArgsConstructor
+public enum CopySettingEnum implements NodeExtEnum {
+    ;
+    private final String label;
+    private final String value;
+    private final boolean selected;
+
+}
+

+ 20 - 0
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/VariablesEnum.java

@@ -0,0 +1,20 @@
+package org.dromara.workflow.common.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 变量枚举
+ *
+ * @author AprilWind
+ */
+@Getter
+@AllArgsConstructor
+public enum VariablesEnum implements NodeExtEnum {
+    ;
+    private final String label;
+    private final String value;
+    private final boolean selected;
+
+}
+

+ 52 - 36
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwNodeExtServiceImpl.java

@@ -13,7 +13,9 @@ import org.dromara.warm.flow.ui.service.NodeExtService;
 import org.dromara.warm.flow.ui.vo.NodeExt;
 import org.dromara.workflow.common.ConditionalOnEnable;
 import org.dromara.workflow.common.enums.ButtonPermissionEnum;
+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.service.IFlwNodeExtService;
 import org.springframework.stereotype.Service;
@@ -36,14 +38,35 @@ public class FlwNodeExtServiceImpl implements NodeExtService, IFlwNodeExtService
     /**
      * 存储不同 dictType 对应的配置信息
      */
-    private static final Map<String, ButtonPermission> CHILD_NODE_MAP = new HashMap<>();
-
-    record ButtonPermission(String label, Integer type, Boolean must, Boolean multiple) {
-    }
+    private static final Map<String, Map<String, Object>> CHILD_NODE_MAP;
 
     static {
-        CHILD_NODE_MAP.put(ButtonPermissionEnum.class.getSimpleName(),
-            new ButtonPermission("权限按钮", 4, false, true));
+        CHILD_NODE_MAP = Map.of(
+            CopySettingEnum.class.getSimpleName(),
+            Map.of(
+                "label", "抄送对象",
+                "type", 2,
+                "must", false,
+                "multiple", false,
+                "desc", "设置该节点的抄送办理人"
+            ),
+            VariablesEnum.class.getSimpleName(),
+            Map.of(
+                "label", "自定义参数",
+                "type", 2,
+                "must", false,
+                "multiple", false,
+                "desc", "节点执行时可以使用的自定义参数"
+            ),
+            ButtonPermissionEnum.class.getSimpleName(),
+            Map.of(
+                "label", "权限按钮",
+                "type", 4,
+                "must", false,
+                "multiple", true,
+                "desc", "控制该节点的按钮权限"
+            )
+        );
     }
 
     private final DictService dictService;
@@ -56,6 +79,9 @@ public class FlwNodeExtServiceImpl implements NodeExtService, IFlwNodeExtService
     @Override
     public List<NodeExt> getNodeExt() {
         List<NodeExt> nodeExtList = new ArrayList<>();
+        // 构建基础设置页面
+        nodeExtList.add(buildNodeExt("wf_basic_tab", "基础设置", 1,
+            List.of(CopySettingEnum.class, VariablesEnum.class)));
         // 构建按钮权限页面
         nodeExtList.add(buildNodeExt("wf_button_tab", "权限", 2,
             List.of(ButtonPermissionEnum.class)));
@@ -105,9 +131,20 @@ public class FlwNodeExtServiceImpl implements NodeExtService, IFlwNodeExtService
             return null;
         }
         String simpleName = enumClass.getSimpleName();
-        NodeExt.ChildNode childNode = buildChildNodeMap(simpleName);
+        NodeExt.ChildNode childNode = new NodeExt.ChildNode();
+        Map<String, Object> map = CHILD_NODE_MAP.get(simpleName);
         // 编码,此json中唯
         childNode.setCode(simpleName);
+        // label名称
+        childNode.setLabel(Convert.toStr(map.get("label")));
+        // 1:输入框 2:文本域 3:下拉框 4:选择框
+        childNode.setType(Convert.toInt(map.get("type"), 1));
+        // 是否必填
+        childNode.setMust(Convert.toBool(map.get("must"), false));
+        // 是否多选
+        childNode.setMultiple(Convert.toBool(map.get("multiple"), true));
+        // 描述
+        childNode.setDesc(Convert.toStr(map.get("desc"), null));
         // 字典,下拉框和复选框时用到
         childNode.setDict(Arrays.stream(enumClass.getEnumConstants())
             .map(NodeExtEnum.class::cast)
@@ -128,12 +165,18 @@ public class FlwNodeExtServiceImpl implements NodeExtService, IFlwNodeExtService
         if (ObjectUtil.isNull(dictTypeDTO)) {
             return null;
         }
-        NodeExt.ChildNode childNode = buildChildNodeMap(dictType);
+        NodeExt.ChildNode childNode = new NodeExt.ChildNode();
         // 编码,此json中唯一
         childNode.setCode(dictType);
         // label名称
         childNode.setLabel(dictTypeDTO.getDictName());
-        // 描述
+        // 1:输入框 2:文本域 3:下拉框 4:选择框
+        childNode.setType(3);
+        // 是否必填
+        childNode.setMust(false);
+        // 是否多选
+        childNode.setMultiple(true);
+        // 描述 (可根据描述参数解析更多配置,如type,must,multiple等)
         childNode.setDesc(dictTypeDTO.getRemark());
         // 字典,下拉框和复选框时用到
         childNode.setDict(dictService.getDictData(dictType)
@@ -143,33 +186,6 @@ public class FlwNodeExtServiceImpl implements NodeExtService, IFlwNodeExtService
         return childNode;
     }
 
-    /**
-     * 根据 CHILD_NODE_MAP 中的配置信息,构建一个基本的 ChildNode 对象
-     * 该方法用于设置 ChildNode 的常规属性,例如 label、type、是否必填、是否多选等
-     *
-     * @param key CHILD_NODE_MAP 的 key
-     * @return 返回构建好的 ChildNode 对象
-     */
-    private NodeExt.ChildNode buildChildNodeMap(String key) {
-        NodeExt.ChildNode childNode = new NodeExt.ChildNode();
-        ButtonPermission bp = CHILD_NODE_MAP.get(key);
-        if (bp == null) {
-            childNode.setType(1);
-            childNode.setMust(false);
-            childNode.setMultiple(true);
-            return childNode;
-        }
-        // label名称
-        childNode.setLabel(bp.label());
-        // 1:输入框 2:输入框 3:下拉框 4:选择框
-        childNode.setType(bp.type());
-        // 是否必填
-        childNode.setMust(bp.must());
-        // 是否多选
-        childNode.setMultiple(bp.multiple());
-        return childNode;
-    }
-
     /**
      * 从扩展属性构建按钮权限列表:根据 ext 中记录的权限值,标记每个按钮是否勾选
      *