update 更新warm-flow版本到1.6.7-M2,权限按钮改为枚举类

master
AprilWind 10 months ago
parent 8763bfa3d3
commit c0e0b41d13

@ -50,7 +50,7 @@
<!-- 面向运行时的D-ORM依赖 --> <!-- 面向运行时的D-ORM依赖 -->
<anyline.version>8.7.2-20250101</anyline.version> <anyline.version>8.7.2-20250101</anyline.version>
<!--工作流配置--> <!--工作流配置-->
<warm-flow.version>1.6.7-M1</warm-flow.version> <warm-flow.version>1.6.7-M2</warm-flow.version>
<!-- 插件版本 --> <!-- 插件版本 -->
<maven-jar-plugin.version>3.2.2</maven-jar-plugin.version> <maven-jar-plugin.version>3.2.2</maven-jar-plugin.version>

@ -0,0 +1,30 @@
package org.dromara.workflow.common.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
*
*
* @author AprilWind
*/
@Getter
@AllArgsConstructor
public enum ButtonPermissionEnum implements NodeExtEnum {
/**
*
*/
APPROVE("是否弹窗选人", "1", false),
/**
*
*/
REJECT("是否能委托", "2", false);
private final String label;
private final String value;
private final boolean selected;
}

@ -0,0 +1,26 @@
package org.dromara.workflow.common.enums;
/**
*
*
* @author AprilWind
*/
public interface NodeExtEnum {
/**
* label
*/
String getLabel();
/**
*
*/
String getValue();
/**
*
*/
boolean isSelected();
}

@ -10,12 +10,11 @@ import org.dromara.common.core.utils.StringUtils;
import org.dromara.warm.flow.ui.service.NodeExtService; import org.dromara.warm.flow.ui.service.NodeExtService;
import org.dromara.warm.flow.ui.vo.NodeExt; import org.dromara.warm.flow.ui.vo.NodeExt;
import org.dromara.workflow.common.ConditionalOnEnable; import org.dromara.workflow.common.ConditionalOnEnable;
import org.dromara.workflow.common.enums.ButtonPermissionEnum;
import org.dromara.workflow.common.enums.NodeExtEnum;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* - * -
@ -39,9 +38,9 @@ public class FlwNodeExtServiceImpl implements NodeExtService {
private static final String PERMISSION_TAB_NAME = "权限"; private static final String PERMISSION_TAB_NAME = "权限";
/** /**
* *
*/ */
private static final String DICT_TYPES = "wf_button_permission"; private static final String ENUM_TYPE_PREFIX = "enum:";
/** /**
* *
@ -59,7 +58,8 @@ public class FlwNodeExtServiceImpl implements NodeExtService {
private static final Map<String, Map<String, Object>> CHILD_NODE_MAP = new HashMap<>(); private static final Map<String, Map<String, Object>> CHILD_NODE_MAP = new HashMap<>();
static { static {
CHILD_NODE_MAP.put("wf_button_permission", Map.of("type", 4, "must", false, "multiple", true)); CHILD_NODE_MAP.put(ButtonPermissionEnum.class.getName(),
Map.of("label", "权限按钮", "type", 4, "must", false, "multiple", true));
} }
private final DictService dictService; private final DictService dictService;
@ -73,26 +73,29 @@ public class FlwNodeExtServiceImpl implements NodeExtService {
public List<NodeExt> getNodeExt() { public List<NodeExt> getNodeExt() {
List<NodeExt> nodeExtList = new ArrayList<>(); List<NodeExt> nodeExtList = new ArrayList<>();
// 构建按钮权限页面 // 构建按钮权限页面
nodeExtList.add(buildNodeExt(PERMISSION_TAB, PERMISSION_TAB_NAME, TYPE_NEW_TAB, DICT_TYPES)); nodeExtList.add(buildNodeExt(PERMISSION_TAB, PERMISSION_TAB_NAME, TYPE_NEW_TAB,
ENUM_TYPE_PREFIX + ButtonPermissionEnum.class.getName()));
return nodeExtList; return nodeExtList;
} }
/** /**
* NodeExt * NodeExt
* *
* @param code json * @param code json
* @param name type * @param name type
* @param type 12 * @param type 12
* @param dictTypes * @param sourceTypes /
* @return NodeExt * @return NodeExt
*/ */
private NodeExt buildNodeExt(String code, String name, int type, String dictTypes) { private NodeExt buildNodeExt(String code, String name, int type, String sourceTypes) {
NodeExt nodeExt = new NodeExt(); NodeExt nodeExt = new NodeExt();
nodeExt.setCode(code); nodeExt.setCode(code);
nodeExt.setType(type); nodeExt.setType(type);
nodeExt.setName(name); nodeExt.setName(name);
nodeExt.setChilds(StringUtils.splitList(dictTypes) nodeExt.setChilds(StringUtils.splitList(sourceTypes)
.stream().map(this::buildChildNode).toList() .stream().map(this::buildChildNode)
.filter(ObjectUtil::isNotNull)
.toList()
); );
return nodeExt; return nodeExt;
} }
@ -100,36 +103,87 @@ public class FlwNodeExtServiceImpl implements NodeExtService {
/** /**
* ChildNode * ChildNode
* *
* @param dictType * @param sourceType
* @return ChildNode * @return ChildNode
*/ */
private NodeExt.ChildNode buildChildNode(String dictType) { private NodeExt.ChildNode buildChildNode(String sourceType) {
NodeExt.ChildNode childNode = new NodeExt.ChildNode(); return sourceType.startsWith(ENUM_TYPE_PREFIX) ?
if (StringUtils.isBlank(dictType)) { buildChildNodeFromEnum(sourceType.substring(ENUM_TYPE_PREFIX.length())) : buildChildNodeFromDict(sourceType);
}
/**
* ChildNode
*
* @param enumClassName
* @return ChildNode
*/
private NodeExt.ChildNode buildChildNodeFromEnum(String enumClassName) {
try {
Class<?> enumClass = Class.forName(enumClassName);
if (!enumClass.isEnum()) {
return null;
}
NodeExt.ChildNode childNode = buildChildNodeMap(enumClassName);
// 编码此json中唯
childNode.setCode(ENUM_TYPE_PREFIX + enumClassName);
// 字典,下拉框和复选框时用到
childNode.setDict(Arrays.stream(enumClass.getEnumConstants())
.filter(NodeExtEnum.class::isInstance)
.map(NodeExtEnum.class::cast)
.map(x ->
new NodeExt.DictItem(x.getLabel(), x.getValue(), x.isSelected())
).toList());
return childNode; return childNode;
} catch (ClassNotFoundException e) {
log.error("Enum class not found: {}", enumClassName, e);
} }
return null;
}
/**
* ChildNode
*
* @param dictType
* @return ChildNode
*/
private NodeExt.ChildNode buildChildNodeFromDict(String dictType) {
DictTypeDTO dictTypeDTO = dictService.getDictTypeDto(dictType); DictTypeDTO dictTypeDTO = dictService.getDictTypeDto(dictType);
if (ObjectUtil.isNull(dictTypeDTO)) { if (ObjectUtil.isNull(dictTypeDTO)) {
return childNode; return null;
} }
NodeExt.ChildNode childNode = buildChildNodeMap(dictType);
// 编码此json中唯一 // 编码此json中唯一
childNode.setCode(dictType); childNode.setCode(dictType);
// label名称 // label名称
childNode.setLabel(dictTypeDTO.getDictName()); childNode.setLabel(dictTypeDTO.getDictName());
// 描述 // 描述
childNode.setDesc(dictTypeDTO.getRemark()); childNode.setDesc(dictTypeDTO.getRemark());
Map<String, Object> map = CHILD_NODE_MAP.get(dictType); // 字典,下拉框和复选框时用到
childNode.setDict(dictService.getDictDataDto(dictType)
.stream().map(x ->
new NodeExt.DictItem(x.getDictLabel(), x.getDictValue(), Convert.toBool(x.getIsDefault(), false))
).toList());
return childNode;
}
/**
* CHILD_NODE_MAP ChildNode
* ChildNode labeltype
*
* @param key CHILD_NODE_MAP key
* @return ChildNode
*/
private NodeExt.ChildNode buildChildNodeMap(String key) {
NodeExt.ChildNode childNode = new NodeExt.ChildNode();
Map<String, Object> map = CHILD_NODE_MAP.get(key);
// label名称
childNode.setLabel((String) map.get("label"));
// 1输入框 2输入框 3下拉框 4选择框 // 1输入框 2输入框 3下拉框 4选择框
childNode.setType(Convert.toInt(map.get("type"), 1)); childNode.setType(Convert.toInt(map.get("type"), 1));
// 是否必填 // 是否必填
childNode.setMust(Convert.toBool(map.get("must"), false)); childNode.setMust(Convert.toBool(map.get("must"), false));
// 是否多选 // 是否多选
childNode.setMultiple(Convert.toBool(map.get("multiple"), true)); childNode.setMultiple(Convert.toBool(map.get("multiple"), true));
// 字典,下拉框和复选框时用到
childNode.setDict(dictService.getDictDataDto(dictType)
.stream().map(x ->
new NodeExt.DictItem(x.getDictLabel(), x.getDictValue(), Convert.toBool(x.getIsDefault(), false))
).toList());
return childNode; return childNode;
} }

Loading…
Cancel
Save