ソースを参照

feat(adm-diagram): save or update逻辑

liyang 3 年 前
コミット
e8f6e88cce

+ 40 - 6
adm-business/adm-diagram/src/main/java/com/persagy/adm/diagram/core/impl/DataStrategyImpl.java

@@ -1,6 +1,7 @@
 package com.persagy.adm.diagram.core.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.StrUtil;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -16,7 +17,11 @@ 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.entity.DiagramEntity;
+import com.persagy.adm.diagram.entity.DiagramType;
+import com.persagy.adm.diagram.entity.LegendEntity;
+import com.persagy.adm.diagram.entity.ModelAdapter;
+import com.persagy.adm.diagram.entity.TemplateEntity;
 import com.persagy.adm.diagram.util.ServiceUtil;
 import com.persagy.dmp.basic.model.QueryCriteria;
 import com.persagy.dmp.basic.model.QueryOperator;
@@ -31,7 +36,14 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.Set;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.stream.Collectors;
@@ -113,8 +125,15 @@ public class DataStrategyImpl implements DataStrategy {
      */
     @Override
     public DiagramTemplate saveTemplate(DiagramTemplate template) {
-        TemplateEntity templateEntity = modelAdapter.toTemplateEntity(template);
-        templateMapper.saveTemplate(templateEntity);
+        if (StrUtil.isNotBlank(template.getId())) {
+            TemplateEntity dbEntity = templateMapper.selectById(template.getId());
+            if (dbEntity != null) {
+                templateMapper.updateById(modelAdapter.toTemplateEntity(template));
+                return template;
+            }
+        }
+        template.setId(IdUtil.simpleUUID());
+        templateMapper.saveTemplate(modelAdapter.toTemplateEntity(template));
         return template;
     }
 
@@ -171,6 +190,14 @@ public class DataStrategyImpl implements DataStrategy {
     @Override
     public Legend saveLegend(Legend legend, String systemCode) {
         legend.setSystem(systemCode);
+        if (StrUtil.isNotBlank(legend.getId())) {
+            LegendEntity dbEntity = legendMapper.selectById(legend.getId());
+            if (null != dbEntity) {
+                legendMapper.updateById(modelAdapter.toLegendEntity(legend));
+                return legend;
+            }
+        }
+        legend.setId(IdUtil.simpleUUID());
         legendMapper.saveLegend(modelAdapter.toLegendEntity(legend));
         return legend;
     }
@@ -290,8 +317,15 @@ public class DataStrategyImpl implements DataStrategy {
      */
     @Override
     public Diagram saveDiagram(Diagram diagram) {
-        DiagramEntity diagramEntity = modelAdapter.toDiagramEntity(diagram);
-        diagramMapper.saveDiagram(diagramEntity);
+        if (StrUtil.isNotBlank(diagram.getId())) {
+            DiagramEntity dbEntity = diagramMapper.selectById(diagram.getId());
+            if (null != dbEntity) {
+                diagramMapper.updateById(modelAdapter.toDiagramEntity(diagram));
+                return diagram;
+            }
+        }
+        diagram.setId(IdUtil.simpleUUID());
+        diagramMapper.saveDiagram(modelAdapter.toDiagramEntity(diagram));
         return diagram;
     }