From 060a038f5eb6a0e7a6e560475dbd4242749a55d1 Mon Sep 17 00:00:00 2001
From: whycxzp <perryhsu@163.com>
Date: 星期三, 03 八月 2022 10:47:53 +0800
Subject: [PATCH] 更新zip解析

---
 src/main/java/com/whyc/service/ProductBomApprovingService.java |   89 +++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 82 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/whyc/service/ProductBomApprovingService.java b/src/main/java/com/whyc/service/ProductBomApprovingService.java
index 272bdca..07617a6 100644
--- a/src/main/java/com/whyc/service/ProductBomApprovingService.java
+++ b/src/main/java/com/whyc/service/ProductBomApprovingService.java
@@ -19,10 +19,7 @@
 
 import javax.annotation.Resource;
 import javax.xml.crypto.Data;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
+import java.io.*;
 import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -118,6 +115,7 @@
 
     public Response zipParse(MultipartFile file) throws IOException, InvalidFormatException {
         List<ProductBomApproving> list = new LinkedList<>();
+        List<ProductBomApproving> referenceList = new LinkedList<>();
         Response response = new Response();
         //妫�鏌ユ槸鍚︿负zip
         boolean isZip = Zip4jUtil.checkZipFileParam(file);
@@ -147,7 +145,55 @@
         List<FileUrlDTO> dwgExistsList = getDwgList(fileList);
         for (int i = 0; i < fileList.size(); i++) {
             String fileTempUrl = fileList.get(i);
-            if(fileTempUrl.contains(".xls")){
+            //鏌ヨ鍒颁富鍙傝�冭〃鐨勬暟鎹�
+            if(fileTempUrl.contains(".xls") && fileTempUrl.contains("BOM-erp")){
+                Workbook workbook = null;
+                InputStream inputStream = new FileInputStream(new File(fileTempUrl));
+                workbook = WorkbookFactory.create(inputStream);
+                inputStream.close();
+                //鍙栫涓�涓猻heet琛�
+                Sheet sheet = workbook.getSheetAt(0);
+                int lastRowNum = sheet.getLastRowNum();
+                //鍙栫涓夎,骞朵互绗笁琛屽紑濮�
+                Row row2 = sheet.getRow(1);
+                short lastCellNum = row2.getLastCellNum();
+                for (int k = 2; k < lastRowNum+1; k++) {
+                    ProductBomApproving bomApproving = new ProductBomApproving();
+                    for (int j = 1; j < lastCellNum; j++) {
+                        Row row = sheet.getRow(k);
+                        Cell cell = row.getCell(j);
+                        String cellValue = null;
+                        Double cellValueInt = 0d;
+                        if(j == 9){
+                            cellValueInt = cell.getNumericCellValue();
+                        }else if(j!=15){
+                            cellValue = cell.getStringCellValue();
+                        }
+                        switch (j){
+                            case 1:{bomApproving.setParentCode(cellValue);}break;
+                            case 2:{bomApproving.setParentName(cellValue);}break;
+                            case 3:{bomApproving.setParentModel(cellValue);}break;
+                            case 4:{bomApproving.setCategory(cellValue);}break;
+                            case 5:{bomApproving.setSubCode(cellValue);}break;
+                            case 6:{bomApproving.setSubName(cellValue);}break;
+                            case 7:{bomApproving.setSubModel(cellValue);}break;
+                            case 8:{bomApproving.setUnit(cellValue);}break;
+                            case 9:{bomApproving.setQuantity(cellValueInt.intValue());}break;
+                            case 10:{bomApproving.setProducer(cellValue);}break;
+                            case 11:{bomApproving.setMaterial(cellValue);}break;
+                            case 12:{bomApproving.setThickness(cellValue);}break;
+                            case 13:{bomApproving.setSurfaceDetail(cellValue);}break;
+                            case 14:{bomApproving.setNotes(cellValue);}break;
+                            case 15:{
+
+                                }
+                            }break;
+                        }
+                    referenceList.add(bomApproving);
+                }
+            }
+            //杩欎釜鏄瓙琛ㄦ暟鎹�,闇�瑕佹彁浜ゅ鎵�
+            else if(fileTempUrl.contains(".xls")){
                 File fileTemp = new File(fileTempUrl);
                 Workbook workbook = null;
                 workbook = WorkbookFactory.create(fileTemp);
@@ -246,14 +292,43 @@
                 }
             }
         }
-        String parentModel = list.get(0).getParentModel();
+        /*String parentModel = list.get(0).getParentModel();
         for (int i = 0; i < list.size(); i++) {
             if(!parentModel.equals(list.get(i).getParentModel())){
                 return new Response().set(1,false,"鎷掔粷瑙f瀽,涓�娆″鎵瑰寘鍚笉鍚岀殑浜у搧淇敼");
             }
-        }
+        }*/
         //閫氳繃鍖呭悕,鏌ヨ宸ュ崟娴佺▼瀹℃壒鏍囬
         //String nextTitle = mainService.getNextTitle(originalFilename);
+
+        //闇�鎻愪氦瀹℃壒鐨勮褰�,閫愭潯瀵规瘮鍙傝�冭〃,瀛愭枡缂栫爜/瀛愭枡鍨嬪彿/瀛愭枡鏁伴噺
+        for (ProductBomApproving sub:list){
+            String subCode = sub.getSubCode();
+            String subModel = sub.getSubModel();
+            Integer quantity = sub.getQuantity();
+            boolean exists = false;
+            for (ProductBomApproving reference:referenceList){
+                if(subCode.equals(reference.getSubCode())){
+                    exists = true;
+                    if(subModel.equals(reference.getSubModel())){
+                        if(quantity.intValue() == reference.getQuantity()){
+                            break;
+                        }else{
+                            return response.set(1,false,"缁撴瀯浠跺鎵规彁浜や腑鍒椾腑璐у搧缂栫爜:"+subCode+"瀵瑰簲鐨勬暟閲�:"+quantity+"鍦ㄥ弬鑰僢om琛ㄤ腑涓嶆纭�");
+                        }
+                    }else{
+                        return response.set(1,false,"缁撴瀯浠跺鎵规彁浜や腑鍒椾腑璐у搧缂栫爜:"+subCode+"瀵瑰簲鐨勮鏍煎瀷鍙�:"+subModel+"鍦ㄥ弬鑰僢om琛ㄤ腑涓嶆纭�");
+                    }
+                }
+            }
+            if(!exists){
+                return response.set(1,false,"缁撴瀯浠跺鎵规彁浜や腑鍒椾腑璐у搧缂栫爜:"+subCode+"鍦ㄥ弬鑰僢om琛ㄤ腑涓嶅瓨鍦�");
+            }
+            ProductBomApproving reference = referenceList.get(0);
+            sub.setParentCode(reference.getParentCode());
+            sub.setParentModel(reference.getParentModel());
+            sub.setParentName(reference.getParentName());
+        };
         String nextTitle = originalFilename.substring(0,originalFilename.lastIndexOf("."));
         return response.setIII(1,true,list,nextTitle,"瑙f瀽瀹屾垚");
     }

--
Gitblit v1.9.1