From aa76859a056587e97b9f91e441e16bb5a6f82b61 Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Thu, 28 Aug 2025 15:00:32 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E6=B7=BB=E5=8A=A0=E6=8A=84=E9=80=81?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E5=92=8C=E5=8F=98=E9=87=8F=E6=9E=9A=E4=B8=BE?= =?UTF-8?q?=EF=BC=8C=E4=BC=98=E5=8C=96=E6=89=A9=E5=B1=95=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/enums/CopySettingEnum.java | 20 +++++ .../workflow/common/enums/VariablesEnum.java | 20 +++++ .../service/impl/FlwNodeExtServiceImpl.java | 88 +++++++++++-------- 3 files changed, 92 insertions(+), 36 deletions(-) create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/CopySettingEnum.java create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/VariablesEnum.java diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/CopySettingEnum.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/CopySettingEnum.java new file mode 100644 index 000000000..a74af3b2d --- /dev/null +++ b/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; + +} + diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/VariablesEnum.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/VariablesEnum.java new file mode 100644 index 000000000..dbd54ed54 --- /dev/null +++ b/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; + +} + 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 fca21a367..f5e712757 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 @@ -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 CHILD_NODE_MAP = new HashMap<>(); - - record ButtonPermission(String label, Integer type, Boolean must, Boolean multiple) { - } + private static final Map> 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 getNodeExt() { List 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 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 中记录的权限值,标记每个按钮是否勾选 *