From a38d2c30192f774c674c7a0ed5f9f370b921918c Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期二, 27 二月 2024 14:48:17 +0800
Subject: [PATCH] 修改路径创建-2

---
 src/main/java/com/lf/server/service/all/BaseUploadService.java |   54 +++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 47 insertions(+), 7 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 a868900..02f6dd3 100644
--- a/src/main/java/com/lf/server/service/all/BaseUploadService.java
+++ b/src/main/java/com/lf/server/service/all/BaseUploadService.java
@@ -526,7 +526,7 @@
     /**
      * 鑾峰彇OSGB鏂囦欢鏄犲皠
      */
-    private MetaFileEntity getOsgbMapper(File f,  MetaFileEntity meta, int start) {
+    private MetaFileEntity getOsgbMapper(File f, MetaFileEntity meta, int start) {
         String fileName = FileHelper.getFileName(f.getPath());
 
         List<String> files = new ArrayList<>();
@@ -553,20 +553,60 @@
     private void setDircode(List<MetaFileEntity> list, DirEntity dir) {
         List<DirEntity> dirs = dirService.selectRecursiveById(dir.getId());
         for (MetaFileEntity mfe : list) {
-            String code= dir.getCode();
-            String fileName = mfe.getName().toLowerCase();
             String filePath = mfe.getPath().toLowerCase().replace("/", "\\");
-            for(DirEntity de : dirs){
-                if (filePath.contains(de.getFullName().toLowerCase() + "\\" + fileName)) {
-                    code=de.getCode();
-                    break;
+            String fileName = mfe.getName().toLowerCase();
+
+            String code = findDirByPath(dirs, filePath, fileName);
+            if (StringHelper.isEmpty(code)) {
+                DirEntity baseDir = findBaseDirByPath(dirs, filePath);
+                if (null != baseDir) {
+                    createDirByPath(baseDir, mfe.getPath());
+                    dirs = dirService.selectRecursiveById(dir.getId());
+                    code = findDirByPath(dirs, filePath, fileName);
                 }
             }
+            code = StringHelper.isEmpty(code) ? dir.getCode() : code;
             mfe.setDircode(code);
         }
     }
 
     /**
+     * 鏍规嵁璺緞鏌ユ壘鐩綍
+     */
+    private String findDirByPath(List<DirEntity> dirs, String filePath,String fileName) {
+        for (DirEntity de : dirs) {
+            if (filePath.contains(de.getFullName().toLowerCase() + "\\" + fileName)) {
+                return de.getCode();
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * 鏍规嵁璺緞鏌ユ壘鐖剁洰褰�
+     */
+    private DirEntity findBaseDirByPath(List<DirEntity> dirs, String filePath) {
+        for (DirEntity de : dirs) {
+            if (StringHelper.isEmpty(de.getCode()) || de.getCode().length() != StaticData.FOUR) {
+                continue;
+            }
+            if (filePath.contains(de.getFullName().toLowerCase() + "\\")) {
+                return de;
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * 鏍规嵁璺緞鍒涘缓鐩綍
+     */
+    private void createDirByPath(DirEntity baseDir, String filePath) {
+
+    }
+
+    /**
      * 鑾峰彇鍙傛暟 *
      * Enumeration<String> headers = req.getHeaderNames();
      * Enumeration<String> attributes = req.getAttributeNames();

--
Gitblit v1.9.3