From a5de74e84d74eef4543e56b1181a5b4b269212e1 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期二, 10 一月 2023 16:34:08 +0800
Subject: [PATCH] 1

---
 src/main/java/com/lf/server/service/all/BaseUploadService.java |   47 +++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 39 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/lf/server/service/all/BaseUploadService.java b/src/main/java/com/lf/server/service/all/BaseUploadService.java
index e4ce665..a875bfd 100644
--- a/src/main/java/com/lf/server/service/all/BaseUploadService.java
+++ b/src/main/java/com/lf/server/service/all/BaseUploadService.java
@@ -6,6 +6,7 @@
 import com.lf.server.entity.data.VerEntity;
 import com.lf.server.entity.sys.UserEntity;
 import com.lf.server.helper.*;
+import com.lf.server.service.data.DirService;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -27,7 +28,10 @@
 @Service
 public class BaseUploadService {
     @Autowired
-    public PathHelper pathHelper;
+    private DirService dirService;
+
+    @Autowired
+    private PathHelper pathHelper;
 
     public final Log log = LogFactory.getLog(getClass());
 
@@ -199,14 +203,13 @@
             meta.setEpsgCode(epsgCode);
 
             if (StaticData.ZIP.equals(meta.getExtName())) {
-                List<MetaFileEntity> subs = getMapperFiles(path, meta);
+                List<MetaFileEntity> subs = getMapperFiles(path, dir, meta);
                 if (null != subs && subs.size() > 0) {
                     list.addAll(subs);
                     continue;
                 }
             }
 
-            meta.setEventid(StringHelper.getGuid());
             list.add(meta);
         }
 
@@ -216,7 +219,7 @@
     /**
      * 鑾峰彇鏄犲皠鏂囦欢
      */
-    private List<MetaFileEntity> getMapperFiles(String path, MetaFileEntity meta) {
+    private List<MetaFileEntity> getMapperFiles(String path, DirEntity dir, MetaFileEntity meta) {
         String zipFile = pathHelper.getConfig().getTempPath() + File.separator + meta.getPath();
         File file = new File(zipFile);
         if (!file.exists() || file.isDirectory()) {
@@ -237,13 +240,13 @@
             return null;
         }
 
-        return getMapperFiles(files, meta, subPath);
+        return getMapperFiles(files, dir, meta, subPath);
     }
 
     /**
      * 鑾峰彇鏄犲皠鏂囦欢
      */
-    private List<MetaFileEntity> getMapperFiles(File[] files, MetaFileEntity meta,String subPath) {
+    private List<MetaFileEntity> getMapperFiles(File[] files, DirEntity dir, MetaFileEntity meta, String subPath) {
         List<MetaFileEntity> list = new ArrayList<>();
         for (File f : files) {
             boolean isGdb = isGdbFile(f);
@@ -257,9 +260,10 @@
                 continue;
             }
 
+            int dirid = getDirByPath(f.getPath(), dir);
             boolean isShp = StaticData.SHP.equals(extName);
             if (isGdb) {
-                List<MetaFileEntity> rs = getGdbMappers(f, meta, subPath);
+                List<MetaFileEntity> rs = getGdbMappers(f, meta, dirid, subPath);
                 if (null != rs && rs.size() > 0) {
                     list.addAll(rs);
                 }
@@ -267,6 +271,7 @@
             }
 
             MetaFileEntity mf = createMetaFileEntity(meta);
+            mf.setDirid(dirid);
             mf.setEventid(StringHelper.getGuid());
             mf.setName(fileName);
             mf.setExtName(extName);
@@ -299,6 +304,31 @@
         mf.setEpsgCode(meta.getEpsgCode());
 
         return mf;
+    }
+
+    /**
+     * 鏍规嵁鏂囦欢璺緞鑾峰彇鐩綍ID
+     */
+    private int getDirByPath(String filePath, DirEntity dir) {
+        if (0 != dir.getPid()) {
+            return dir.getId();
+        }
+
+        List<DirEntity> list = dirService.selectDirRecursive(dir.getName());
+        if (null == list || list.isEmpty()) {
+            return dir.getId();
+        }
+        if ("/".equals(File.separator)) {
+            filePath = filePath.replace("/", "\\");
+        }
+
+        for (DirEntity entity : list) {
+            if (filePath.contains(entity.getFullName())) {
+                return entity.getId();
+            }
+        }
+
+        return dir.getId();
     }
 
     /**
@@ -375,7 +405,7 @@
     /**
      * 鑾峰彇GDB鏂囦欢鏄犲皠
      */
-    private List<MetaFileEntity> getGdbMappers(File f, MetaFileEntity meta, String subPath) {
+    private List<MetaFileEntity> getGdbMappers(File f, MetaFileEntity meta, int dirid, String subPath) {
         List<String> tabs = GdbHelper.getTabNames(f.getPath());
         if (null == tabs || tabs.size() == 0) {
             return null;
@@ -391,6 +421,7 @@
         List<MetaFileEntity> list = new ArrayList<>();
         for (String tab : tabs) {
             MetaFileEntity mf = createMetaFileEntity(meta);
+            mf.setDirid(dirid);
             mf.setEventid(StringHelper.getGuid());
             mf.setName(fileName);
             mf.setExtName(extName);

--
Gitblit v1.9.3