zss
2024-12-09 b4fd3ac09d2e3d2fde1eb5c4663620c573cd3997
远场的报告解析
已修改1个文件
426 ■■■■■ 文件已修改
inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java 426 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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"; // 或其他编码格式,如GBK, 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 + "解析的辐射站点报告.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 + "解析的辐射站点报告.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 + "解析的辐射站点报告.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 + "解析的辐射站点报告.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 + "解析的辐射站点报告.docx");
            orderFile.setSonLaboratory(sonLaboratory);
            insOrderFileMapper.insert(orderFile);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }