From 48e2f23871edef3171447bb69a998b8f26c316cb Mon Sep 17 00:00:00 2001 From: whycxzp <perryhsu@163.com> Date: 星期三, 21 六月 2023 17:20:49 +0800 Subject: [PATCH] 文件类型动态解析更新 --- src/main/java/com/whyc/service/SOPService.java | 247 +++++++++++++++++++++++++++++++++++++----------- 1 files changed, 189 insertions(+), 58 deletions(-) diff --git a/src/main/java/com/whyc/service/SOPService.java b/src/main/java/com/whyc/service/SOPService.java index a0fdb3f..838cfd6 100644 --- a/src/main/java/com/whyc/service/SOPService.java +++ b/src/main/java/com/whyc/service/SOPService.java @@ -1,7 +1,6 @@ package com.whyc.service; import com.whyc.dto.Response; -import com.whyc.dto.SopDto; import com.whyc.mapper.SOPMapper; import com.whyc.pojo.SOP; import com.whyc.pojo.SOPProduct; @@ -15,10 +14,7 @@ import java.io.IOException; import java.io.InputStream; import java.text.ParseException; -import java.util.Date; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @Service @@ -39,64 +35,200 @@ //鍙栫涓�涓猻heet琛� Sheet sheet = workbook.getSheetAt(0); int lastRowNum = sheet.getLastRowNum(); + //鏂囦欢鍚� + sop.setFileName(sheet.getRow(2).getCell(2).getStringCellValue()); + //涓嬮潰鐨剅ow鏄姩鎬佺殑,鍥犱负鏂囦欢绫诲瀷鐨勮鏁版槸鍔ㄦ�佹嫇灞曠殑 + //閿氱偣:鏂囦欢鐗堟湰 + int fileVersionIndex = 0; + int fileSuitableProductIndex = 0; //鏍″噯lastRowNum - for (int i = 9; i <= lastRowNum; i++) { - if(sheet.getRow(i).getCell(1).getStringCellValue().equals("鍙戝竷璇存槑")){ + for (int i = 4; i <= lastRowNum; i++) { + String stringCellValue = sheet.getRow(i).getCell(1).getStringCellValue(); + if(stringCellValue.equals("鏂囦欢鐗堟湰")){ + fileVersionIndex = i; + continue; + }else if(stringCellValue.equals("鏂囦欢閫傜敤浜у搧")){ + fileSuitableProductIndex = i; + continue; + } + if(stringCellValue.equals("鍙戝竷璇存槑")){ lastRowNum = i; break; } } - //鍥哄畾5鍒� - short cellNum = 5; - //鏂囦欢鍚� - sop.setFileName(sheet.getRow(2).getCell(2).getStringCellValue()); - //鏂囦欢绫诲瀷 - Row rowType = sheet.getRow(4); - String typeStr1 = rowType.getCell(2).getStringCellValue(); - String typeStr2 = rowType.getCell(3).getStringCellValue(); - String typeStr3 = rowType.getCell(4).getStringCellValue(); - String typeStr4 = rowType.getCell(5).getStringCellValue(); - String typeStr5 = rowType.getCell(6).getStringCellValue(); - String typeStr6 = rowType.getCell(7).getStringCellValue(); - String typeStr7 = rowType.getCell(8).getStringCellValue(); - String typeStr8 = rowType.getCell(9).getStringCellValue(); - int fileType; - if(typeStr1.contains("R")){ - fileType = 11; - } - else if(typeStr2.contains("R")){ - fileType = 12; - } - else if(typeStr3.contains("R")){ - fileType = 13; - } - else if(typeStr4.contains("R")){ - fileType = 14; - } - else if(typeStr5.contains("R")){ - fileType = 21; - } - else if(typeStr6.contains("R")){ - fileType = 22; - } - else if(typeStr7.contains("R")){ - fileType = 23; - } - else if(typeStr8.contains("R")){ - fileType = 24; - }else{ - return new Response<>().set(1,false,"鏂囦欢绫诲瀷鏈嬀閫�"); - } - sop.setFileType("fileType"); - sop.setFileVersion(sheet.getRow(5).getCell(2).getStringCellValue()); - sop.setFileRelatedVersion(sheet.getRow(5).getCell(7).getStringCellValue()); + List<Map<String,List<String>>> fileTypeList = new LinkedList<>(); + StringBuilder fileTypeSb = new StringBuilder(); + //鏂囦欢绫诲瀷寮�濮媔ndex + int fileTypeStartIndex = 3; + for (int i = fileTypeStartIndex; i < fileVersionIndex; i++) { //杩欓噷闈㈢殑閮芥槸鏂囦欢绫诲瀷鐩稿叧鍐呭 + //閬嶅巻姣忎竴琛�,index = 2,6鍒�,鎼滅储鎵�鏈夌殑澶ч樁娈� + String cellValue = sheet.getRow(i).getCell(2).getStringCellValue(); + if(!cellValue.contains("拢")&& !cellValue.contains("R")&& !cellValue.equals("")){ //纭畾涓哄ぇ闃舵 + Map<String,List<String>> map = new LinkedHashMap<>(); + List<String> cellList = new LinkedList<>(); + for (int j = i+1; j < fileVersionIndex; j++) { + Cell cell2 = sheet.getRow(j).getCell(2); + String cellValue2 = cell2.getStringCellValue(); + if(!cellValue2.contains("拢")&& !cellValue2.contains("R")&& !cellValue2.equals("")){ //纭畾涓轰笅涓�涓ぇ闃舵 + break; + }else{ + if(cellValue2.equals("")){ + break; + } + if(cellValue2.contains("R")){ + fileTypeSb.append(cellValue).append("-").append(cellValue2).append(";"); + break; + } + cellList.add(cellValue2); - sop.setEditor(sheet.getRow(6).getCell(2).getStringCellValue()); - sop.setAuditor(sheet.getRow(6).getCell(7).getStringCellValue()); + } - String releaseTimeStr = sheet.getRow(7).getCell(2).getStringCellValue(); + // + Cell cell3 = sheet.getRow(j).getCell(3); + String cellValue3 = cell3.getStringCellValue(); + if(!cellValue3.contains("拢")&& !cellValue3.contains("R")&& !cellValue3.equals("")){ //纭畾涓轰笅涓�涓ぇ闃舵 + break; + }else{ + if(cellValue3.equals("")){ + break; + } + if(cellValue3.contains("R")){ + fileTypeSb.append(cellValue).append("-").append(cellValue3).append(";"); + break; + } + cellList.add(cellValue3); + + } + + // + Cell cell4 = sheet.getRow(j).getCell(4); + String cellValue4 = cell4.getStringCellValue(); + if(!cellValue4.contains("拢")&& !cellValue4.contains("R")&& !cellValue4.equals("")){ //纭畾涓轰笅涓�涓ぇ闃舵 + break; + }else{ + if(cellValue4.equals("")){ + break; + } + if(cellValue4.contains("R")){ + fileTypeSb.append(cellValue).append("-").append(cellValue4).append(";"); + break; + } + cellList.add(cellValue4); + + } + + // + Cell cell5 = sheet.getRow(j).getCell(5); + String cellValue5 = cell5.getStringCellValue(); + if(!cellValue5.contains("拢")&& !cellValue5.contains("R")&& !cellValue5.equals("")){ //纭畾涓轰笅涓�涓ぇ闃舵 + break; + }else{ + if(cellValue5.equals("")){ + break; + } + if(cellValue5.contains("R")){ + fileTypeSb.append(cellValue).append("-").append(cellValue5).append(";"); + break; + } + cellList.add(cellValue5); + + } + } + map.put(cellValue,cellList); + fileTypeList.add(map); + } + + //鍙互鎻愬彇鏂规硶 + String cellValueRight = sheet.getRow(i).getCell(6).getStringCellValue(); + if(!cellValueRight.contains("拢")&& !cellValueRight.contains("R")&& !cellValueRight.equals("")){ //纭畾涓哄ぇ闃舵 + Map<String,List<String>> map = new LinkedHashMap<>(); + List<String> cellList = new LinkedList<>(); + for (int j = i+1; j < fileVersionIndex; j++) { + Cell cell2 = sheet.getRow(j).getCell(6); + String cellValue2 = cell2.getStringCellValue(); + if(!cellValue2.contains("拢")&& !cellValue2.contains("R")&& !cellValue2.equals("")){ //纭畾涓轰笅涓�涓ぇ闃舵 + break; + }else{ + if(cellValue2.equals("")){ + break; + } + if(cellValue2.contains("R")){ + fileTypeSb.append(cellValueRight).append("-").append(cellValue2).append(";"); + break; + } + cellList.add(cellValue2); + + } + + // + Cell cell3 = sheet.getRow(j).getCell(7); + String cellValue3 = cell3.getStringCellValue(); + if(!cellValue3.contains("拢")&& !cellValue3.contains("R")&& !cellValue3.equals("")){ //纭畾涓轰笅涓�涓ぇ闃舵 + break; + }else{ + if(cellValue3.equals("")){ + break; + } + if(cellValue3.contains("R")){ + fileTypeSb.append(cellValueRight).append("-").append(cellValue3).append(";"); + break; + } + cellList.add(cellValue3); + + } + + // + Cell cell4 = sheet.getRow(j).getCell(8); + String cellValue4 = cell4.getStringCellValue(); + if(!cellValue4.contains("拢")&& !cellValue4.contains("R")&& !cellValue4.equals("")){ //纭畾涓轰笅涓�涓ぇ闃舵 + break; + }else{ + if(cellValue4.equals("")){ + break; + } + if(cellValue4.contains("R")){ + fileTypeSb.append(cellValueRight).append("-").append(cellValue4).append(";"); + break; + } + cellList.add(cellValue4); + + } + + // + Cell cell5 = sheet.getRow(j).getCell(9); + String cellValue5 = cell5.getStringCellValue(); + if(!cellValue5.contains("拢")&& !cellValue5.contains("R")&& !cellValue5.equals("")){ //纭畾涓轰笅涓�涓ぇ闃舵 + break; + }else{ + if(cellValue5.equals("")){ + break; + } + if(cellValue5.contains("R")){ + fileTypeSb.append(cellValueRight).append("-").append(cellValue5).append(";"); + break; + } + cellList.add(cellValue5); + + } + } + map.put(cellValueRight,cellList); + fileTypeList.add(map); + } + } + + sop.setFileTypeList(fileTypeList); + + sop.setFileType(fileTypeSb.toString()); + + sop.setFileVersion(sheet.getRow(fileVersionIndex).getCell(2).getStringCellValue()); + sop.setFileRelatedVersion(sheet.getRow(fileVersionIndex).getCell(7).getStringCellValue()); + + sop.setEditor(sheet.getRow(fileVersionIndex+1).getCell(2).getStringCellValue()); + sop.setAuditor(sheet.getRow(fileVersionIndex+1).getCell(7).getStringCellValue()); + + String releaseTimeStr = sheet.getRow(fileVersionIndex+2).getCell(2).getStringCellValue(); Date releaseTime; try { if(releaseTimeStr.contains(".")){ @@ -117,11 +249,10 @@ sop.setReleaseNotes(releaseNotes); //绗�10琛屽紑濮�,鍊掓暟绗�2琛屾埅姝� - int applyModelNum = lastRowNum-9; - for (int i = 0; i < applyModelNum; i++) { + for (int i = fileSuitableProductIndex+1; i < lastRowNum; i++) { SOPProduct product = new SOPProduct(); //鍙栫3鍒�,绗�5鍒� - Cell cell = sheet.getRow(9 + i).getCell(2); + Cell cell = sheet.getRow(i).getCell(2); cell.setCellType(Cell.CELL_TYPE_STRING); String code = cell.getStringCellValue(); String codeAutoFill; @@ -132,7 +263,7 @@ } product.setCode(codeAutoFill); - String model = sheet.getRow(9 + i).getCell(7).getStringCellValue(); + String model = sheet.getRow(i).getCell(7).getStringCellValue(); if((code.equals("") && !model.equals("")) || (!code.equals("") && model.equals(""))){ return new Response<>().set(1,false,"鐗╂枡缂栫爜鍜屽瀷鍙峰繀椤诲悓鏃朵负绌�"); }else{ -- Gitblit v1.9.1