Browse Source

feat(adm-diagram): 新增系统类下的系统类型对应的所有模板接口,以树状结构返回

liyang 3 years ago
parent
commit
e2b042a5ee

+ 11 - 0
adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/controller/DiagramController.java

@@ -108,6 +108,17 @@ public class DiagramController {
     }
 
     /**
+     * 根据系统类获取系统类型下的模板列表  以树状结构数据返回
+     *
+     * @param diagram diagram.getSystem() 参数
+     * @return 列表
+     */
+    @PostMapping("/systemType/template")
+    public CommonResult<List<ObjectNode>> loadSystemTypeTemplate(@RequestBody Diagram diagram) {
+        return ResultHelper.multi(dataStrategy.loadSystemTypeTemplate(diagram));
+    }
+
+    /**
      * 根据系统图类型获取模板列表
      *
      * @param diagramType 系统图类型

+ 8 - 0
adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/core/DataStrategy.java

@@ -79,4 +79,12 @@ public interface DataStrategy {
      * @return 列表
      */
     List<ObjectNode> loadMajorSystemInstance();
+
+    /**
+     * 根据系统类获取系统类型下的模板列表  以树状结构数据返回
+     *
+     * @param diagram diagram.getSystem() 参数
+     * @return
+     */
+    List<ObjectNode> loadSystemTypeTemplate(Diagram diagram);
 }

+ 35 - 0
adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/core/impl/DataStrategyImpl.java

@@ -598,4 +598,39 @@ public class DataStrategyImpl implements DataStrategy {
         }));
         return majorNodes;
     }
+
+    /**
+     * 根据系统类获取系统类型下的模板列表  以树状结构数据返回
+     *
+     * @param diagram diagram.getSystem() 参数
+     * @return
+     */
+    @Override
+    public List<ObjectNode> loadSystemTypeTemplate(Diagram diagram) {
+        if (diagram == null || StrUtil.isBlank(diagram.getSystem())) {
+            throw new BusinessException(ResponseCode.A0400.getCode(), "系统类[system]不能为空");
+        }
+        String system = diagram.getSystem();
+        List<DiagramType> diagramTypes = diagramTypeMapper.getDiagramTypes();
+        //符合system的系统图类型数据
+        List<DiagramType> diagramTypeList = Optional.ofNullable(diagramTypes).map(types -> types.stream().filter(diagramType ->
+                diagramType.getDSystem().equalsIgnoreCase(system)).collect(Collectors.toList())).orElse(new ArrayList<>());
+
+        List<TemplateEntity> templates = templateMapper.getTemplates();
+        List<ObjectNode> objectNodes = JsonNodeUtils.toListNode(diagramTypeList, null, null);
+        Optional.ofNullable(objectNodes).ifPresent(nodes -> nodes.forEach(node -> {
+            JsonNode jsonNode = node.get(Constants.CODE);
+            ArrayNode children = node.putArray(Constants.CHILDREN);
+            if (jsonNode != null) {
+                List<TemplateEntity> templateEntities = templates.stream().filter(templateEntity ->
+                        templateEntity.getDiagramType().equalsIgnoreCase(jsonNode.asText())).collect(Collectors.toList());
+                if (CollectionUtil.isNotEmpty(templateEntities)) {
+                    List<ObjectNode> templateNodes = JsonNodeUtils.toListNode(templateEntities, null, null);
+                    children.addAll(templateNodes);
+                }
+            }
+        }));
+
+        return objectNodes;
+    }
 }

+ 5 - 0
adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/demo/DemoDataStrategy.java

@@ -386,4 +386,9 @@ public class DemoDataStrategy implements DataStrategy {
 	public List<ObjectNode> loadMajorSystemInstance() {
 		return null;
 	}
+
+	@Override
+	public List<ObjectNode> loadSystemTypeTemplate(Diagram diagram) {
+		return null;
+	}
 }