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