From b4fd3ac09d2e3d2fde1eb5c4663620c573cd3997 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期一, 09 十二月 2024 10:13:17 +0800
Subject: [PATCH] 远场的报告解析

---
 inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java |  426 ++++++++++++++++++++++++++++++++--------------------
 1 files changed, 262 insertions(+), 164 deletions(-)

diff --git a/inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java b/inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java
index eb50374..154acef 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java
@@ -59,7 +59,7 @@
             Exceldata exceldata = new Exceldata();
             Map<Integer, Object> project = new HashMap<>();
             HashMap<String, Object> datas1 = new HashMap<>();
-            Boolean exitLoop=false;
+            Boolean exitLoop = false;
             for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
                 String s = "";
                 Sheet sheet = workbook.getSheetAt(i);
@@ -92,8 +92,8 @@
                             } else {
                                 switch (cell.getCellType()) {
                                     case STRING:
-                                        if (cell.getColumnIndex()==1) {
-                                            exitLoop=true;
+                                        if (cell.getColumnIndex() == 1) {
+                                            exitLoop = true;
                                             break;
                                         }
                                         if (StringUtils.isNotEmpty(s)) {
@@ -120,8 +120,8 @@
                                         System.out.print("NULL\t");
                                 }
                             }
-                            if (exitLoop){
-                                exitLoop=false;
+                            if (exitLoop) {
+                                exitLoop = false;
                                 break;
                             }
                             if (map.isEmpty()) {
@@ -146,7 +146,7 @@
                     for (Map<String, Object> number : hashMaps) {
                         number.put("绔彛", s1);
                         Double o = (Double) number.get("棰戠巼");
-                        if (o!=null) {
+                        if (o != null) {
                             floatList.add(o);
                         }
                     }
@@ -203,144 +203,256 @@
     public void getFuSheWord2(String sonLaboratory, InsOrderFile insOrderFile) {
         //璇诲彇excel鏂囦欢鍐呭
         String excelFilePath = wordUrl + "/" + insOrderFile.getFileUrl(); // 鏇存柊涓轰綘鐨勬枃浠惰矾寰�
-        String fileEncoding = "GBK"; // 鎴栧叾浠栫紪鐮佹牸寮忥紝濡侴BK, ISO-8859-1 绛�
-        Exceldata exceldata = new Exceldata();
-        HashMap<Integer, Object> project = new HashMap<>();
-        HashMap<String, Object> biaozhun = new HashMap<>();
-        HashMap<String, Object> pingjunzhi = new HashMap<>();
-        HashMap<String, Object> datas1 = new HashMap<>();
-        HashMap<String, Object> map2 = new HashMap<>();
-        List<Map<String, Object>> list = new ArrayList<>();
-        XWPFDocument document = new XWPFDocument();
-        String jiaodu = "";
-        String port = "";
-        try (CSVReader reader = new CSVReader(new InputStreamReader(new FileInputStream(excelFilePath), fileEncoding))) {
-            List<String[]> records = reader.readAll();
-            for (int i = 0; i < records.size(); i++) {
-                HashMap<String, Object> map1 = new HashMap<>();
-                HashMap<String, Object> pingjun = new HashMap<>();
-                String[] record = records.get(i);
-
-                for (int i1 = 0; i1 < record.length; i1++) {
-                    String value = record[i1];
-                    if (i == 0) {
-                        project.put(i1, value);
-                    }
-                    if (i == 1) {
-                        biaozhun.put(project.get(i1).toString(), value);
-                    }
-                    if (i > 2) {
-                        if (i1 == 0 && StringUtils.isNotEmpty(value)) {
-
-                            if (map2.size() != 0) {
-                                map2.put(port, list);
-                                datas1.put(jiaodu, map2);
-                                map2 = new HashMap<>();
-                            }
-                            datas1.put(value, "");
-                            jiaodu = value;
-                        } else if (i1 == 1 && StringUtils.isNotEmpty(value)) {
-                            if (list.size() != 0) {
-                                map2.put(port, list);
-                                list = new ArrayList<>();
-                            }
-                            map2.put(value, "");
-                            port = value;
-                        } else if (StringUtils.isNotEmpty(value)) {
-                            if (value.equals("鏈�澶у��") || value.equals("鏈�灏忓��") || value.equals("鎸囨爣") || value.equals("绫诲埆")) {
-                                break;
-                            } else if (value.equals("骞冲潎鍊�")) {
-                                for (int i2 = 0; i2 < record.length; i2++) {
-                                    String value1 = record[i2];
-                                    if (value1.equals("骞冲潎鍊�")) {
-                                        continue;
-                                    }
-                                    pingjun.put(project.get(i2).toString(), value1);
-                                }
-                                break;
-                            }
-                            map1.put(project.get(i1).toString(), value);
-                        }
-                    }
-                    System.out.print(value + " ");
-                }
-                if (map1.size() != 0) {
-                    list.add(map1);
-                }
-                if (pingjun.size() != 0) {
-                    pingjunzhi.put(jiaodu, pingjun);
-                }
-                if (i == records.size() - 1) {
-                    map2.put(port, list);
-                    datas1.put(jiaodu, map2);
-                }
-                System.out.println();
-            }
-            System.out.println("-----------------");
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        exceldata.setProject(project);
-        exceldata.setDataRow(datas1);
-        System.out.println(exceldata);
-
-
-        HashMap<String, Object> map = new HashMap<>();
-        for (String s : datas1.keySet()) {
-            Map<String, List<HashMap<String, Object>>> numbers = (Map<String, List<HashMap<String, Object>>>) datas1.get(s);
-            for (String s1 : numbers.keySet()) {
-                List<HashMap<String, Object>> hashMaps = numbers.get(s1);
-
-                List<Integer> floatList = new ArrayList<>();
-                for (Map<String, Object> number : hashMaps) {
-                    number.put("绔彛", s1);
-                    floatList.add(Integer.parseInt((String) number.get("娴嬭瘯棰戠巼(MHZ)")));
-                }
-                Integer maxValue = Collections.max(floatList);
-                Integer minValue = Collections.min(floatList);
-
-                if (map.get(minValue + "-" + maxValue + "-" + s) == null) {
-                    map.put(minValue + "-" + maxValue + "-" + s, s1);
-                } else {
-                    Object o = map.get(minValue + "-" + maxValue + "-" + s);
-                    map.put(minValue + "-" + maxValue + "-" + s, s1 + "," + o);
-                }
-            }
-
-        }
-        System.out.println(map);
-
-        int size = map.size();
-        for (String s1 : map.keySet()) {
-            String o = map.get(s1).toString();
-
-            List<String> collect = Arrays.stream(o.split(",")).collect(Collectors.toList());
-            int size1 = -1;
-
-            for (String s : datas1.keySet()) {
-                Map<String, List<HashMap<String, Object>>> o1 = (Map<String, List<HashMap<String, Object>>>) datas1.get(s);
-                for (String s3 : o1.keySet()) {
-                    List<HashMap<String, Object>> numbers = o1.get(s3);
-                    for (String s2 : collect) {
-                        if (s3.equals(s2)) {
-                            if (numbers.size() > size1) {
-                                size1 = numbers.size();
-                            }
-                        }
-                    }
-                    map.put(s1, o + "," + size1);
-                }
-            }
-
-        }
-        System.out.println(map);
+        FileInputStream fileInputStream = null;
+        Workbook workbook = null;
 
         try {
-            createWord2(sonLaboratory, document, exceldata, map, pingjunzhi, biaozhun, insOrderFile);
+            fileInputStream = new FileInputStream(new File(excelFilePath));
+            workbook = new XSSFWorkbook(fileInputStream); // 瀵逛簬 .xlsx 鏂囦欢
+            XWPFDocument document = new XWPFDocument();
+
+            Boolean exitLoop = false;
+            for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
+                Exceldata exceldata = new Exceldata();
+                HashMap<Integer, Object> project = new HashMap<>();
+                HashMap<String, Object> biaozhun = new HashMap<>();
+                HashMap<String, Object> pingjunzhi = new HashMap<>();
+                HashMap<String, Object> datas1 = new HashMap<>();
+                HashMap<String, Object> map2 = new HashMap<>();
+                List<Map<String, Object>> list = new ArrayList<>();
+                String jiaodu = "";
+                String port = "";
+                Integer count = 0;
+                Sheet sheet = workbook.getSheetAt(i);
+                Boolean biaoji = false;
+                int lastRowNum = sheet.getLastRowNum();
+                for (Row row : sheet) {
+
+                    count++;
+                    HashMap<String, Object> map1 = new HashMap<>();
+                    HashMap<String, Object> pingjun = new HashMap<>();
+
+                    HashMap<String, Object> map = new HashMap<>();
+                    for (Cell cell : row) {
+
+                        if (row.getRowNum() == 0) {
+                            switch (cell.getCellType()) {
+                                case STRING:
+                                    project.put(cell.getColumnIndex(), cell.getStringCellValue());
+                                    System.out.print(cell.getStringCellValue() + "\t");
+                                    break;
+                                case NUMERIC:
+                                    System.out.print(cell.getNumericCellValue() + "\t");
+                                    break;
+                                case BOOLEAN:
+                                    System.out.print(cell.getBooleanCellValue() + "\t");
+                                    break;
+                                case FORMULA:
+                                    System.out.print(cell.getCellFormula() + "\t");
+                                    break;
+                                default:
+                                    System.out.print("NULL\t");
+                            }
+                        } else if (row.getRowNum() == 1) {
+
+                            switch (cell.getCellType()) {
+                                case STRING:
+                                    biaozhun.put(project.get(cell.getColumnIndex()).toString(), cell.getStringCellValue());
+                                    break;
+                                case NUMERIC:
+                                    System.out.print(cell.getNumericCellValue() + "\t");
+                                    break;
+                                case BOOLEAN:
+                                    System.out.print(cell.getBooleanCellValue() + "\t");
+                                    break;
+                                case FORMULA:
+                                    System.out.print(cell.getCellFormula() + "\t");
+                                    break;
+                                default:
+                                    System.out.print("NULL\t");
+                            }
+                        } else if (row.getRowNum() > 2) {
+
+                            if (cell.getColumnIndex() == 0 && StringUtils.isNotEmpty(cell.getStringCellValue())) {
+
+                                if (map2.size() != 0) {
+                                    map2.put(port, list);
+                                    datas1.put(jiaodu, map2);
+                                    map2 = new HashMap<>();
+                                }
+                                datas1.put(cell.getStringCellValue(), "");
+                                jiaodu = cell.getStringCellValue();
+                            } else if (cell.getColumnIndex() == 1 && StringUtils.isNotEmpty(cell.getStringCellValue())) {
+                                if (list.size() != 0) {
+                                    map2.put(port, list);
+                                    list = new ArrayList<>();
+                                }
+                                map2.put(cell.getStringCellValue(), "");
+                                port = cell.getStringCellValue();
+
+                            } else {
+                                switch (cell.getCellType()) {
+                                    case STRING:
+                                        String value = cell.getStringCellValue();
+                                        if (value.equals("avg")) {
+                                            for (Cell cell1 : row) {
+                                                switch (cell1.getCellType()) {
+                                                    case STRING:
+
+                                                        break;
+                                                    case NUMERIC:
+                                                        pingjun.put(project.get(cell1.getColumnIndex()).toString(), cell1.getNumericCellValue());
+                                                        System.out.print(cell1.getNumericCellValue() + "\t");
+                                                        break;
+                                                    case BOOLEAN:
+                                                        System.out.print(cell1.getBooleanCellValue() + "\t");
+                                                        break;
+                                                    case FORMULA:
+                                                        String cellFormula = cell1.getCellFormula();
+                                                        Double numericCellValue = cell1.getNumericCellValue();
+                                                        pingjun.put(project.get(cell1.getColumnIndex()).toString(), cell1.getNumericCellValue());
+                                                        System.out.print(cellFormula);
+                                                        break;
+                                                    default:
+                                                        System.out.print("NULL\t");
+                                                }
+
+                                            }
+                                        } else {
+                                            biaoji = true;
+                                        }
+                                        break;
+                                    case NUMERIC:
+                                        map1.put(project.get(cell.getColumnIndex()).toString(), cell.getNumericCellValue());
+                                        System.out.print(cell.getNumericCellValue() + "\t");
+                                        break;
+                                    case BOOLEAN:
+                                        System.out.print(cell.getBooleanCellValue() + "\t");
+                                        break;
+                                    case FORMULA:
+                                        System.out.print(cell.getCellFormula() + "\t");
+                                        break;
+                                    default:
+                                        System.out.print("NULL\t");
+                                }
+
+                            }
+                        }
+                        if (biaoji) {
+                            biaoji = false;
+                            break;
+                        }
+                    }
+
+                    if (map1.size() != 0) {
+                        list.add(map1);
+                    }
+                    if (pingjun.size() != 0) {
+                        pingjunzhi.put(jiaodu, pingjun);
+                    }
+
+                    if (count == lastRowNum + 1) {
+                        map2.put(port, list);
+                        datas1.put(jiaodu, map2);
+                    }
+                    System.out.println();
+                }
+                exceldata.setProject(project);
+                exceldata.setDataRow(datas1);
+                System.out.println(exceldata);
+
+
+                HashMap<String, Object> map = new HashMap<>();
+                for (String s : datas1.keySet()) {
+                    Map<String, List<HashMap<String, Object>>> numbers = (Map<String, List<HashMap<String, Object>>>) datas1.get(s);
+                    for (String s1 : numbers.keySet()) {
+                        List<HashMap<String, Object>> hashMaps = numbers.get(s1);
+
+                        List<Integer> floatList = new ArrayList<>();
+                        for (Map<String, Object> number : hashMaps) {
+                            number.put("绔彛", s1);
+                            Double o = (Double) number.get("娴嬭瘯棰戠巼(MHZ)");
+                            floatList.add(o.intValue());
+                        }
+                        Integer maxValue = Collections.max(floatList);
+                        Integer minValue = Collections.min(floatList);
+
+                        if (map.get(minValue + "-" + maxValue + "-" + s) == null) {
+                            map.put(minValue + "-" + maxValue + "-" + s, s1);
+                        } else {
+                            Object o = map.get(minValue + "-" + maxValue + "-" + s);
+                            map.put(minValue + "-" + maxValue + "-" + s, s1 + "," + o);
+                        }
+                    }
+
+                }
+
+                System.out.println(map);
+
+
+                int size = map.size();
+                for (String s1 : map.keySet()) {
+                    String o = map.get(s1).toString();
+
+                    List<String> collect = Arrays.stream(o.split(",")).collect(Collectors.toList());
+                    int size1 = -1;
+
+                    for (String s : datas1.keySet()) {
+                        Map<String, List<HashMap<String, Object>>> o1 = (Map<String, List<HashMap<String, Object>>>) datas1.get(s);
+                        for (String s3 : o1.keySet()) {
+                            List<HashMap<String, Object>> numbers = o1.get(s3);
+                            for (String s2 : collect) {
+                                if (s3.equals(s2)) {
+                                    if (numbers.size() > size1) {
+                                        size1 = numbers.size();
+                                    }
+                                }
+                            }
+                            map.put(s1, o + "," + size1);
+                        }
+                    }
+
+                }
+                System.out.println(map);
+
+                createWord2(sonLaboratory, document, exceldata, map, pingjunzhi, biaozhun, insOrderFile);
+
+            }
+            // 杈撳嚭鍒版枃浠�
+            InsSample insSample = insSampleMapper.selectById(insOrderFile.getInsSampleId());
+            String[] split = insOrderFile.getFileName().split("\\.");
+            String name = insOrderFile.getFileName().replace("#", "&").substring(0, (insOrderFile.getFileName().length() - split[split.length - 1].length()));
+            String url = UUID.randomUUID() + "_" + insSample.getSampleCode() + "&" + sonLaboratory + name + "瑙f瀽鐨勮緪灏勭珯鐐规姤鍛�.docx";
+            url.replace("#", "&");
+            FileOutputStream out = new FileOutputStream(wordUrl + "/" + url);
+            document.write(out);
+            out.close();
+            document.close();
+            InsOrderFile orderFile = new InsOrderFile();
+            orderFile.setInsOrderId(insOrderFile.getInsOrderId());
+            orderFile.setInsSampleId(insOrderFile.getInsSampleId());
+            orderFile.setFileUrl(url);
+            orderFile.setType(2);
+            orderFile.setFileName(insSample.getSampleCode() + "&" + sonLaboratory + name + "瑙f瀽鐨勮緪灏勭珯鐐规姤鍛�.docx");
+            orderFile.setSonLaboratory(sonLaboratory);
+            insOrderFileMapper.insert(orderFile);
+
         } catch (IOException e) {
             e.printStackTrace();
-        }
+        } finally {
+            // 鍏抽棴璧勬簮
+            try {
+                if (workbook != null) {
+                    workbook.close();
+                }
+                if (fileInputStream != null) {
+                    fileInputStream.close();
+                }
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
 
+        }
     }
 
 
@@ -539,7 +651,7 @@
         try {
             InsSample insSample = insSampleMapper.selectById(insOrderFile.getInsSampleId());
             String[] split = insOrderFile.getFileName().split("\\.");
-            String name = insOrderFile.getFileName().replace('#','&').substring(0, (insOrderFile.getFileName().length() - split[split.length - 1].length()));
+            String name = insOrderFile.getFileName().replace('#', '&').substring(0, (insOrderFile.getFileName().length() - split[split.length - 1].length()));
             String url = UUID.randomUUID() + "_" + insSample.getSampleCode() + "&" + sonLaboratory + name + "瑙f瀽鐨勮緪灏勭珯鐐规姤鍛�.docx";
             url.replace("#", "&");
             FileOutputStream out = new FileOutputStream(wordUrl + "/" + url);
@@ -608,6 +720,7 @@
 
 
             List<String> collect = Arrays.stream(split).collect(Collectors.toList());
+            collect.sort((o1, o21) -> Integer.parseInt(o1.substring((o1.length() - 1))) - Integer.parseInt(o21.substring(o21.length() - 1)));
 
             int size1 = 0;
 
@@ -689,7 +802,10 @@
 
                 XWPFParagraph paragraph3 = table.getRow(0).getCell(3).getParagraphArray(0);
                 XWPFRun run3 = paragraph3.createRun();
-                run3.setText(bz.get(s2).toString());
+                if (bz.get(s2) != null) {
+                    run3.setText(bz.get(s2).toString());
+                }
+
 
                 XWPFParagraph paragraph4 = table.getRow(0).getCell(4).getParagraphArray(0);
                 XWPFRun run4 = paragraph4.createRun();
@@ -726,7 +842,10 @@
                 }
 
                 Map<Integer, List<Map<String, Object>>> group = mapList.stream()
-                        .collect(Collectors.groupingBy(item -> Integer.parseInt(item.get("娴嬭瘯棰戠巼(MHZ)").toString())));
+                        .collect(Collectors.groupingBy(item -> {
+                            Double aDouble = (Double) item.get("娴嬭瘯棰戠巼(MHZ)");
+                            return aDouble.intValue();
+                        }));
 
 
                 int hang = 2;
@@ -762,28 +881,7 @@
                 size++;
             }
         }
-        // 杈撳嚭鍒版枃浠�
-        try {
-            InsSample insSample = insSampleMapper.selectById(insOrderFile.getInsSampleId());
-            String[] split = insOrderFile.getFileName().split("\\.");
-            String name = insOrderFile.getFileName().replace("#", "&").substring(0, (insOrderFile.getFileName().length() - split[split.length - 1].length()));
-            String url = UUID.randomUUID() + "_" + insSample.getSampleCode() + "&" + sonLaboratory + name + "瑙f瀽鐨勮緪灏勭珯鐐规姤鍛�.docx";
-            url.replace("#", "&");
-            FileOutputStream out = new FileOutputStream(wordUrl + "/" + url);
-            document.write(out);
-            out.close();
-            document.close();
-            InsOrderFile orderFile = new InsOrderFile();
-            orderFile.setInsOrderId(insOrderFile.getInsOrderId());
-            orderFile.setInsSampleId(insOrderFile.getInsSampleId());
-            orderFile.setFileUrl(url);
-            orderFile.setType(2);
-            orderFile.setFileName(insSample.getSampleCode() + "&" + sonLaboratory + name + "瑙f瀽鐨勮緪灏勭珯鐐规姤鍛�.docx");
-            orderFile.setSonLaboratory(sonLaboratory);
-            insOrderFileMapper.insert(orderFile);
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
+
 
     }
 

--
Gitblit v1.9.3