From db5338c2246acbc0826a9b683392512cf00eba04 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期日, 26 三月 2023 09:11:32 +0800
Subject: [PATCH] 1

---
 src/main/java/com/lf/server/service/data/MetaService.java |   33 ++++++++++++++++++++++++++++++---
 1 files changed, 30 insertions(+), 3 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..4fa9325 100644
--- a/src/main/java/com/lf/server/service/data/MetaService.java
+++ b/src/main/java/com/lf/server/service/data/MetaService.java
@@ -161,8 +161,15 @@
      * 鑾峰彇鍒犻櫎琛ㄨ褰昐QL
      */
     public String getDelTabsSql(List<MetaEntity> metas) {
+        List<String> list = getTabDeletes(metas, metas.get(0).getTab());
+        addCascadDeletes(list);
+        addAttachDeletes(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,7 +187,13 @@
             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);
@@ -194,8 +207,22 @@
 
             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