From 71726a1cb05790d6841595ef7daef5173f2cddfa Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期三, 29 三月 2023 09:43:11 +0800
Subject: [PATCH] 1

---
 src/main/java/com/lf/server/service/data/MetaService.java |   45 +++++++++++++++++++++++++++++++++++++--------
 1 files changed, 37 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/lf/server/service/data/MetaService.java b/src/main/java/com/lf/server/service/data/MetaService.java
index 414c283..0430656 100644
--- a/src/main/java/com/lf/server/service/data/MetaService.java
+++ b/src/main/java/com/lf/server/service/data/MetaService.java
@@ -14,6 +14,7 @@
 import javax.servlet.http.HttpServletResponse;
 import java.io.File;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -161,8 +162,16 @@
      * 鑾峰彇鍒犻櫎琛ㄨ褰昐QL
      */
     public String getDelTabsSql(List<MetaEntity> metas) {
+        List<String> list = getTabDeletes(metas, metas.get(0).getTab());
+        addCascadDeletes(list);
+        addAttachDeletes(list);
+        Collections.reverse(list);
+
+        return StringHelper.join(list, ";");
+    }
+
+    private List<String> getTabDeletes(List<MetaEntity> metas, String tab) {
         List<String> list = new ArrayList<>();
-        String tab = metas.get(0).getTab();
 
         List<String> pids = new ArrayList<>();
         for (MetaEntity me : metas) {
@@ -180,22 +189,42 @@
             list.add(String.format("delete from %s where parentid in (%s)", tab, StringHelper.join(pids, ",")));
         }
 
-        // 鍏宠仈鍒犻櫎
+        return list;
+    }
+
+    /**
+     * 娣诲姞绾ц仈鍒犻櫎
+     */
+    private void addCascadDeletes(List<String> list) {
         int i = 0, c = list.size();
         while (i < c) {
             String str = list.get(i);
-            if (str.contains("bs.m_pipelinepoint")) {
-                list.add(str.replace("bs.m_pipelinepoint", "bs.m_pipesegment"));
-                list.add(str.replace("bs.m_pipelinepoint", "bs.m_pipeline"));
+            if (str.contains("bs.m_pipelinepoint ")) {
+                list.add(str.replace("bs.m_pipelinepoint ", "bs.m_pipesegment "));
+                list.add(str.replace("bs.m_pipelinepoint ", "bs.m_pipeline "));
             }
-            if (str.contains("bs.s_explorationpoint")) {
-                list.add(str.replace("bs.s_explorationpoint", "bs.s_surveyworksite"));
+            if (str.contains("bs.s_explorationpoint ")) {
+                list.add(str.replace("bs.s_explorationpoint ", "bs.s_surveyworksite "));
             }
 
             i++;
         }
+    }
 
-        return StringHelper.join(list, ";");
+    /**
+     * 娣诲姞闄勪欢鍒犻櫎
+     */
+    private void addAttachDeletes(List<String> list) {
+        int i = 0, c = list.size();
+        while (i < c) {
+            String str = list.get(i);
+            String tab = str.substring("delete from ".length(), str.indexOf(" where "));
+            String select = str.replace("delete ", "select eventid ");
+
+            list.add(String.format("delete from lf.sys_attach where tab='%s' and tab_guid in (%s)", tab, select));
+
+            i++;
+        }
     }
 
     /**

--
Gitblit v1.9.3