From 99b7b5e457d9217513e615c86f854372e5940c03 Mon Sep 17 00:00:00 2001 From: whycxzp <perryhsu@163.com> Date: 星期五, 11 八月 2023 10:41:35 +0800 Subject: [PATCH] 更新产品图片对应逻辑 --- src/main/java/com/whyc/service/ProductService.java | 64 ++++++++++++++++++++++++++++++- 1 files changed, 61 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/whyc/service/ProductService.java b/src/main/java/com/whyc/service/ProductService.java index 910de53..1d9d930 100644 --- a/src/main/java/com/whyc/service/ProductService.java +++ b/src/main/java/com/whyc/service/ProductService.java @@ -10,8 +10,10 @@ import com.whyc.pojo.*; import com.whyc.util.DateUtil; import com.whyc.util.*; +import org.apache.poi.hssf.usermodel.*; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.*; +import org.apache.poi.xssf.usermodel.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -146,14 +148,16 @@ String fileTempUrl = fileList.get(i); //鏌ヨ闇�涓婁紶鐨刡om鏁版嵁 //if (fileTempUrl.contains(".xls") && fileTempUrl.contains("(BOM)")) { + int excelType = 1; //.xls if (fileTempUrl.substring(fileTempUrl.lastIndexOf(File.separator)+1).contains("(BOM).xls")) { Workbook workbook = null; InputStream inputStream = new FileInputStream(new File(fileTempUrl)); workbook = WorkbookFactory.create(inputStream); inputStream.close(); - List<? extends PictureData> allPictures = workbook.getAllPictures(); + //List<? extends PictureData> allPictures = workbook.getAllPictures(); if(fileTempUrl.substring(fileTempUrl.lastIndexOf(".")+1).equals("xlsx")) { - Collections.sort(allPictures, new Comparator<PictureData>() { + excelType = 2; //.xlsx + /*Collections.sort(allPictures, new Comparator<PictureData>() { @Override public int compare(PictureData o1, PictureData o2) { // Name: /xl/media/image1.png - Content Type: image/png @@ -171,10 +175,43 @@ } - }); + });*/ } //鍙栫涓�涓猻heet琛� Sheet sheet = workbook.getSheetAt(0); + //瀛樺偍鍥剧墖淇℃伅鍙婃墍鍦ㄥ垎椤� + Map<Integer,PictureData> pictureDataMap = new HashMap<>(); + if(excelType == 1){ //.xls + List<HSSFShape> children = ((HSSFSheet) sheet).getDrawingPatriarch().getChildren(); + for (HSSFShape child : children) { + HSSFPicture picture = (HSSFPicture)child; + HSSFPictureData pictureData = picture.getPictureData(); + HSSFClientAnchor anchor = (HSSFClientAnchor) child.getAnchor(); + //琛�,涓嶈兘璺ㄨ; + int row1 = anchor.getRow1(); + int row2 = anchor.getRow2(); + if(row1 == row2){ + //涓嶈法琛�,鏈夋晥 + pictureDataMap.put(row1,pictureData); + } + } + } + else if(excelType == 2){ //.xlsx + List<XSSFShape> children = ((XSSFSheet) sheet).getDrawingPatriarch().getShapes(); + for (XSSFShape child : children) { + XSSFPicture picture = (XSSFPicture)child; + XSSFPictureData pictureData = picture.getPictureData(); + XSSFClientAnchor anchor = (XSSFClientAnchor) child.getAnchor(); + //琛�,涓嶈兘璺ㄨ; + int row1 = anchor.getRow1(); + int row2 = anchor.getRow2(); + if(row1 == row2){ + //涓嶈法琛�,鏈夋晥 + pictureDataMap.put(row1,pictureData); + } + } + } + Set<Integer> pictureRowSet = pictureDataMap.keySet(); int lastRowNum = sheet.getLastRowNum(); //鍙栫涓夎,骞朵互绗笁琛屽紑濮� Row row2 = sheet.getRow(1); @@ -261,6 +298,7 @@ } break; case 15: { + /* 寮冪敤,涓嶉�傜敤浜� 鍥剧墖涓嶆寜椤哄簭鎽嗘斁鎯呭喌 //鍥剧墖,浠�0寮�濮�,鍒板浘鐗噑ize涓烘 int m = k - 2; if (m < allPictures.size()) { @@ -281,6 +319,26 @@ fileOutputStream.write(data); bom.setPictureUrl(picturePathFront); + }*/ + if (pictureRowSet.contains(k)) { + + PictureData pictureData = pictureDataMap.get(k); + //鍥剧墖瀛樺偍 product_submit/username/2022-07/ + String approvingPath = rootFile + File.separator + "product_submit" + File.separator + user.getName() + File.separator + dateFormat + File.separator + timeStamp; + File provingFile = new File(approvingPath); + if (!provingFile.exists()) { + provingFile.mkdirs(); + } + String suffix = pictureData.suggestFileExtension(); + String picturePath = approvingPath + File.separator + bom.getSubModel() + "-bom." + suffix; + String picturePathFront = "doc_file" + File.separator + "product_submit" + File.separator + user.getName() + File.separator + dateFormat + File.separator + timeStamp + File.separator + bom.getSubModel() + "-bom." + suffix; + byte[] data = pictureData.getData(); + FileOutputStream fileOutputStream = null; + File pictureFile = new File(picturePath); + fileOutputStream = new FileOutputStream(pictureFile); + fileOutputStream.write(data); + + bom.setPictureUrl(picturePathFront); } } break; -- Gitblit v1.9.1