From b12820b371835e7ff3984636cebbe3f1caeaddaf Mon Sep 17 00:00:00 2001
From: whycxzp <perryhsu@163.com>
Date: 星期一, 05 九月 2022 15:43:23 +0800
Subject: [PATCH] 追加物料附件

---
 src/main/java/com/whyc/service/MaterialService.java |   70 ++++++++++++++++++++++++++++++-----
 1 files changed, 60 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/whyc/service/MaterialService.java b/src/main/java/com/whyc/service/MaterialService.java
index f59b199..e0b1a16 100644
--- a/src/main/java/com/whyc/service/MaterialService.java
+++ b/src/main/java/com/whyc/service/MaterialService.java
@@ -12,6 +12,7 @@
 import com.whyc.pojo.ProductBom;
 import com.whyc.util.ActionUtil;
 import com.whyc.util.CommonUtil;
+import com.whyc.util.DateUtil;
 import com.whyc.util.FileUtil;
 import com.whyc.util.Zip4jUtil;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
@@ -26,10 +27,7 @@
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.LinkedList;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Service
@@ -358,14 +356,66 @@
     }
 
     /**
-     *
-     * @param multipartFile 琚拷鍔犵殑闄勪欢
+     * @param multipartFile 琚拷鍔犵殑闄勪欢,zip鍐呭彧鑳界殑闄勪欢閮藉繀椤绘槸鏂囦欢
      * @param material
      * @return 杩斿洖琚拷鍔犳枃浠剁殑鏂囦欢澶硅矾寰�
      */
-    public Response addAttachment(MultipartFile multipartFile, Material material) {
-        String dirPath = "doc_file" + File.separator + "material" + File.separator + material.getId() + material.getSubCode() + material.getSubModel();
-        //TODO
-        return new Response().setII(1,"涓婁紶瀹屾垚");
+    @Transactional
+    public Response addAttachment(MultipartFile multipartFile, Material material) throws IOException {
+        List<String> currentFileList = new LinkedList<>();
+        List<String> uploadingFileList = new LinkedList<>();
+
+        //String dirPath = "doc_file" + File.separator + "material" + File.separator + material.getId() + material.getSubCode() + material.getSubModel();
+        String dirPath = CommonUtil.getRootFile() + "material" + File.separator + material.getId() + material.getSubCode() + material.getSubModel();
+        File dirFile = new File(dirPath);
+
+        String originalFilename = multipartFile.getOriginalFilename();
+        Date now = new Date();
+        long timestamp = now.getTime();
+        String formattedTimestamp = DateUtil.YYYY_MM_DD_HH_MM_SS_UNION.format(now);
+
+        //鍘嬬缉鍖呮枃浠跺す鏍¢獙
+        File zipFile = new File(dirPath + File.separator + originalFilename);
+        multipartFile.transferTo(zipFile);
+        //瑙e帇鏂囦欢澶�,鍒犻櫎鍘焭ip鏂囦欢
+        String unPackageDir = dirPath + File.separator + timestamp;
+        Zip4jUtil.unPackZip(zipFile, null, unPackageDir);
+        File unPackageFile = new File(unPackageDir);
+        File[] unPackageFileList = unPackageFile.listFiles();
+        for (int i = 0; i < unPackageFileList.length; i++) {
+            File tempFile = unPackageFileList[i];
+            if(tempFile.isDirectory()){
+                FileUtil.deleteFile(unPackageFile);
+                return new Response().set(1,false,"鎷掔粷涓婁紶:涓婁紶鐨勫帇缂╁寘瀛樺湪鏂囦欢澶�");
+            }
+        }
+        zipFile.delete();
+
+        if(!dirFile.exists()){
+            dirFile.mkdirs();
+            //璺緞涓嶅瓨鍦�,璇存槑鏄娆′笂浼�,璁剧疆鐗╂枡瀵瑰簲鐨刦ileUrl
+            Material temp = new Material();
+            temp.setId(material.getId());
+            temp.setFileUrl(dirPath);
+            mapper.updateById(temp);
+        }else{
+            //鏌ヨ璺緞涓嬬幇鏈夌殑鎵�鏈夋枃浠�
+            String[] fileArr = dirFile.list();
+            currentFileList = Arrays.asList(fileArr);
+        }
+
+        //鏌ヨ鏂颁笂浼犵殑鏂囦欢璺緞
+        String[] unPackageFileArr = unPackageFile.list();
+        uploadingFileList = Arrays.asList(unPackageFileArr);
+        for (String uploadingFile : uploadingFileList){
+            if(currentFileList.contains(uploadingFile)){
+                new File(unPackageDir + File.separator + uploadingFile)
+                        .renameTo(new File(unPackageDir + File.separator + formattedTimestamp + uploadingFile));
+            }
+        }
+        //涓婁紶鐨勬枃浠跺す杞Щ鍒版寮忚矾寰�
+        org.aspectj.util.FileUtil.copyDir(unPackageFile,dirFile);
+
+        return new Response().set(1,true,"涓婁紶瀹屾垚");
     }
 }

--
Gitblit v1.9.1