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