Procházet zdrojové kódy

Merge branch 'develop' of http://39.106.8.246:3003/BDTP/digital-delivery

zhaoyk před 3 roky
rodič
revize
54bfcb32fe

+ 19 - 0
adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/config/CustomThreadPoolConfig.java

@@ -0,0 +1,19 @@
+package com.persagy.adm.diagram.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.concurrent.LinkedBlockingDeque;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
+@Configuration
+public class CustomThreadPoolConfig {
+
+    @Bean("customThreadPool")
+    public ThreadPoolExecutor executor() {
+        return new ThreadPoolExecutor(4, 10,
+                2000, TimeUnit.MICROSECONDS,
+                new LinkedBlockingDeque<>(20));
+    }
+}

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

@@ -0,0 +1,268 @@
+package com.persagy.adm.diagram.core.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.persagy.adm.diagram.client.RwdClient;
+import com.persagy.adm.diagram.core.DataStrategy;
+import com.persagy.adm.diagram.core.model.Diagram;
+import com.persagy.adm.diagram.core.model.legend.Legend;
+import com.persagy.adm.diagram.core.model.template.DiagramTemplate;
+import com.persagy.adm.diagram.dao.DiagramMapper;
+import com.persagy.adm.diagram.dao.DiagramTypeMapper;
+import com.persagy.adm.diagram.dao.LegendMapper;
+import com.persagy.adm.diagram.dao.TemplateMapper;
+import com.persagy.adm.diagram.entity.*;
+import com.persagy.adm.diagram.util.ServiceUtil;
+import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.dmp.basic.model.QueryOperator;
+import com.persagy.dmp.basic.utils.JsonNodeUtils;
+import com.persagy.dmp.digital.client.DigitalObjectFacade;
+import com.persagy.dmp.digital.client.DigitalRelationFacade;
+import com.persagy.dmp.digital.entity.ObjectRelation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.cloud.client.discovery.DiscoveryClient;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.stream.Collectors;
+
+
+@Service("dataStrategyImpl")
+public class DataStrategyImpl implements DataStrategy {
+    @Autowired
+    private RwdClient rwdClient;
+    @Autowired
+    private ModelAdapter modelAdapter;
+    @Autowired
+    private ObjectMapper objectMapper;
+    @Autowired
+    private DiagramTypeMapper diagramTypeMapper;
+    @Autowired
+    private TemplateMapper templateMapper;
+    @Autowired
+    private LegendMapper legendMapper;
+    @Autowired
+    private DiagramMapper diagramMapper;
+    @Autowired
+    private DiscoveryClient discoveryClient;
+    @Autowired
+    @Qualifier("customThreadPool")
+    private ThreadPoolExecutor executor;
+
+    @Override
+    public List<DiagramType> getDiagramTypes() {
+        return diagramTypeMapper.getDiagramTypes();
+    }
+
+    @Override
+    public List<DiagramTemplate> getTemplates() {
+        List<TemplateEntity> templates = templateMapper.getTemplates();
+        if (CollectionUtil.isNotEmpty(templates)) {
+            return templates.stream().map(templateEntity ->
+                    modelAdapter.toTemplate(templateEntity)).collect(Collectors.toList());
+        }
+        return new ArrayList<>();
+    }
+
+    @Override
+    public List<DiagramTemplate> getTemplates(String diagramType) {
+        List<TemplateEntity> templates = templateMapper.getTemplatesByType(diagramType);
+        if (CollectionUtil.isNotEmpty(templates)) {
+            return templates.stream().map(templateEntity ->
+                    modelAdapter.toTemplate(templateEntity)).collect(Collectors.toList());
+        }
+        return new ArrayList<>();
+    }
+
+    @Override
+    public DiagramTemplate saveTemplate(DiagramTemplate template) {
+        TemplateEntity templateEntity = modelAdapter.toTemplateEntity(template);
+        templateMapper.saveTemplate(templateEntity);
+        return template;
+    }
+
+    @Override
+    public boolean deleteTemplate(String templateId) {
+        templateMapper.deleteByTemplateId(templateId);
+        return true;
+    }
+
+    @Override
+    public DiagramTemplate getTemplate(String templateId) {
+        TemplateEntity templateEntity = templateMapper.selectByTemplateId(templateId);
+        //TODO 没有数据返回一个空对象
+        return templateEntity != null ? modelAdapter.toTemplate(templateEntity) : new DiagramTemplate();
+    }
+
+    @Override
+    public List<Legend> getLegends(String systemCode) {
+        //TODO 这个systemCode 对应的是bt_system字段?
+        List<LegendEntity> legends = legendMapper.getLegends(systemCode);
+        if (CollectionUtil.isNotEmpty(legends)) {
+            return legends.stream().map(legendEntity ->
+                    modelAdapter.toLegend(legendEntity)).collect(Collectors.toList());
+        }
+        return new ArrayList<>();
+    }
+
+    @Override
+    public Legend saveLegend(Legend legend, String systemCode) {
+        legend.setSystem(systemCode);
+        legendMapper.saveLegend(modelAdapter.toLegendEntity(legend));
+        return legend;
+    }
+
+    @Override
+    public boolean deleteLegend(String legendId, String systemCode) {
+        return legendMapper.deleteLegend(legendId, systemCode);
+    }
+
+    @Override
+    public Legend getLegend(String legendId, String systemCode) {
+        LegendEntity legendEntity = legendMapper.getLegend(legendId, systemCode);
+        //TODO 没有数据返回一个空对象
+        return legendEntity == null ? new Legend() : modelAdapter.toLegend(legendEntity);
+    }
+
+    @Override
+    public List<Legend> getLegendsForEquipment(String equipmentType) {
+        String systemCode = Optional.of(equipmentType).map(s -> s.substring(0, 4)).orElse(StrUtil.EMPTY);
+        return getLegends(systemCode);
+    }
+
+    @Override
+    public List<Diagram> getDiagrams(String projectId, String systemId, String groupCode) {
+        List<DiagramEntity> diagrams = diagramMapper.getDiagrams(null, projectId, systemId, groupCode);
+        if (CollectionUtil.isNotEmpty(diagrams)) {
+            return diagrams.stream().map(diagramEntity ->
+                    modelAdapter.toDiagram(diagramEntity)).collect(Collectors.toList());
+        }
+        return new ArrayList<>();
+    }
+
+    @Override
+    public List<Diagram> getDiagrams(String diagramType, String projectId, String systemId, String groupCode) {
+        List<DiagramEntity> diagrams = diagramMapper.getDiagrams(diagramType,
+                projectId, systemId, groupCode);
+        if (CollectionUtil.isNotEmpty(diagrams)) {
+            return diagrams.stream().map(diagramEntity ->
+                    modelAdapter.toDiagram(diagramEntity)).collect(Collectors.toList());
+        }
+        return new ArrayList<>();
+    }
+
+    @Override
+    public Diagram saveDiagram(Diagram diagram) {
+        DiagramEntity diagramEntity = modelAdapter.toDiagramEntity(diagram);
+        diagramMapper.saveDiagram(diagramEntity);
+        return diagram;
+    }
+
+    @Override
+    public boolean deleteDiagram(String diagramId) {
+        return diagramMapper.deleteByDiagramId(diagramId);
+    }
+
+    @Override
+    public Diagram getDiagram(String diagramId) {
+        DiagramEntity diagramEntity = diagramMapper.getDiagram(diagramId);
+        //TODO 没有数据返回一个空对象
+        return diagramEntity == null ? new Diagram() : modelAdapter.toDiagram(diagramEntity);
+    }
+
+    @Override
+    public List<ObjectNode> loadObjectsByType(List<String> equipmentTypes, String projectId,
+                                              String systemId, String groupCode) {
+        //TODO 是否需要校验 equipmentTypes 、objectIds
+        QueryCriteria criteria = ServiceUtil.getQueryCriteria(objectMapper, "equipment");
+        ArrayNode types = criteria.getCriteria().putArray("classCode");
+        Optional.ofNullable(equipmentTypes).ifPresent(stringList ->
+                stringList.forEach(types::add));
+
+        if (StrUtil.isNotBlank(systemId)) {
+            ObjectNode on = JsonNodeFactory.instance.objectNode();
+            on.put(ObjectRelation.REL_CODE_HUM, "Sy2Eq");
+            on.put(ObjectRelation.OBJ_FROM_HUM, systemId);
+            criteria.getCriteria().set(QueryOperator.RELATION_TO.getIndex(), on);
+        }
+
+        return DigitalObjectFacade.query(groupCode, projectId, null, null, criteria);
+    }
+
+    @Override
+    public List<ObjectNode> loadRelationsByType(List<String[]> relationTypes, List<String> objectIds,
+                                                String projectId, String groupCode) {
+        //TODO 是否需要校验 relationTypes 、objectIds
+        //查询到的所有关系
+        List<ObjectRelation> allRelations = queryRelationsByObjIds(projectId, groupCode, objectIds);
+        Set<String> collect = allRelations.stream().map(ObjectRelation::getRelCode).collect(Collectors.toSet());
+        //所有关系类型
+        Set<String> types = new HashSet<>();
+        Optional.ofNullable(relationTypes).ifPresent(relations ->
+                relations.forEach(strings -> types.addAll(Arrays.asList(strings))));
+        Set<String> typeSet = types.stream().filter(Objects::nonNull).collect(Collectors.toSet());
+        //最终符合结果的关系
+        if (CollectionUtil.isNotEmpty(typeSet)) {
+            List<ObjectRelation> res = allRelations.stream().filter(objectRelation ->
+                    typeSet.contains(objectRelation.getRelCode())).collect(Collectors.toList());
+            //转换并返回
+            return JsonNodeUtils.toListNode(res, null, null);
+        }
+        return JsonNodeUtils.toListNode(allRelations, null, null);
+    }
+
+    private List<ObjectRelation> queryRelationsByObjIds(String projectId, String groupCode, List<String> objectIds) {
+        List<ObjectRelation> resultList = new ArrayList<>();
+        //obj_from
+        CompletableFuture<List<ObjectRelation>> fromFuture = CompletableFuture.supplyAsync(() -> {
+            QueryCriteria criteria = ServiceUtil.getQueryCriteria(objectMapper);
+            ArrayNode objFrom = criteria.getCriteria().putArray("objFrom");
+            Optional.ofNullable(objectIds).ifPresent(strings -> strings.forEach(objFrom::add));
+            return DigitalRelationFacade.query(groupCode, projectId, null, null, criteria);
+        }, executor);
+        //obj_to
+        CompletableFuture<List<ObjectRelation>> toFuture = CompletableFuture.supplyAsync(() -> {
+            QueryCriteria criteria = ServiceUtil.getQueryCriteria(objectMapper);
+            ArrayNode objTo = criteria.getCriteria().putArray("objTo");
+            Optional.ofNullable(objectIds).ifPresent(strings -> strings.forEach(objTo::add));
+            return DigitalRelationFacade.query(groupCode, projectId, null, null, criteria);
+        }, executor);
+
+        CompletableFuture.allOf(fromFuture, toFuture).join();
+
+        try {
+            resultList.addAll(fromFuture.get());
+            resultList.addAll(toFuture.get());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return resultList.stream().distinct().filter(Objects::nonNull).collect(Collectors.toList());
+    }
+
+    @Override
+    public List<ObjectNode> loadObjectsById(List<String> objectIds, String projectId, String groupCode) {
+        //TODO 是否需要校验 objectIds
+        QueryCriteria criteria = ServiceUtil.getQueryCriteria(objectMapper, "equipment");
+        ArrayNode arr = criteria.getCriteria().putArray("id");
+        Optional.ofNullable(objectIds).ifPresent(ids -> ids.forEach(arr::add));
+        return DigitalObjectFacade.query(groupCode, projectId, null, null, criteria);
+    }
+
+    @Override
+    public List<ObjectNode> loadRelationsById(List<String> relationIds, String projectId, String groupCode) {
+        //TODO 是否需要校验 relationIds
+        QueryCriteria criteria = ServiceUtil.getQueryCriteria(objectMapper);
+        ArrayNode nodes = criteria.getCriteria().putArray("id");
+        Optional.ofNullable(relationIds).ifPresent(ids -> ids.forEach(nodes::add));
+
+        List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, null, null, criteria);
+        return JsonNodeUtils.toListNode(result, null, null);
+    }
+}

+ 31 - 0
adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/dao/DiagramMapper.java

@@ -0,0 +1,31 @@
+package com.persagy.adm.diagram.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.persagy.adm.diagram.core.model.Diagram;
+import com.persagy.adm.diagram.entity.DiagramEntity;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 系统图类型Dao
+ *
+ * @author liyang
+ * @date 2021-12-01
+ */
+public interface DiagramMapper extends BaseMapper<DiagramEntity> {
+
+
+    //按系统图类型查询
+    List<DiagramEntity> getDiagrams(@Param("diagramType") String diagramType,
+                                    @Param("projectId") String projectId,
+                                    @Param("systemId") String systemId,
+                                    @Param("groupCode") String groupCode);
+
+    void saveDiagram(DiagramEntity diagramEntity);
+
+    boolean deleteByDiagramId(String diagramId);
+
+    DiagramEntity getDiagram(String diagramId);
+
+}

+ 23 - 0
adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/dao/DiagramTypeMapper.java

@@ -0,0 +1,23 @@
+package com.persagy.adm.diagram.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.persagy.adm.diagram.entity.DiagramType;
+
+import java.util.List;
+
+/**
+ * 系统图类型Dao
+ *
+ * @author liyang
+ * @date 2021-12-01
+ */
+public interface DiagramTypeMapper extends BaseMapper<DiagramType> {
+
+    /**
+     * 获取所有系统图类型
+     *
+     * @return 系统图类型列表
+     */
+    List<DiagramType> getDiagramTypes();
+
+}

+ 18 - 0
adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/dao/LegendMapper.java

@@ -0,0 +1,18 @@
+package com.persagy.adm.diagram.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.persagy.adm.diagram.entity.LegendEntity;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface LegendMapper extends BaseMapper<LegendEntity> {
+
+    List<LegendEntity> getLegends(String systemCode);
+
+    LegendEntity getLegend(@Param("legendId") String legendId, @Param("systemCode") String systemCode);
+
+    void saveLegend(LegendEntity legendEntity);
+
+    boolean deleteLegend(@Param("legendId") String legendId, @Param("systemCode") String systemCode);
+}

+ 19 - 0
adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/dao/TemplateMapper.java

@@ -0,0 +1,19 @@
+package com.persagy.adm.diagram.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.persagy.adm.diagram.entity.TemplateEntity;
+
+import java.util.List;
+
+public interface TemplateMapper extends BaseMapper<TemplateEntity> {
+
+    List<TemplateEntity> getTemplates();
+
+    List<TemplateEntity> getTemplatesByType(String diagramType);
+
+    void saveTemplate(TemplateEntity templateEntity);
+
+    void deleteByTemplateId(String templateId);
+
+    TemplateEntity selectByTemplateId(String templateId);
+}

+ 53 - 48
adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/entity/DiagramEntity.java

@@ -1,58 +1,63 @@
 package com.persagy.adm.diagram.entity;
 
+import com.persagy.dmp.common.model.entity.AuditableEntity;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
 
 /**
  * 系统图实体
  */
 @Data
-public class DiagramEntity {
-
-	private String id;
-
-	/**
-	 * 系统图名称
-	 */
-	private String name;
-
-	/**
-	 * 描述信息
-	 */
-	private String remark;
-
-	/**
-	 * 系统图类型编码
-	 */
-	private String type;
-
-	/**
-	 * 所属的系统类型
-	 */
-	private String system;
-
-	/**
-	 * 引用的模板id
-	 */
-	private String templateId;
-
-	/**
-	 * 项目id
-	 */
-	private String projectId;
-
-	/**
-	 * 对应的系统实例id
-	 */
-	private String systemId;
-
-	/**
-	 * 集团编码
-	 */
-	private String groupCode;
-
-	/**
-	 * 系统图内容,json格式
-	 */
-	private String diagramContent;
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class DiagramEntity extends AuditableEntity<DiagramEntity> {
+
+    private String id;
+
+    /**
+     * 系统图名称
+     */
+    private String name;
+
+    /**
+     * 描述信息
+     */
+    private String remark;
+
+    /**
+     * 系统图类型编码
+     */
+    private String type;
+
+    /**
+     * 所属的系统类型
+     */
+    private String system;
+
+    /**
+     * 引用的模板id
+     */
+    private String templateId;
+
+    /**
+     * 项目id
+     */
+    private String projectId;
+
+    /**
+     * 对应的系统实例id
+     */
+    private String systemId;
+
+    /**
+     * 集团编码
+     */
+    private String groupCode;
+
+    /**
+     * 系统图内容,json格式
+     */
+    private String diagramContent;
 
 }

+ 31 - 26
adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/entity/DiagramType.java

@@ -1,36 +1,41 @@
 package com.persagy.adm.diagram.entity;
 
+import com.persagy.dmp.common.model.entity.AuditableEntity;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
 
 /**
  * 系统图类型实体
  */
 @Data
-public class DiagramType {
-
-	/**
-	 * 所属专业
-	 */
-	private String major;
-
-	/**
-	 * 所属系统
-	 */
-	private String system;
-
-	/**
-	 * 系统图类型的编码
-	 */
-	private String code;
-
-	/**
-	 * 系统图类型的名称
-	 */
-	private String name;
-
-	/**
-	 * 系统图类型的描述
-	 */
-	private String remark;
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class DiagramType extends AuditableEntity<DiagramType> {
+
+    /**
+     * 所属专业
+     */
+    private String major;
+
+    /**
+     * 所属系统
+     */
+    private String system;
+
+    /**
+     * 系统图类型的编码
+     */
+    private String code;
+
+    /**
+     * 系统图类型的名称
+     */
+    private String name;
+
+    /**
+     * 系统图类型的描述
+     */
+    private String remark;
 
 }

+ 20 - 17
adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/entity/LegendEntity.java

@@ -1,32 +1,35 @@
 package com.persagy.adm.diagram.entity;
 
+import com.persagy.dmp.common.model.entity.AuditableEntity;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
 
 /**
  * 图例实体
  */
 @Data
-public class LegendEntity {
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class LegendEntity extends AuditableEntity<LegendEntity> {
 
-	private String id;
+    private String name;
 
-	private String name;
+    private String code;
 
-	private String code;
+    /**
+     * 描述信息
+     */
+    private String remark;
 
-	/**
-	 * 描述信息
-	 */
-	private String remark;
+    /**
+     * 所属系统代码
+     */
+    private String system;
 
-	/**
-	 * 所属系统代码
-	 */
-	private String system;
-
-	/**
-	 * 图例内容,json格式
-	 */
-	private String legendContent;
+    /**
+     * 图例内容,json格式
+     */
+    private String legendContent;
 
 }

+ 32 - 31
adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/entity/TemplateEntity.java

@@ -1,41 +1,42 @@
 package com.persagy.adm.diagram.entity;
 
+import com.persagy.dmp.common.model.entity.AuditableEntity;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
 
 /**
  * 模板实体
  */
 @Data
-public class TemplateEntity {
-
-	/**
-	 * 模板对应的系统图类型代码
-	 */
-	private String diagramType;
-
-	/**
-	 * 模板id
-	 */
-	private String id;
-
-	/**
-	 * 模板名称
-	 */
-	private String name;
-
-	/**
-	 * 模板编码
-	 */
-	private String code;
-
-	/**
-	 * 描述信息
-	 */
-	private String remark;
-
-	/**
-	 * 模板内容,json格式
-	 */
-	private String templateContent;
+
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class TemplateEntity extends AuditableEntity<TemplateEntity> {
+
+    /**
+     * 模板对应的系统图类型代码
+     */
+    private String diagramType;
+
+    /**
+     * 模板名称
+     */
+    private String name;
+
+    /**
+     * 模板编码
+     */
+    private String code;
+
+    /**
+     * 描述信息
+     */
+    private String remark;
+
+    /**
+     * 模板内容,json格式
+     */
+    private String templateContent;
 
 }

+ 76 - 0
adm-business/adm-diagram/src/main/resources/db.init/schema.sql

@@ -0,0 +1,76 @@
+-- 系统图类型
+CREATE TABLE IF NOT EXISTS `diagram_type` (
+  `id` varchar(40) NOT NULL COMMENT '主键',
+  `major` varchar(40) DEFAULT NULL COMMENT '所属专业',
+  `d_system` varchar(40) DEFAULT NULL COMMENT '所属系统',
+  `code` varchar(40) NOT NULL COMMENT '系统图类型编码',
+  `name` varchar(40) DEFAULT NULL COMMENT '系统图类型名称',
+  `remark` varchar(255) DEFAULT NULL COMMENT '系统图类型的描述',
+  `creator` varchar(32) DEFAULT NULL COMMENT '创建人',
+  `creation_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
+  `modifier` varchar(32) DEFAULT NULL COMMENT '最后修改人',
+  `modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
+  `valid` tinyint DEFAULT 1 NOT NULL COMMENT '合法标识',
+  `ts` timestamp default current_timestamp on update current_timestamp NOT NULL COMMENT '乐观锁',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB ROW_FORMAT=DYNAMIC COMMENT='系统图类型表结构';
+
+-- 系统图模板
+CREATE TABLE IF NOT EXISTS `diagram_template` (
+  `id` varchar(40) NOT NULL COMMENT '主键',
+  `diagram_type` varchar(40) NOT NULL COMMENT '模板对应的系统图类型代码',
+  `name` varchar(40) DEFAULT NULL COMMENT '模板名称',
+  `code` varchar(40) NOT NULL COMMENT '模板编码',
+  `remark` varchar(255) DEFAULT NULL COMMENT '描述信息',
+  `template_content` json DEFAULT NULL COMMENT '模板内容,json格式',
+  `creator` varchar(32) DEFAULT NULL COMMENT '创建人',
+  `creation_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
+  `modifier` varchar(32) DEFAULT NULL COMMENT '最后修改人',
+  `modified_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
+  `valid` tinyint DEFAULT 1 NOT NULL COMMENT '合法标识',
+  `ts` timestamp default current_timestamp on update current_timestamp NOT NULL COMMENT '乐观锁',
+  PRIMARY KEY (`id`) USING BTREE,
+  KEY `idx_diagram_type` (`diagram_type`) USING BTREE
+) ENGINE=InnoDB ROW_FORMAT=DYNAMIC COMMENT='系统图模板表结构';
+
+-- 系统图图例
+CREATE TABLE IF NOT EXISTS `diagram_legend` (
+  `id` varchar(40) NOT NULL COMMENT '主键',
+  `name` varchar(40) DEFAULT NULL COMMENT '图例名称',
+  `code` varchar(40) NOT NULL COMMENT '图例编码',
+  `remark` varchar(255) DEFAULT NULL COMMENT '描述信息',
+  `bt_system` varchar(40) NOT NULL COMMENT '所属系统代码',
+  `legend_content` json DEFAULT NULL COMMENT '图例内容,json格式',
+  `creator` varchar(32) DEFAULT NULL COMMENT '创建人',
+  `creation_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
+  `modifier` varchar(32) DEFAULT NULL COMMENT '最后修改人',
+  `modified_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
+  `valid` tinyint DEFAULT 1 NOT NULL COMMENT '合法标识',
+  `ts` timestamp default current_timestamp on update current_timestamp NOT NULL COMMENT '乐观锁',
+  PRIMARY KEY (`id`) USING BTREE,
+  KEY `idx_bt_system` (`bt_system`) USING BTREE,
+  KEY `idx_id_bt_system` (`id`,`bt_system`) USING BTREE
+) ENGINE=InnoDB ROW_FORMAT=DYNAMIC COMMENT='系统图图例表结构';
+
+-- 系统图
+CREATE TABLE IF NOT EXISTS `diagram` (
+  `id` varchar(40) NOT NULL COMMENT '主键',
+  `name` varchar(40) DEFAULT NULL COMMENT '系统图名称',
+  `type` varchar(40) NOT NULL COMMENT '系统图类型编码',
+  `remark` varchar(255) DEFAULT NULL COMMENT '描述信息',
+  `bt_system` varchar(40) DEFAULT NULL COMMENT '所属的系统',
+  `template_id` varchar(40) DEFAULT NULL COMMENT '引用的模板id',
+  `project_id` varchar(40) DEFAULT NULL COMMENT '项目id',
+  `system_id` varchar(40) DEFAULT NULL COMMENT '系统id',
+  `group_code` varchar(40) DEFAULT NULL COMMENT '集团编码',
+  `diagram_content` json DEFAULT NULL COMMENT '系统图内容,json格式',
+  `creator` varchar(32) DEFAULT NULL COMMENT '创建人',
+  `creation_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
+  `modifier` varchar(32) DEFAULT NULL COMMENT '最后修改人',
+  `modified_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
+  `valid` tinyint DEFAULT 1 NOT NULL COMMENT '合法标识',
+  `ts` timestamp default current_timestamp on update current_timestamp NOT NULL COMMENT '乐观锁',
+  PRIMARY KEY (`id`) USING BTREE,
+  KEY `idx_type_project_id_system_id` (`type`,`project_id`,`system_id`) USING BTREE,
+  KEY `idx_project_id_system_id` (`project_id`,`system_id`) USING BTREE
+) ENGINE=InnoDB ROW_FORMAT=DYNAMIC COMMENT='系统图表结构';

+ 73 - 0
adm-business/adm-diagram/src/main/resources/mapper/Diagram.xml

@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.persagy.adm.diagram.dao.DiagramMapper">
+
+    <resultMap id="diagramBaseMap" type="com.persagy.adm.diagram.entity.DiagramEntity">
+        <id column="id" property="id" jdbcType="VARCHAR"/>
+        <result column="name" property="name" jdbcType="VARCHAR"/>
+        <result column="remark" property="remark" jdbcType="VARCHAR"/>
+        <result column="type" property="type" jdbcType="VARCHAR"/>
+        <result column="bt_system" property="system" jdbcType="VARCHAR"/>
+        <result column="template_id" property="templateId" jdbcType="VARCHAR"/>
+        <result column="project_id" property="projectId" jdbcType="VARCHAR"/>
+        <result column="system_id" property="systemId" jdbcType="VARCHAR"/>
+        <result column="group_code" property="groupCode" jdbcType="VARCHAR"/>
+        <result column="diagram_content" property="diagramContent" jdbcType="VARCHAR"/>
+        <result column="creator" property="creator" jdbcType="VARCHAR"/>
+        <result column="creation_time" property="creationTime" jdbcType="CHAR"/>
+        <result column="modifier" property="modifier" jdbcType="VARCHAR"/>
+        <result column="modified_time" property="modifiedTime" jdbcType="CHAR"/>
+        <result column="valid" property="valid" jdbcType="TINYINT"/>
+        <result column="ts" property="ts" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <sql id="baseSql">
+        id,name,remark,type,bt_system,template_id,project_id,system_id,group_code,diagram_content,
+        creator,creation_time,modifier,modified_time,valid,ts
+    </sql>
+
+    <insert id="saveDiagram">
+        INSERT INTO diagram
+        (id,name,remark,type,bt_system,template_id,
+        project_id,system_id,group_code,diagram_content,
+        creator,creation_time,modifier,modified_time)
+        VALUES
+        (#{id},#{name},#{remark},#{type},#{system},#{templateId},
+        #{projectId},#{systemId},#{groupCode},#{diagramContent},
+        #{creator}, #{creationTime},#{modifier},#{modifiedTime})
+    </insert>
+
+    <delete id="deleteByDiagramId">
+        DELETE FROM diagram
+        WHERE id=#{diagramId}
+    </delete>
+
+    <select id="getDiagram" resultMap="diagramBaseMap">
+        SELECT
+        <include refid="baseSql"/>
+        FROM diagram
+        WHERE id=#{diagramId}
+    </select>
+
+    <select id="getDiagrams" resultMap="diagramBaseMap">
+        SELECT
+        <include refid="baseSql"/>
+        FROM diagram
+        WHERE 1=1
+        <if test="null != diagramType and diagramType.length > 0">
+            AND type=#{diagramType}
+        </if>
+        <if test="null != projectId and projectId.length > 0">
+            AND project_id=#{projectId}
+        </if>
+        <if test="null != systemId and systemId.length > 0">
+            AND system_id=#{systemId}
+        </if>
+        <if test="null != groupCode and groupCode.length > 0">
+            AND group_code=#{groupCode}
+        </if>
+    </select>
+
+</mapper>
+
+

+ 35 - 0
adm-business/adm-diagram/src/main/resources/mapper/DiagramType.xml

@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.persagy.adm.diagram.dao.DiagramTypeMapper">
+
+    <resultMap id="diagramTypeBaseMap" type="com.persagy.adm.diagram.entity.DiagramType">
+        <id column="id" property="id" jdbcType="VARCHAR"/>
+        <result column="major" property="major" jdbcType="VARCHAR"/>
+        <result column="d_system" property="system" jdbcType="VARCHAR"/>
+        <result column="code" property="code" jdbcType="VARCHAR"/>
+        <result column="name" property="name" jdbcType="VARCHAR"/>
+        <result column="remark" property="remark" jdbcType="VARCHAR"/>
+        <result column="creator" property="creator" jdbcType="VARCHAR"/>
+        <result column="creation_time" property="creationTime" jdbcType="CHAR"/>
+        <result column="modifier" property="modifier" jdbcType="VARCHAR"/>
+        <result column="modified_time" property="modifiedTime" jdbcType="CHAR"/>
+        <result column="valid" property="valid" jdbcType="TINYINT"/>
+        <result column="ts" property="ts" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <sql id="baseSql">
+        id,major,d_system,code,name,remark,creator,creation_time,
+        modifier,modified_time,valid,ts
+    </sql>
+
+    <!--获取所有系统图列表-->
+    <select id="getDiagramTypes" resultMap="diagramTypeBaseMap">
+        SELECT
+        <include refid="baseSql"/>
+        FROM diagram_type
+    </select>
+
+
+</mapper>
+
+

+ 55 - 0
adm-business/adm-diagram/src/main/resources/mapper/Legend.xml

@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.persagy.adm.diagram.dao.LegendMapper">
+
+    <resultMap id="legendBaseMap" type="com.persagy.adm.diagram.entity.LegendEntity">
+        <id column="id" property="id" jdbcType="VARCHAR"/>
+        <result column="name" property="name" jdbcType="VARCHAR"/>
+        <result column="code" property="code" jdbcType="VARCHAR"/>
+        <result column="bt_system" property="system" jdbcType="VARCHAR"/>
+        <result column="legend_content" property="legendContent" jdbcType="VARCHAR"/>
+        <result column="remark" property="remark" jdbcType="VARCHAR"/>
+        <result column="creator" property="creator" jdbcType="VARCHAR"/>
+        <result column="creation_time" property="creationTime" jdbcType="CHAR"/>
+        <result column="modifier" property="modifier" jdbcType="VARCHAR"/>
+        <result column="modified_time" property="modifiedTime" jdbcType="CHAR"/>
+        <result column="valid" property="valid" jdbcType="TINYINT"/>
+        <result column="ts" property="ts" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <sql id="baseSql">
+        id,bt_system,code,name,remark,legend_content,creator,creation_time,
+        modifier,modified_time,valid,ts
+    </sql>
+
+    <insert id="saveLegend">
+        INSERT INTO diagram_legend
+        (id,bt_system,code,name,remark,legend_content,creator,creation_time,
+        modifier,modified_time)
+        VALUES (#{id},#{system},#{code},#{name},#{remark},#{legendContent},#{creator},
+        #{creationTime},#{modifier},#{modifiedTime})
+    </insert>
+
+    <delete id="deleteLegend">
+        DELETE FROM diagram_legend
+        WHERE id=#{legendId} AND bt_system=#{systemCode}
+    </delete>
+
+    <select id="getLegends" resultMap="legendBaseMap">
+        SELECT
+        <include refid="baseSql"/>
+        FROM diagram_legend
+        WHERE bt_system = #{systemCode}
+    </select>
+
+    <select id="getLegend" resultMap="legendBaseMap">
+        SELECT
+        <include refid="baseSql"/>
+        FROM diagram_legend
+        WHERE id = #{legendId} AND bt_system =#{systemCode}
+    </select>
+
+
+</mapper>
+
+

+ 61 - 0
adm-business/adm-diagram/src/main/resources/mapper/Template.xml

@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.persagy.adm.diagram.dao.TemplateMapper">
+
+    <resultMap id="templateBaseMap" type="com.persagy.adm.diagram.entity.TemplateEntity">
+        <id column="id" property="id" jdbcType="VARCHAR"/>
+        <result column="diagram_type" property="diagramType" jdbcType="VARCHAR"/>
+        <result column="name" property="name" jdbcType="VARCHAR"/>
+        <result column="code" property="code" jdbcType="VARCHAR"/>
+        <result column="remark" property="remark" jdbcType="VARCHAR"/>
+        <result column="template_content" property="templateContent" jdbcType="VARCHAR"/>
+        <result column="creator" property="creator" jdbcType="VARCHAR"/>
+        <result column="creation_time" property="creationTime" jdbcType="CHAR"/>
+        <result column="modifier" property="modifier" jdbcType="VARCHAR"/>
+        <result column="modified_time" property="modifiedTime" jdbcType="CHAR"/>
+        <result column="valid" property="valid" jdbcType="TINYINT"/>
+        <result column="ts" property="ts" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <sql id="baseSql">
+        id,diagram_type,template_content,code,name,remark,creator,creation_time,
+        modifier,modified_time,valid,ts
+    </sql>
+
+    <insert id="saveTemplate">
+        INSERT INTO diagram_template
+        (id,diagram_type,template_content,code,name,remark,creator,creation_time,
+        modifier,modified_time)
+        VALUES (#{id},#{diagramType},#{templateContent},#{code},#{name},#{remark},#{creator},
+        #{creationTime},#{modifier},#{modifiedTime})
+    </insert>
+
+    <delete id="deleteByTemplateId">
+        DELETE FROM diagram_template
+        WHERE id=#{templateId}
+    </delete>
+
+    <select id="getTemplates" resultMap="templateBaseMap">
+        SELECT
+        <include refid="baseSql"/>
+        FROM diagram_template
+    </select>
+
+    <select id="getTemplatesByType" resultMap="templateBaseMap">
+        SELECT
+        <include refid="baseSql"/>
+        FROM diagram_template
+        WHERE diagram_type = #{diagramType}
+    </select>
+
+    <select id="selectByTemplateId" resultMap="templateBaseMap">
+        SELECT
+        <include refid="baseSql"/>
+        FROM diagram_template
+        WHERE id = #{templateId}
+    </select>
+
+
+</mapper>
+
+