From ed8c7a5effd0d423ce1118b680ecdca6fe732609 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期三, 02 七月 2025 16:43:13 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.11.205:9000/r/P2022036_Service

---
 src/main/java/com/lf/server/service/data/MetaService.java |   97 ++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 93 insertions(+), 4 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 0b6dc99..3b81ffc 100644
--- a/src/main/java/com/lf/server/service/data/MetaService.java
+++ b/src/main/java/com/lf/server/service/data/MetaService.java
@@ -66,6 +66,11 @@
     }
 
     @Override
+    public List<MetaEntity> selectGdbByGuid(String guid) {
+        return metaMapper.selectGdbByGuid(guid);
+    }
+
+    @Override
     public Integer selectMetasForCount(String depcode, String dirs, String name) {
         depcode = StringHelper.getRightLike(depcode);
         name = StringHelper.getLikeUpperStr(name);
@@ -125,6 +130,11 @@
     }
 
     @Override
+    public List<MetaEntity> selectByIds(String ids) {
+        return metaMapper.selectByIds(ids);
+    }
+
+    @Override
     public List<MetaEntity> selectMetaFiles(List<Integer> ids) {
         return metaMapper.selectMetaFiles(ids);
     }
@@ -146,6 +156,11 @@
         depcode = StringHelper.getRightLike(depcode);
 
         return metaMapper.selectMetaOverflowDep(ids, depcode);
+    }
+
+    @Override
+    public Integer selectCountByPath(String path) {
+        return metaMapper.selectCountByPath(path);
     }
 
     @Override
@@ -178,14 +193,18 @@
      */
     public Integer deletes(List<Integer> list) {
         String ids = StringHelper.join(list, ",");
+        List<MetaEntity> metas = selectByIds(ids);
 
         String sql = null;
-        List<MetaEntity> metas = selectByIdsForTab(ids);
-        if (null != metas && metas.size() > 0) {
-            sql = getDelTabsSql(metas);
+        List<MetaEntity> tabMetas = selectByIdsForTab(ids);
+        if (null != tabMetas && tabMetas.size() > 0) {
+            sql = getDelTabsSql(tabMetas);
         }
 
-        return deletes(sql, ids);
+        int rows = deletes(sql, ids);
+        deleteMetaFiles(metas);
+
+        return rows;
     }
 
     /**
@@ -260,6 +279,75 @@
             list.add(String.format("delete from lf.sys_attach where tab='%s' and tab_guid in (%s)", tab, select));
 
             i++;
+        }
+    }
+
+    /**
+     * 鍒犻櫎鍏冩暟鎹枃浠�
+     */
+    private void deleteMetaFiles(List<MetaEntity> metas) {
+        String uploadPath = pathHelper.getConfig().getUploadPath();
+        for (MetaEntity meta : metas) {
+            if (StringHelper.isEmpty(meta.getPath())) {
+                continue;
+            }
+            Integer rows = selectCountByPath(meta.getPath());
+            if (rows > 0) {
+                continue;
+            }
+
+            try {
+                String file = uploadPath + File.separator + meta.getPath();
+                switch ("." + meta.getType()) {
+                    case StaticData.MPT:
+                        deleteFiles(file, meta.getType(), StaticData.MPT_EXT);
+                        break;
+                    case StaticData.JPG:
+                        deleteFiles(file, meta.getType(), StaticData.JPG_EXT);
+                        break;
+                    case StaticData.IMG:
+                        deleteFiles(file, meta.getType(), StaticData.IMG_EXT);
+                        break;
+                    case StaticData.TIF:
+                        deleteFiles(file, meta.getType(), StaticData.TIF_EXT);
+                        break;
+                    case StaticData.TIFF:
+                        deleteFiles(file, meta.getType(), StaticData.TIFF_EXT);
+                        break;
+                    case StaticData.SHP:
+                        deleteFiles(file, meta.getType(), StaticData.SHP_EXT);
+                        break;
+                    case StaticData.GDB:
+                    case StaticData.OSGB:
+                        FileHelper.deleteDir(file);
+                        break;
+                    default:
+                        deleteFiles(file, meta.getType(), null);
+                        break;
+                }
+            } catch (Exception ex) {
+                log.error(ex.getMessage(), ex);
+            }
+        }
+    }
+
+    /**
+     * 鍒犻櫎澶氫釜鏂囦欢
+     */
+    private void deleteFiles(String file, String type, List<String> extList) {
+        File f = new File(file);
+        if (f.exists() && !f.isDirectory()) {
+            f.delete();
+        }
+        if (null == extList || extList.isEmpty()) {
+            return;
+        }
+
+        for (String ext : extList) {
+            f = new File(file.replace("." + type, ext));
+            if (f.exists() && !f.isDirectory()) {
+                f.delete();
+            }
         }
     }
 
@@ -514,6 +602,7 @@
                         break;
                     case StaticData.JPG:
                         addMultiFile(uploadPath, mf, zip, params, StaticData.JPG_EXT);
+                        break;
                     case StaticData.IMG:
                         addMultiFile(uploadPath, mf, zip, params, StaticData.IMG_EXT);
                         break;

--
Gitblit v1.9.3