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