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