瀏覽代碼

旗县成果包上传、合包接口适配

wanger 4 月之前
父節點
當前提交
ac667277a2

+ 63 - 0
onemap-common/onemap-common-core/src/main/java/com/onemap/common/core/utils/StringUtils.java

@@ -7,6 +7,7 @@ import java.nio.charset.CodingErrorAction;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.regex.Matcher;
@@ -897,4 +898,66 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
             System.out.println(String.format("文件夹删除失败:%s", parent));
         }
     }
+
+    /**
+     * 重命名文件
+     *
+     * @param oldPath
+     * @param newPath
+     */
+    public static void renameFile(String oldPath, String newPath) {
+        // 指定旧文件名和路径
+        Path oldFilePath = Paths.get(oldPath);
+        // 指定新文件名和路径
+        Path newFilePath = Paths.get(newPath);
+        try {
+            System.out.println("renameFile --- " + oldPath + "------" + newPath);
+            // 使用Files.move来重命名文件
+            Files.move(oldFilePath, newFilePath, StandardCopyOption.REPLACE_EXISTING);
+            System.out.println("renameFile success");
+        } catch (IOException e) {
+            e.printStackTrace();
+            System.err.println("发生错误: " + e.getMessage());
+        }
+    }
+
+    /**
+     * 获取文件夹下面第一个文件夹名称
+     *
+     * @param parentDirPath
+     * @return
+     */
+    public static String FirstDirectoryName(String parentDirPath) {
+        // 指定要查找的父文件夹路径
+//        String parentDirPath = "/path/to/your/directory";
+        File parentDir = new File(parentDirPath);
+        String foldername = "";
+        // 检查父文件夹是否存在且为目录
+        if (parentDir.exists() && parentDir.isDirectory()) {
+            // 获取所有文件和文件夹
+            File[] files = parentDir.listFiles();
+            if (files != null) { // 确保listFiles()不为null(例如,当目录为空时)
+                for (File file : files) {
+                    // 如果是目录,则返回其名称
+                    if (file.isDirectory()) {
+                        String name = file.getName();
+                        if (name.length() > 6) {
+                            foldername = name;
+                            System.out.println("first folder === " + name);
+                            break; // 找到第一个文件夹后退出循环
+                        }
+                    }
+                }
+            } else {
+                System.out.println("该目录为空或无法访问。");
+            }
+        } else {
+            System.out.println("指定的路径不是一个有效的目录。");
+        }
+        return foldername;
+    }
+
+    public static boolean isNumeric(String str) {
+        return str.matches("\\d+");
+    }
 }

+ 13 - 4
onemap-modules/onemap-api/src/main/java/com/onemap/api/service/impl/ResultsServiceImpl.java

@@ -161,7 +161,7 @@ public class ResultsServiceImpl implements ResultsService {
             } else if (qxsbcg.getRwzt() == rwzt.getWc()) {
                 return RequestResult.error("当前成果已提交完成,不允许再次进行文件上传");
             }
-            String folder = String.format("%s旗县成果上报\\%s\\%s\\%s\\", tempfolder, user.getXzqdm(), qxsbcg.getGhlx(), md5);
+            String folder = String.format("%s旗县成果上报\\%s\\%s\\%s\\%s\\", tempfolder, user.getXzqdm(), qxsbcg.getGhlx(), md5, chunk);
             makedir(folder);
             loginfo(folder);
             String filename = file.getOriginalFilename();
@@ -257,19 +257,28 @@ public class ResultsServiceImpl implements ResultsService {
         //TODO wanger 进行数据解压
         String filetype = StringUtils.getFileKzmx(filename);
         String fileRelName = StringUtils.getFileRelName(filename);
-        String unzippath = folder + "" + fileRelName;
         if (".zip".equals(filetype)) {
             new UnPackageUtils().unPackZip(targetfile, folder);
         } else if (".rar".equals(filetype)) {
             //解压rar格式
             new UnPackageUtils().unPackRar(targetfile, folder);
         }
+        //TODO wanger 处理zip文件名和规划成果包名称不一致的情况
+        String firstFolderName = FirstDirectoryName(folder);
+        String unzippath = folder + "" + firstFolderName;
         File unzipfile = new File(unzippath);
         if (!unzipfile.exists()) {
             deleteQxsbrw(md5);
             deleteCurDirectory(targetfile.getParent());
-            return RequestResult.error("3---压缩包名称与解压后的文件名称不一致,请检查!");
+            return RequestResult.error("3---压缩包解压后没有文件夹,请检查!");
         }
+        //TODO wanger 重命名压缩包文件
+        String renamePath = folder + "" + firstFolderName + ".zip";
+        System.out.println("renamePath ===  " + renamePath);
+        renameFile(targetfilepath, renamePath);
+        targetfilepath = renamePath;
+        targetfile = null;
+        targetfile = new File(targetfilepath);
         //TODO wanger 判断报批项目成果  非常重要
         if ("6".equals(qxsbcg.getGhlx())) {
             String fileuuid = StringUtils.getUUID();
@@ -447,6 +456,7 @@ public class ResultsServiceImpl implements ResultsService {
         return RequestResult.success("7----操作成功", 1);
     }
 
+
     private void deleteCurDirectory(String parent) {
 //        try {
 //            FileUtils.deleteDirectory(new File(parent));
@@ -542,7 +552,6 @@ public class ResultsServiceImpl implements ResultsService {
     }
 
 
-
     /**
      * 通过当前登录用户token获取openuser表信息
      *