1
0
فهرست منبع

上传及解压文件路径优化

chenendian 2 ماه پیش
والد
کامیت
8edb7e90a0

+ 26 - 1
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/controller/cadastre/MdbController.java

@@ -5,6 +5,7 @@ import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
 import org.json.simple.parser.ParseException;
 import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 
@@ -18,6 +19,24 @@ import java.util.*;
 @RequestMapping("/mdb")
 public class MdbController extends BaseController {
 
+
+
+    @GetMapping("/gettablesMdb")
+    public void gettablesMdb() throws Exception {
+        String folderURL = "C:\\Users\\Administrator\\Desktop\\06\\XZQData.mdb";
+        List<Map<String, Object>> resList = MdbTables(folderURL, null, null);
+
+        Map<String, Object> map = resList.get(0);
+        String tablename = map.get("name").toString();
+
+        Map<String, Object> resMap = MdbTableContent(folderURL,tablename, null, null, 1, 10);
+        System.out.println(resMap);
+
+        System.out.println(resMap);
+        System.out.println("-----------------");
+    }
+
+
     /**
      *
      * 获取mdb下的属性表
@@ -233,7 +252,13 @@ public class MdbController extends BaseController {
                 for (int i = 1; i <= data.getColumnCount(); i++) {
                     //列名
                     String columnName = data.getColumnName(i);
-                    map.put(columnName, rs.getString(i));
+                    //map.put(columnName, rs.getString(i));
+                    Object value = rs.getObject(i);
+                    if (value instanceof Blob) {
+                        map.put(columnName, "[BLOB]"); //todo 这里先简单处理一下blob类型,后续可以根据实际需求进行优化
+                    } else {
+                        map.put(columnName, String.valueOf(value));
+                    }
                 }
                 dataList.add(map);
             }

+ 24 - 5
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/cadastre/impl/CadastreManageServiceImpl.java

@@ -200,15 +200,34 @@ public class CadastreManageServiceImpl implements CadastreManageService {
                 log.warn("处理文件失败:文件不存在: {}", theFilePath);
                 return null;
             }
+            Long  fileSize = Files.size(file);
 
-            //文件解压到当前目录
-            String unZipPath = file.getParent().toAbsolutePath().toString();
             // 判断是否为压缩文件
             if (FileExtractUtil.isCompressedFile(theFilePath)) {
                 // 解压文件到同名文件夹并获取目录结构
-                boolean extractRes = FileExtractUtil.extractFile(theFilePath, unZipPath);
+                String extractRes = FileExtractUtil.extractToSameNameFolder(theFilePath);
+                if (StringUtils.isBlank(extractRes)) {
+                    log.warn("解压文件失败:文件不存在: {}", theFilePath);
+                    throw new ServiceException("解压文件失败:文件不存在,");
+                }
+
+                //这里解压文件名称作为文件名
+                Path extractPath = Paths.get(extractRes);
+                String fileName = extractPath.getFileName().toString();
+                theFileName = fileName.substring(0, fileName.lastIndexOf('.'));
+
                 //解压成功文件保存
-                if (extractRes == true) {
+                if (StringUtils.isNotBlank(extractRes)) {
+                    String unZipPath = extractRes;
+                    String innerExtractFileName =  FileExtractUtil.getFileDirName(extractRes);
+                    // 如果解压后的文件夹名称不为空,则使用解压后的文件夹名称作为文件名
+                    if(StringUtils.isNotBlank(innerExtractFileName)){
+                        theFileName =   innerExtractFileName;
+                    }else {
+                        //如果当前压缩文件最终一级则
+                        unZipPath = unZipPath.replace("/"+theFileName, "");
+                    }
+
                     CadastreFile cadastreFile = new CadastreFile();
                     cadastreFile.generateId();//生成id
                     cadastreFile.setName(theFileName);
@@ -223,7 +242,7 @@ public class CadastreManageServiceImpl implements CadastreManageService {
                     if (StringUtils.isNotBlank(updateType)) {
                         cadastreFile.setReadStatus(updateType);
                     }
-
+                    cadastreFile.setFileSize(fileSize);
                     cadastreFile.setStatus("0");
                     cadastreFile.setUploadUser("admin");
                     cadastreFile.setUploadTime(new Date());

+ 23 - 1
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/utils/FileExtractUtil.java

@@ -256,7 +256,6 @@ public class FileExtractUtil {
         structure.put("type", "file");
         structure.put("physicalFlag", "1");
         structure.put("path", file.toString());
-        
         try {
             structure.put("size", Files.size(file));
         } catch (IOException e) {
@@ -266,4 +265,27 @@ public class FileExtractUtil {
         
         return structure;
     }
+
+
+    /**
+     * 判断是否为文件夹,并且该文件夹下面只有一个子目录,如果满足条件则返回该子目录的名称,否则返回空字符串
+     *
+     * @param parentPath 文件路径
+     * @return String
+     */
+    public static String getFileDirName(String parentPath) {
+        String fileDirName = "";
+        File dir = new File(parentPath);
+        if (!dir.exists() || !dir.isDirectory()) {
+            return "";
+        }
+        File[] subDirs = dir.listFiles();
+        if (subDirs != null && subDirs.length == 1 && subDirs[0].isDirectory()) {
+            fileDirName = subDirs[0].getName();
+        }
+        return fileDirName;
+    }
+
+
+
 }