Pārlūkot izejas kodu

文件解压功能完善

wanger 1 gadu atpakaļ
vecāks
revīzija
766f24ee43
15 mainītis faili ar 119 papildinājumiem un 209 dzēšanām
  1. 4 4
      onemap-common/onemap-common-core/src/main/java/com/onemap/common/core/utils/StringUtils.java
  2. 56 12
      onemap-common/onemap-common-core/src/main/java/com/onemap/common/core/utils/UnPackageUtils.java
  3. 5 5
      onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/service/impl/ChscServiceImpl.java
  4. 4 4
      onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/task/FzxzSchedule.java
  5. 1 1
      onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/task/HgxfxSchedule.java
  6. 2 2
      onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/utils/DownloadUtils.java
  7. 36 4
      onemap-modules/onemap-api/src/main/java/com/onemap/api/service/impl/ResultsServiceImpl.java
  8. 4 1
      onemap-modules/onemap-apply/src/main/java/com/onemap/apply/controller/yzt/ZttKController.java
  9. 4 4
      onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/impl/cggl/CgglServiceImpl.java
  10. 1 2
      onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/impl/sbjk/XxghcgsbServiceImpl.java
  11. 1 4
      onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/impl/sbjk/XzczghcgsbServiceImpl.java
  12. 0 1
      onemap-modules/onemap-apply/src/main/java/com/onemap/apply/task/CgjcSchedule.java
  13. 0 85
      onemap-modules/onemap-apply/src/main/java/com/onemap/apply/utils/UnPackageUtils.java
  14. 1 0
      onemap-modules/onemap-file/src/main/java/com/onemap/file/service/LocalSysFileServiceImpl.java
  15. 0 80
      onemap-modules/onemap-file/src/main/java/com/onemap/file/utils/UnPackageUtils.java

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

@@ -609,9 +609,9 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
      * @param filename
      * @return
      */
-    public static String getFileStaticPath(String filename) {
+    public static String getFileStaticPath(String filename, String temp) {
         filename = filename.replaceAll("\\\\", "/");
-        return filename.replace("D:/onemapfile/", "/file/statics/");
+        return filename.replace(temp, "/file/statics/");
     }
 
     /**
@@ -632,9 +632,9 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
      * @param filename
      * @return
      */
-    public static String getFileAbsolutePath(String filename) {
+    public static String getFileAbsolutePath(String filename, String temp) {
         filename = filename.replaceAll("\\\\", "/");
-        return filename.replace("/file/statics/", "D:/onemapfile/");
+        return filename.replace("/file/statics/", temp);
     }
 
     /**

+ 56 - 12
onemap-common/onemap-common-core/src/main/java/com/onemap/common/core/utils/UnPackageUtils.java

@@ -4,12 +4,11 @@ import com.github.junrar.Archive;
 import com.github.junrar.rarfile.FileHeader;
 import net.lingala.zip4j.core.ZipFile;
 
-import java.io.File;
-import java.io.FileOutputStream;
+import java.io.*;
 
 /**
  * @author : wanger
- * @createDate: 2025/2/18
+ * @createDate: 2025/2/24
  * @description:解压缩工具
  **/
 
@@ -24,18 +23,63 @@ public class UnPackageUtils {
      *                 //* @param password 解压密码(如果有)
      */
     public static void unPackZip(File zipFile, String destPath) {
-
         try {
-            ZipFile zip = new ZipFile(zipFile);
-            /*zip4j默认用GBK编码去解压,这里设置编码为GBK的*/
-            zip.setFileNameCharset("GBK");
-            zip.extractAll(destPath);
+            String system = getSystem();
+            String command = "";
+            if (system.equals("windows")) {
+                command = String.format("\"%s\" x \"%s\" \"%s\"", "C:\\Program Files\\WinRAR\\WinRAR.exe", zipFile.getAbsolutePath(), destPath);
+            } else {
+                command = String.format("%s \"%s\" -d \"%s\"", "sudo unzip", zipFile.getAbsolutePath(), destPath);
+                // 创建ProcessBuilder对象
+                ProcessBuilder processBuilder = new ProcessBuilder("unzip", zipFile.getAbsolutePath(), "-d", destPath);
+
+                // 启动进程
+                Process process = processBuilder.start();
+
+                // 读取标准输出流
+                BufferedReader stdInput = new BufferedReader(new InputStreamReader(process.getInputStream()));
+                String line;
+                while ((line = stdInput.readLine()) != null) {
+                    System.out.println("STDOUT: " + line);
+                }
+
+                // 读取标准错误流
+                BufferedReader stdError = new BufferedReader(new InputStreamReader(process.getErrorStream()));
+                while ((line = stdError.readLine()) != null) {
+                    System.out.println("STDERR: " + line);
+                }
 
-            // 如果解压需要密码
-//            if (zip.isEncrypted()) {
-//                zip.setPassword(password);
-//            }
+                // 等待命令执行完成
+                int exitCode = process.waitFor();
+                System.out.println("Exited with code: " + exitCode);
+                return;
+            }
+            System.out.println("开始执行解压命令");
+            System.out.println(command);
+            // 执行命令
+            Process process = Runtime.getRuntime().exec(command);
+            InputStream inputStream = process.getInputStream();
+            // 读取输出
+            int ch;
+            while ((ch = inputStream.read()) != -1) {
+                System.out.print((char) ch);
+            }
+            int exitCode = process.waitFor();
+            System.out.println("Exit code: " + exitCode);
+            System.out.println("结束执行解压命令");
         } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public static String getSystem() {
+        String osName = System.getProperty("os.name").toLowerCase();
+        if (osName.contains("win")) {
+            return "windows";
+        } else if (osName.contains("nix") || osName.contains("nux") || osName.contains("aix")) {
+            return "linux";
+        } else {
+            return "";
         }
     }
 

+ 5 - 5
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/service/impl/ChscServiceImpl.java

@@ -75,7 +75,7 @@ public class ChscServiceImpl implements IChscService {
             if (xzlbDTO.getHgxfx() == chsc.getXzlb()) {
                 HgxfxDTO hgxfx = hgxfxMapper.selectOne(new QueryWrapper<HgxfxDTO>().eq("bsm", bsm));
                 if (hgxfx != null) {
-                    DownloadUtils.download(response, hgxfx.getFxbg().replace(".docx", ".pdf"), "选址报告");
+                    DownloadUtils.download(response, hgxfx.getFxbg().replace(".docx", ".pdf"), "选址报告", temp);
                     return null;
                 } else {
                     return WebResult.error("查询报告为空");
@@ -83,7 +83,7 @@ public class ChscServiceImpl implements IChscService {
             } else if (xzlbDTO.getXmxz() == chsc.getXzlb()) {
                 FzxzDTO fzxz = fzxzMapper.selectOne(new QueryWrapper<FzxzDTO>().eq("bsm", bsm));
                 if (fzxz != null) {
-                    DownloadUtils.download(response, fzxz.getFxbg(), "选址报告");
+                    DownloadUtils.download(response, fzxz.getFxbg(), "选址报告", temp);
                     return null;
                 } else {
                     return WebResult.error("查询报告为空");
@@ -213,7 +213,7 @@ public class ChscServiceImpl implements IChscService {
                 map.put("fileName", FileStreamUtils.getFileName(shppath));
                 map.put("outByte", FileStreamUtils.getByteArrayOutputStream(shppath).toByteArray());
                 fileList.add(map);
-                String[] kzm = {".sbn",".shx", ".dbf", ".cpg", ".prj"};
+                String[] kzm = {".sbn", ".shx", ".dbf", ".cpg", ".prj"};
                 String curkzm = ".shp";
                 for (int i = 0; i < kzm.length; i++) {
                     String curpath = shppath.replaceAll(curkzm, kzm[i]);
@@ -222,11 +222,11 @@ public class ChscServiceImpl implements IChscService {
                     cur.put("outByte", FileStreamUtils.getByteArrayOutputStream(curpath).toByteArray());
                     fileList.add(cur);
                 }
-                ZipUtils.zipFiles(fileList,response);
+                ZipUtils.zipFiles(fileList, response);
             } else {
                 WebResult.error("json转shape失败", false);
             }
-        }catch (Exception e){
+        } catch (Exception e) {
             e.printStackTrace();
         }
         //当初当前临时文件夹

+ 4 - 4
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/task/FzxzSchedule.java

@@ -175,10 +175,10 @@ public class FzxzSchedule {
                     , rootPath + File.separator + reportPath
                     , rootPath + File.separator + simplePath);
             //生成返回结果
-            fzxzReport.setRootPath(StringUtils.getFileStaticPath(rootPath));
-            fzxzReport.setReportfile(StringUtils.getFileStaticPath(rootPath + File.separator + reportPath));
-            fzxzReport.setSimplefile(StringUtils.getFileStaticPath(rootPath + File.separator + simplePath));
-            fzxzReport.setZipfile(StringUtils.getFileStaticPath(rootPath + File.separator + zipPath));
+            fzxzReport.setRootPath(StringUtils.getFileStaticPath(rootPath, temp));
+            fzxzReport.setReportfile(StringUtils.getFileStaticPath(rootPath + File.separator + reportPath, temp));
+            fzxzReport.setSimplefile(StringUtils.getFileStaticPath(rootPath + File.separator + simplePath, temp));
+            fzxzReport.setZipfile(StringUtils.getFileStaticPath(rootPath + File.separator + zipPath, temp));
             fzxzReport.setBsm(bsm);
             fzxzReport.setFxbg(fzxzReport.getReportfile());
             fzxzReport.setJsdw(res.getJsdw());

+ 1 - 1
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/task/HgxfxSchedule.java

@@ -216,7 +216,7 @@ public class HgxfxSchedule {
         String reportPath = rootPath
                 + File.separator + res.getXmmc() + "(合规性检查报告)_" + timeStamp + ".docx";
         //解析文件路径为web路径
-        String webFilePath = StringUtils.getFileStaticPath(reportPath);
+        String webFilePath = StringUtils.getFileStaticPath(reportPath, temp);
         double mj = 0;
         if (res != null) {
             XWPFDocument document = null;

+ 2 - 2
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/utils/DownloadUtils.java

@@ -7,9 +7,9 @@ import java.io.*;
 import java.nio.file.Files;
 
 public class DownloadUtils {
-    public static void download(HttpServletResponse response, String filepath, String name){
+    public static void download(HttpServletResponse response, String filepath, String name, String temppath){
         try{
-            filepath = StringUtils.getFileAbsolutePath(filepath);
+            filepath = StringUtils.getFileAbsolutePath(filepath, temppath);
             File file = new File(filepath);
             // 取得文件名。
             String filename = file.getName();

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

@@ -237,11 +237,13 @@ public class ResultsServiceImpl implements ResultsService {
             e.printStackTrace();
             qxsbcg.setRwzt(rwzt.getHbsb());
             qxcgsbrwMapper.update(qxsbcg, sbrwwrapper);
+//            deleteQxsbrw(md5);
             return RequestResult.error("合包失败,没找到合包后的文件,请联系管理员");
         }
         File targetfile = new File(targetfilepath);
         String fileMd5 = getMD5(targetfile);
         if (!fileMd5.equals(md5)) {
+            deleteQxsbrw(md5);
             return RequestResult.error("警告:文件的MD5不一致");
         }
         //TODO wanger 进行数据解压
@@ -256,11 +258,13 @@ public class ResultsServiceImpl implements ResultsService {
         }
         File unzipfile = new File(unzippath);
         if (!unzipfile.exists()) {
+            deleteQxsbrw(md5);
             return RequestResult.error("压缩包名称与解压后的文件名称不一致,请检查!");
         }
         //解析txt
         String txtFilePath = FileSearch(unzippath, "基本信息.txt");
         if (StringUtils.isEmpty(txtFilePath)) {
+            deleteQxsbrw(md5);
             return RequestResult.error("成果包中必须包含“xxx基本信息.txt”文件,同时注意成果包中应包含“xxx规划成果”的根目录");
         }
         Map<String, String> txtMap = readTxt(txtFilePath);
@@ -293,12 +297,14 @@ public class ResultsServiceImpl implements ResultsService {
         sjbzwrapper.orderByAsc("px");
         List<TCgglSjbzmlwjDto> sjbzlist = tCgglSjbzmlwjMapper.selectList(sjbzwrapper);
         if (sjbzlist.size() == 0) {
-            return RequestResult.error(String.format("未授权的数据类型:%s,请联系管理人员!"), sjbz_bsm);
+            deleteQxsbrw(md5);
+            return RequestResult.error(String.format("未授权的数据类型:%s,请联系管理人员!", sjbz_bsm));
         }
         //记录缺失的文件列表  字符串类型
         List<String> missfiles = new ArrayList<>();
-        missfiles = checkMustFiles(unzippath, sjbzlist, "", missfiles, xzqdm, xzqmc);
+        missfiles = checkMustFiles(unzipfile.getParent(), sjbzlist, "", missfiles, xzqdm, xzqmc);
         if (missfiles.size() > 0) {
+            deleteQxsbrw(md5);
             return RequestResult.error(String.format("成果数据缺少以下目录或文件:%s", String.join("\n", missfiles)), missfiles);
         }
         qxsbcg.setRwzt(rwzt.getWc());
@@ -359,6 +365,32 @@ public class ResultsServiceImpl implements ResultsService {
         return RequestResult.success("操作成功", 1);
     }
 
+    /**
+     * 根据MD5删除数据库表和数据文件夹
+     *
+     * @param md5
+     */
+    public void deleteQxsbrw(String md5) {
+        QueryWrapper<Qxcgsbrw> sbrwwrapper = new QueryWrapper<>();
+        sbrwwrapper.eq("bsm", md5);
+        Qxcgsbrw qxsbcg = qxcgsbrwMapper.selectOne(sbrwwrapper);
+        String wjwz = qxsbcg.getCgwj();
+        File file = new File(wjwz);
+        if (file != null) {
+            String dir = file.getParent();
+            try {
+                FileUtils.deleteDirectory(new File(dir));
+            } catch (IOException e) {
+                e.printStackTrace();
+                System.out.println(String.format("%s:文件夹删除失败:%s", md5, dir));
+            }
+        }
+        qxcgsbrwMapper.delete(sbrwwrapper);
+        QueryWrapper<Qxcgsbrwfp> fpwrapper = new QueryWrapper<>();
+        fpwrapper.eq("md5", md5);
+        qxcgsbrwfpMapper.delete(fpwrapper);
+    }
+
     /**
      * 检查缺失的成果文件 递归调用  非常重要
      *
@@ -374,7 +406,7 @@ public class ResultsServiceImpl implements ResultsService {
         List<TCgglSjbzmlwjDto> filteredList = new ArrayList<>();
         if (StringUtils.isNotEmpty(parentname)) {
             filteredList = sjbzlist.stream()
-                    .filter(cur -> cur.getSjml() == parentname)
+                    .filter(cur -> parentname.equals(cur.getSjml()))
                     .collect(Collectors.toList());
         } else {
             filteredList = sjbzlist.stream()
@@ -399,7 +431,7 @@ public class ResultsServiceImpl implements ResultsService {
             if (lx == 0) {//文件夹
                 if (folder.exists() && folder.isDirectory()) {
                     if (!curpath.endsWith(".gdb")) {
-                        checkMustFiles(curpath, sjbzlist, dto.getSjml(), missfiles, xzqdm, xzqmc);
+                        checkMustFiles(curpath, sjbzlist, dto.getBsm(), missfiles, xzqdm, xzqmc);
                     }
                 } else {
                     missfiles.add(StringUtils.isNotEmpty(gzmc) ? gzmc : mlmc);

+ 4 - 1
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/controller/yzt/ZttKController.java

@@ -12,6 +12,7 @@ import com.onemap.common.core.web.controller.BaseController;
 import com.onemap.common.core.web.domain.RequestResult;
 import com.onemap.common.core.web.page.RecordTableDataInfo;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
@@ -33,6 +34,8 @@ public class ZttKController extends BaseController
     IZttKService zttkService;
     @Autowired
     ZttKMapper zttKMapper;
+    @Value("${Cggl.temp}")
+    private String temp;
 
     /**
      * 获取专题图模板
@@ -116,7 +119,7 @@ public class ZttKController extends BaseController
     {
         try
         {
-            String  filepath = StringUtils.getFileAbsolutePath(zttwj);
+            String  filepath = StringUtils.getFileAbsolutePath(zttwj, temp);
 
             File file = new File(filepath);
             // 取得文件名。

+ 4 - 4
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/impl/cggl/CgglServiceImpl.java

@@ -10,6 +10,7 @@ import com.onemap.apply.mapper.sbjk.XzczghcgsbMapper;
 import com.onemap.apply.service.cggl.CgglService;
 import com.onemap.apply.utils.*;
 import com.onemap.common.core.utils.StringUtils;
+import com.onemap.common.core.utils.UnPackageUtils;
 import com.onemap.common.core.web.domain.RequestResult;
 import com.onemap.common.redis.service.RedisService;
 import com.onemap.common.security.utils.SecurityUtils;
@@ -177,7 +178,7 @@ public class CgglServiceImpl implements CgglService {
         wrapper.eq("name", escalationDTO.getName());
         EscalationDTO res = escalationMapper.selectOne(wrapper);
         if (res != null) {
-            return RequestResult.error("该名称已存在!", false);
+            //return RequestResult.error("该名称已存在!", false);
         }
 //        if (escalationDTO.getName().getBytes().length > 100) {
 //            return RequestResult.error("成果名称不能大于100个字节!", false);
@@ -247,7 +248,6 @@ public class CgglServiceImpl implements CgglService {
                     //空的人工审查流程  直接办结
                     escalationMapper.updateCgScZt(cgid, "6");
                 }
-
             }
             return RequestResult.success("发起审查成功!");
         } catch (Exception e) {
@@ -877,7 +877,7 @@ public class CgglServiceImpl implements CgglService {
             data.setPid(map.get(file.getParent()));
             data.setName(file.getName());
 //            data.setFilepath(StringUtils.getGhFileStaticPath(file.getAbsolutePath(), temp));
-            data.setFilepath(StringUtils.getFileStaticPath(file.getAbsolutePath()));
+            data.setFilepath(StringUtils.getFileStaticPath(file.getAbsolutePath(), temp));
             data.setIsparent(true);
             if (file.getName().toLowerCase().indexOf(".gdb") > 0) {
                 data.setFilepath(file.getAbsolutePath());
@@ -911,7 +911,7 @@ public class CgglServiceImpl implements CgglService {
                 data.setPid(map.get(file.getParent()));
                 data.setName(file.getName());
 //                data.setFilepath(StringUtils.getGhFileStaticPath(file.getAbsolutePath(), temp));
-                data.setFilepath(StringUtils.getFileStaticPath(file.getAbsolutePath()));
+                data.setFilepath(StringUtils.getFileStaticPath(file.getAbsolutePath(), temp));
                 data.setIsparent(false);
                 allFile.add(data);
             }

+ 1 - 2
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/impl/sbjk/XxghcgsbServiceImpl.java

@@ -4,12 +4,11 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.onemap.apply.domain.sbjk.XxghcgsbDTO;
 import com.onemap.apply.mapper.sbjk.XxghcgsbMapper;
-import com.onemap.apply.mapper.sbjk.XzczghcgsbMapper;
 import com.onemap.apply.service.sbjk.XxghcgsbService;
 import com.onemap.apply.utils.Md5Utils;
 import com.onemap.apply.utils.RInterfaceUtil;
-import com.onemap.apply.utils.UnPackageUtils;
 import com.onemap.common.core.utils.StringUtils;
+import com.onemap.common.core.utils.UnPackageUtils;
 import com.onemap.common.core.utils.uuid.IdUtils;
 import com.onemap.common.core.web.domain.AjaxResult;
 import com.onemap.common.redis.service.RedisService;

+ 1 - 4
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/impl/sbjk/XzczghcgsbServiceImpl.java

@@ -1,12 +1,9 @@
 package com.onemap.apply.service.impl.sbjk;
 
-import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.onemap.apply.domain.cggl.EscalationDTO;
 import com.onemap.apply.domain.cggl.ScmxDTO;
 import com.onemap.apply.domain.cggl.ScmxRecordDTO;
-import com.onemap.apply.domain.sbjk.TjpgsbDTO;
 import com.onemap.apply.domain.sbjk.XzczghcgsbDTO;
 import com.onemap.apply.mapper.cggl.EscalationMapper;
 import com.onemap.apply.mapper.cggl.ScmxMapper;
@@ -15,8 +12,8 @@ import com.onemap.apply.mapper.sbjk.XzczghcgsbMapper;
 import com.onemap.apply.service.sbjk.XzczghcgsbService;
 import com.onemap.apply.utils.Md5Utils;
 import com.onemap.apply.utils.RInterfaceUtil;
-import com.onemap.apply.utils.UnPackageUtils;
 import com.onemap.common.core.utils.StringUtils;
+import com.onemap.common.core.utils.UnPackageUtils;
 import com.onemap.common.core.utils.uuid.IdUtils;
 import com.onemap.common.core.web.domain.AjaxResult;
 import com.onemap.common.core.web.domain.RequestResult;

+ 0 - 1
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/task/CgjcSchedule.java

@@ -3,7 +3,6 @@ package com.onemap.apply.task;
 import com.onemap.apply.mapper.cggl.EscalationMapper;
 import com.onemap.apply.utils.HttpClientUtil;
 import com.onemap.common.core.utils.StringUtils;
-import com.sun.org.apache.xpath.internal.operations.Bool;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Scheduled;

+ 0 - 85
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/utils/UnPackageUtils.java

@@ -1,85 +0,0 @@
-package com.onemap.apply.utils;
-
-
-import com.github.junrar.Archive;
-import com.github.junrar.rarfile.FileHeader;
-import net.lingala.zip4j.core.ZipFile;
-
-import java.io.File;
-import java.io.FileOutputStream;
-
-/**
- * @author : wangping
- * @createDate: 2021/7/12
- * @description:解压缩工具
- **/
-
-
-public class UnPackageUtils {
-
-    /**
-     * zip文件解压
-     *
-     * @param destPath 解压文件路径
-     * @param zipFile  压缩文件
-     *                 //* @param password 解压密码(如果有)
-     */
-    public static void unPackZip(File zipFile, String destPath) {
-
-        try {
-            ZipFile zip = new ZipFile(zipFile);
-            /*zip4j默认用GBK编码去解压,这里设置编码为GBK的*/
-            zip.setFileNameCharset("GBK");
-            zip.extractAll(destPath);
-
-            // 如果解压需要密码
-//            if (zip.isEncrypted()) {
-//                zip.setPassword(password);
-//            }
-        } catch (Exception e) {
-            System.out.println("成果包解压失败!");
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * rar文件解压(不支持有密码的压缩包)
-     *
-     * @param rarFile  rar压缩包
-     * @param destPath 解压保存路径
-     */
-    public static void unPackRar(File rarFile, String destPath) {
-        try (Archive archive = new Archive(rarFile)) {
-            if (null != archive) {
-                FileHeader fileHeader = archive.nextFileHeader();
-                File file = null;
-                while (null != fileHeader) {
-                    // 防止文件名中文乱码问题的处理
-                    String fileName = fileHeader.getFileNameW().isEmpty() ? fileHeader.getFileNameString() : fileHeader.getFileNameW();
-                    if (fileHeader.isDirectory()) {
-                        //是文件夹
-                        file = new File(destPath + File.separator + fileName);
-                        file.mkdirs();
-                    } else {
-                        //不是文件夹
-                        file = new File(destPath + File.separator + fileName.trim());
-                        if (!file.exists()) {
-                            if (!file.getParentFile().exists()) {
-                                // 相对路径可能多级,可能需要创建父目录.
-                                file.getParentFile().mkdirs();
-                            }
-                            file.createNewFile();
-                        }
-                        FileOutputStream os = new FileOutputStream(file);
-                        archive.extractFile(fileHeader, os);
-                        os.close();
-                    }
-                    fileHeader = archive.nextFileHeader();
-                }
-            }
-        } catch (Exception e) {
-            System.out.println("成果包解压失败!");
-            e.printStackTrace();
-        }
-    }
-}

+ 1 - 0
onemap-modules/onemap-file/src/main/java/com/onemap/file/service/LocalSysFileServiceImpl.java

@@ -5,6 +5,7 @@ import com.onemap.common.core.domain.TgclTypeDTO;
 import com.onemap.common.core.domain.UploadZipDTO;
 import com.onemap.common.core.domain.WordToPdfDTO;
 import com.onemap.common.core.utils.StringUtils;
+import com.onemap.common.core.utils.UnPackageUtils;
 import com.onemap.common.core.web.domain.RequestResult;
 import com.onemap.file.domain.ShpFileDTO;
 import com.onemap.file.domain.ZhxzFileDTO;

+ 0 - 80
onemap-modules/onemap-file/src/main/java/com/onemap/file/utils/UnPackageUtils.java

@@ -1,80 +0,0 @@
-package com.onemap.file.utils;
-
-import com.github.junrar.Archive;
-import com.github.junrar.rarfile.FileHeader;
-import net.lingala.zip4j.core.ZipFile;
-
-import java.io.File;
-import java.io.FileOutputStream;
-
-/**
- * @author : wangping
- * @createDate: 2021/7/12
- * @description:解压缩工具
- **/
-
-
-public class UnPackageUtils {
-
-    /**
-     * zip文件解压
-     *
-     * @param destPath 解压文件路径
-     * @param zipFile  压缩文件
-     *                 //* @param password 解压密码(如果有)
-     */
-    public static void unPackZip(File zipFile, String destPath) {
-
-        try {
-            ZipFile zip = new ZipFile(zipFile);
-            /*zip4j默认用GBK编码去解压,这里设置编码为GBK的*/
-            zip.setFileNameCharset("GBK");
-            zip.extractAll(destPath);
-
-            // 如果解压需要密码
-//            if (zip.isEncrypted()) {
-//                zip.setPassword(password);
-//            }
-        } catch (Exception e) {
-        }
-    }
-
-    /**
-     * rar文件解压(不支持有密码的压缩包)
-     *
-     * @param rarFile  rar压缩包
-     * @param destPath 解压保存路径
-     */
-    public static void unPackRar(File rarFile, String destPath) {
-        try (Archive archive = new Archive(rarFile)) {
-            if (null != archive) {
-                FileHeader fileHeader = archive.nextFileHeader();
-                File file = null;
-                while (null != fileHeader) {
-                    // 防止文件名中文乱码问题的处理
-                    String fileName = fileHeader.getFileNameW().isEmpty() ? fileHeader.getFileNameString() : fileHeader.getFileNameW();
-                    if (fileHeader.isDirectory()) {
-                        //是文件夹
-                        file = new File(destPath + File.separator + fileName);
-                        file.mkdirs();
-                    } else {
-                        //不是文件夹
-                        file = new File(destPath + File.separator + fileName.trim());
-                        if (!file.exists()) {
-                            if (!file.getParentFile().exists()) {
-                                // 相对路径可能多级,可能需要创建父目录.
-                                file.getParentFile().mkdirs();
-                            }
-                            file.createNewFile();
-                        }
-                        FileOutputStream os = new FileOutputStream(file);
-                        archive.extractFile(fileHeader, os);
-                        os.close();
-                    }
-                    fileHeader = archive.nextFileHeader();
-                }
-            }
-        } catch (Exception e) {
-        }
-    }
-}