zss
2025-05-12 c0a846559e623369636ebf7ba6506958e7a3e913
inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java
@@ -1,6 +1,7 @@
package com.yuanchu.mom.utils;
import cn.hutool.core.lang.UUID;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.deepoove.poi.data.*;
import com.deepoove.poi.data.style.*;
import com.yuanchu.mom.dto.Exceldata;
@@ -22,6 +23,7 @@
import javax.annotation.Resource;
import java.io.*;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@@ -384,6 +386,9 @@
                        for (Map<String, Object> number : hashMaps) {
                            number.put("端口", s1);
                            Double o = (Double) number.get("测试频率(MHZ)");
                            if (ObjectUtils.isNull(o)){
                                 o = (Double) number.get("测量频率(MHz)");
                            }
                            floatList.add(o.intValue());
                        }
                        Integer maxValue = Collections.max(floatList);
@@ -545,7 +550,13 @@
                // 创建一个表格
                int checkItemRowNum = row;
                for (int i = 0; i < checkItemRowNum; i++) {
                    table1.createRow();
                    XWPFTableRow tableRow = table1.createRow();
                    for (XWPFTableCell tableCell : tableRow.getTableCells()) {
                        // 设置单元格内容居中对齐
                        for (XWPFParagraph paragraph : tableCell.getParagraphs()) {
                            paragraph.setAlignment(ParagraphAlignment.CENTER);
                        }
                    }
                }
                //垂直
                mergeCellsVertically(table1, 0, rowNum, rowNum + checkItemRowNum - 1);
@@ -625,8 +636,17 @@
                        run10.setText(s3);
                    }
                }
                Map<Double, List<Map<String, Object>>> group = mapList.stream()
                        .collect(Collectors.groupingBy(item -> (Double) item.get("频率")));
                Map<BigDecimal, List<Map<String, Object>>> group = mapList.stream()
                        .collect(Collectors.groupingBy(item -> {
                            BigDecimal value = new BigDecimal(String.valueOf(item.get("频率")));
                            if (value.scale() <= 0 || value.stripTrailingZeros().scale() <= 0) {
                                // 没有小数部分,返回整数字符串
                                return new BigDecimal(value.intValue());
                            } else {
                                // 有小数部分,返回原始值的字符串形式
                                return value;
                            }
                        }));
                group = new TreeMap<>(group);
                int hang = 2;
                Double count = 0.0;
@@ -692,7 +712,7 @@
                        }
                    }
                }
                for (Double aDouble : group.keySet()) {
                for (BigDecimal aDouble : group.keySet()) {
                    List<Map<String, Object>> mapList1 = group.get(aDouble);
                    for (Map<String, Object> stringObjectMap : mapList1) {
                        String port = stringObjectMap.get("端口").toString();
@@ -726,8 +746,7 @@
                                        passFlag = false;
                                    }
                                }
                                String project = stringObjectMap.get(s2).toString();
                                run10.setText(project);
                                run10.setText(String.format("%.2f", value));
                            }
                        }
                    }
@@ -802,26 +821,32 @@
            mergeCellsHorizontally(table1, 0, 4, cell - 2);
            XWPFParagraph paragraph12 = table1.getRow(0).getCell(0).getParagraphArray(0);
            paragraph12.setAlignment(ParagraphAlignment.CENTER);
            XWPFRun run12 = paragraph12.createRun();
            run12.setText("序号");
            XWPFParagraph paragraph13 = table1.getRow(0).getCell(1).getParagraphArray(0);
            paragraph13.setAlignment(ParagraphAlignment.CENTER);
            XWPFRun run13 = paragraph13.createRun();
            run13.setText("检验项目");
            XWPFParagraph paragraph14 = table1.getRow(0).getCell(2).getParagraphArray(0);
            paragraph14.setAlignment(ParagraphAlignment.CENTER);
            XWPFRun run14 = paragraph14.createRun();
            run14.setText("单位");
            XWPFParagraph paragraph15 = table1.getRow(0).getCell(3).getParagraphArray(0);
            paragraph15.setAlignment(ParagraphAlignment.CENTER);
            XWPFRun run15 = paragraph15.createRun();
            run15.setText("标准要求");
            XWPFParagraph paragraph16 = table1.getRow(0).getCell(cell - 1).getParagraphArray(0);
            paragraph16.setAlignment(ParagraphAlignment.CENTER);
            XWPFRun run16 = paragraph16.createRun();
            run16.setText("检验结论");
            XWPFParagraph paragraph17 = table1.getRow(0).getCell(4).getParagraphArray(0);
            paragraph17.setAlignment(ParagraphAlignment.CENTER);
            XWPFRun run17 = paragraph17.createRun();
            run17.setText("检验结果");
@@ -859,14 +884,20 @@
            // 初始化行数
            int rowNum = 2;
            for (String s2 : aggregatedMap.keySet()) {
                if (s2.equals("端口") || s2.equals("测试频率(MHZ)")) {
                if (s2.equals("端口") || s2.equals("测试频率(MHZ)") || s2.equals("测量频率(MHz)")) {
                    continue;
                }
                List<Map<String, Object>> mapList = aggregatedMap.get(s2);
                // 创建一个表格
                int checkItemRowNum = row;
                for (int i = 0; i < checkItemRowNum; i++) {
                    table1.createRow(); // 创建新行
                    // 创建新行 并设置居中
                    XWPFTableRow tableRow = table1.createRow();
                    for (XWPFTableCell tableCell : tableRow.getTableCells()) {
                        // 设置单元格内容居中对齐
                        for (XWPFParagraph paragraph : tableCell.getParagraphs()) {
                            paragraph.setAlignment(ParagraphAlignment.CENTER);
                        }
                    }
                }
//            XWPFTable table = document.createTable(row, cell);
                //垂直
@@ -874,7 +905,7 @@
                mergeCellsVertically(table1, 1, rowNum, rowNum +  checkItemRowNum - 1);
                mergeCellsVertically(table1, 2, rowNum, rowNum +  checkItemRowNum - 1);
                mergeCellsVertically(table1, 3, rowNum, rowNum +  checkItemRowNum - 1);
                mergeCellsVertically(table1, 4, rowNum, 1);
                mergeCellsVertically(table1, 4, rowNum, rowNum+1);
                mergeCellsVertically(table1, cell - 1, rowNum, rowNum+1);
                mergeCellsVertically(table1, cell - 1, rowNum+2, rowNum +  checkItemRowNum - 1);
                //水平
@@ -910,7 +941,6 @@
                // 定义改检查项标准值
                String checkItemStandardStr = "";
                XWPFParagraph paragraph3 = table1.getRow(rowNum).getCell(3).getParagraphArray(0);
                paragraph3.setAlignment(ParagraphAlignment.CENTER);
                XWPFRun run3 = paragraph3.createRun();
                if (bz.get(s2) != null) {
                    run3.setText(bz.get(s2).toString());
@@ -919,6 +949,7 @@
                XWPFParagraph paragraph4 = table1.getRow(rowNum).getCell(4).getParagraphArray(0);
                paragraph4.setAlignment(ParagraphAlignment.CENTER);
                XWPFRun run4 = paragraph4.createRun();
                run4.setText("频率(MHz)");
@@ -928,19 +959,23 @@
                run5.setText("端口");
                XWPFParagraph paragraph6 = table1.getRow(rowNum).getCell(cell - 1).getParagraphArray(0);
                paragraph6.setAlignment(ParagraphAlignment.CENTER);
                XWPFRun run6 = paragraph6.createRun();
                run6.setText("判定");
                XWPFParagraph paragraph7 = table1.getRow(rowNum+1).getCell(cell - 1).getParagraphArray(0);
                paragraph7.setAlignment(ParagraphAlignment.CENTER);
                XWPFRun run7 = paragraph7.createRun();
                run7.setText("合格");
                XWPFParagraph paragraph8 = table1.getRow(rowNum+checkItemRowNum - 1).getCell(4).getParagraphArray(0);
                paragraph8.setAlignment(ParagraphAlignment.CENTER);
                XWPFRun run8 = paragraph8.createRun();
                run8.setText("平均值");
                XWPFParagraph paragraph9 = table1.getRow(rowNum + checkItemRowNum - 1).getCell(cell - 1).getParagraphArray(0);
                paragraph9.setAlignment(ParagraphAlignment.CENTER);
                XWPFRun run9 = paragraph9.createRun();
                run9.setText("");
@@ -948,15 +983,28 @@
                    String s3 = collect.get(i);
                    if (s3.contains("端口") || s3.contains("P")) {
                        XWPFParagraph paragraph10 = table1.getRow(rowNum+1).getCell(5 + i).getParagraphArray(0);
                        paragraph10.setAlignment(ParagraphAlignment.CENTER);
                        XWPFRun run10 = paragraph10.createRun();
                        run10.setText(s3);
                    }
                }
                Map<Integer, List<Map<String, Object>>> group = mapList.stream()
                Map<BigDecimal, List<Map<String, Object>>> group = mapList.stream()
                        .collect(Collectors.groupingBy(item -> {
                            Double aDouble = (Double) item.get("测试频率(MHZ)");
                            return aDouble.intValue();
                            BigDecimal value=BigDecimal.ZERO;
                            if (item.containsKey("测试频率(MHZ)")) {
                                 value = new BigDecimal(String.valueOf(item.get("测试频率(MHZ)")));
                            }
                            else if (item.containsKey("测量频率(MHz)")){
                                 value = new BigDecimal(String.valueOf(item.get("测量频率(MHz)")));
                            }
                            if (value.scale() <= 0 || value.stripTrailingZeros().scale() <= 0) {
                                // 没有小数部分,返回整数字符串
                                return new BigDecimal(value.intValue());
                            } else {
                                // 有小数部分,返回原始值的字符串形式
                                return value;
                            }
                        }));
@@ -969,9 +1017,12 @@
                double firstParam = 0.0;
                double secondParam = 0.0 ;
                checkItemStandardStr = checkItemStandardStr.trim();
                if(checkItemStandardStr.contains("~") ){
                if(checkItemStandardStr.contains("~") || checkItemStandardStr.contains("~") ){
                    checkType = 1;
                    String[] params = checkItemStandardStr.split("~");
                    if (checkItemStandardStr.contains("~")) {
                        params = checkItemStandardStr.split("~");
                    }
                    if(null != params && params.length == 2){
                        firstParam = Double.valueOf(params[0]);
                        secondParam = Double.valueOf(params[1]);
@@ -1025,7 +1076,7 @@
                    }
                }
                for (Integer aDouble : group.keySet()) {
                for (BigDecimal aDouble : group.keySet()) {
                    List<Map<String, Object>> mapList1 = group.get(aDouble);
                    for (Map<String, Object> stringObjectMap : mapList1) {
                        String port = stringObjectMap.get("端口").toString();
@@ -1058,8 +1109,7 @@
                                        passFlag = false;
                                    }
                                }
                                String project = stringObjectMap.get(s2).toString();
                                run10.setText(project);
                                run10.setText(String.format("%.2f",value));
                            }
                        }
                    }