zss
2025-02-28 ede49ec7133b86d9db9dc1f0328418dcdaaef8aa
inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java
@@ -39,6 +39,8 @@
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
@Component
@@ -845,8 +847,7 @@
                                    cells.add(cellRenderData);
                                }
                            }
                        }
                        else {
                        } else {
                            //电调版本(复杂版)
                            if (inspectionItemSubclass.contains("电压驻波比") && i <= (angles + 1) * portRow) {
                                cc = (angles + 1) * portRow;
@@ -1946,7 +1947,7 @@
                                int k = (angles + 1) * portRow2;
                                int rr = qq == 0 ? (pp == 0 ? (nn == 0 ? (mm == 0 ? (hh == 0 ? (gg == 0 ? (ff == 0 ? (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) : ff) : gg) : hh) : mm) : nn) : pp) : qq;
                                if (i > rr && i <= rr + k) {
                                    ss = (rr + k) ;
                                    ss = (rr + k);
                                    if (itemSet.add("最大相位偏差")) {
                                        index.getAndIncrement();
                                    }
@@ -2051,7 +2052,7 @@
                                int length = result2s.get(0).getPort().split(",").length;
                                int portRow2 = (length % 8 == 0 ? length / 8 : length / 8 + 1);
                                int k = (angles + 1) * portRow2;
                                int rr =ss==0?( qq == 0 ? (pp == 0 ? (nn == 0 ? (mm == 0 ? (hh == 0 ? (gg == 0 ? (ff == 0 ? (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) : ff) : gg) : hh) : mm) : nn) : pp) : qq) : ss;
                                int rr = ss == 0 ? (qq == 0 ? (pp == 0 ? (nn == 0 ? (mm == 0 ? (hh == 0 ? (gg == 0 ? (ff == 0 ? (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) : ff) : gg) : hh) : mm) : nn) : pp) : qq) : ss;
                                if (i > ss) {
                                    if (itemSet.add("相位绝对值")) {
                                        index.getAndIncrement();
@@ -2592,35 +2593,51 @@
        Set<String> models = new HashSet<>();
        AtomicReference<Integer> productSize = new AtomicReference<>(0);
        AtomicReference<Integer> productSize1 = new AtomicReference<>(0);
        AtomicReference<Integer> productSize2 = new AtomicReference<>(0);
        AtomicReference<Integer> productSize3 = new AtomicReference<>(0);
        String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
        SampleProductDto s = insSample;
        models.add(s.getModel());
        standardMethod.addAll(standardMethodListMapper.selectList(Wrappers.<StandardMethodList>lambdaQuery()
                .in(StandardMethodList::getId, Arrays.stream(s.getStandardMethodListId().replaceAll("[\\[\\]]", "").split(","))
                        .map(String::trim).map(Integer::parseInt).collect(Collectors.toList()))).stream().map(aa -> {
            return aa.getCode() + " " + aa.getName();
        }).distinct().collect(Collectors.toList()));
        List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                .eq(InsProduct::getInsSampleId, insSample.getId())
                .eq(InsProduct::getState, 1));
        /*查询标准方法*/
        standardMethod.addAll(insProducts.stream().map(InsProduct::getMethodS).distinct().collect(Collectors.toList()));
        //总数
        Long productCount = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery()
                .eq(InsProduct::getInsSampleId, s.getId()));
        productSize.set(productSize.get() + Integer.parseInt(productCount + ""));
        //不判定
        Long productCount1 = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery()
                .eq(InsProduct::getInsSampleId, s.getId())
                .eq(InsProduct::getInsResult, 3));
        productSize1.set(productSize1.get() + Integer.parseInt(productCount1 + ""));
        long productCount = insProducts.size();
        //不合格
        Long productCount2 = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery()
                .eq(InsProduct::getInsSampleId, s.getId())
                .eq(InsProduct::getInsResult, 0));
        long productCount2 = insProducts.stream().filter(insProduct -> insProduct.getInsResult() == 0).count();
        //合格=(不判定+合格)
        long productCount1 = insProducts.stream().filter(insProduct -> insProduct.getInsResult() == 3).count();
        long productCount3 = productCount1 + insProducts.stream().filter(insProduct -> insProduct.getInsResult() == 1).count();
        //判断是否有辐射项目
        List<InsProduct> fusheProducts = insProducts.stream().filter(insProduct -> insProduct.getInspectionItem().equals("辐射试验")).collect(Collectors.toList());
        if (fusheProducts.size() > 0) {
            for (InsProduct fusheProduct : fusheProducts) {
                List<Long> vValues = new ArrayList<>();
                String insValue = insProductResultMapper.selectList(Wrappers.<InsProductResult>lambdaQuery()
                        .eq(InsProductResult::getInsProductId, fusheProduct.getId())).get(0).getInsValue();
                Pattern pattern = Pattern.compile("\"v\":\"(\\d+)\"");
                Matcher matcher = pattern.matcher(insValue);
                while (matcher.find()) {
                    vValues.add(Long.parseLong(matcher.group(1)));
                }
                //不合格
                if (vValues.get(1)!=0){
                    productCount2 = productCount2 - 1 + vValues.get(1);
                }
                //合格
                if (vValues.get(0)!=0) {
                    if (fusheProduct.getInsResult()==1){
                        productCount3 = productCount3 - 1 + vValues.get(0);
                    }else  productCount3 = productCount3 + vValues.get(0);
                }
                //总数=项目总数-辐射项目数量+辐射具体的(合格+不合格)数量
                productCount = productCount - 1 + vValues.stream().mapToLong(Long::longValue).sum();
            }
        }
        productSize.set(productSize.get() + Integer.parseInt(productCount + ""));
        productSize2.set(productSize2.get() + Integer.parseInt(productCount2 + ""));
        //合格
        Long productCount3 = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery()
                .eq(InsProduct::getInsSampleId, s.getId())
                .eq(InsProduct::getInsResult, 1));
        productSize3.set(productSize3.get() + Integer.parseInt(productCount3 + ""));
        //将项目按照站点进行分类
        Map<String, List<InsProduct>> listMap = s.getInsProduct().stream().collect(Collectors.groupingBy(InsProduct::getSonLaboratory));
@@ -2677,13 +2694,23 @@
        List<Map<String, Object>> tables4 = new ArrayList<>();
        Integer indexs = 1;
        //判断是否有电路试验,环境试验
        List<String> strings = insReportDto1.getInsReportDto2s().stream().map(InsReportDto2::getLaboratory).distinct().collect(Collectors.toList());
        List<String> strings = insReportDto1.getInsReportDto2s().stream()
                .map(InsReportDto2::getLaboratory).distinct().collect(Collectors.toList());
        if (strings.contains("近场") || strings.contains("远场")) {
            Map<String, String> table = new HashMap<>();
            table.put("indexs", indexs + "");
            indexs += 1;
            table.put("term", "辐射方向图参数");
            table.put("result", "不判定");
            List<Integer> list = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                    .eq(InsProduct::getState, 1)
                    .eq(InsProduct::getInsSampleId, insSample.getId())
                    .eq(InsProduct::getInspectionItem, "辐射试验")).stream()
                    .map(InsProduct::getInsResult).distinct().collect(Collectors.toList());
            if (list.contains(0)) {
                table.put("result", "不合格");
            } else {
                table.put("result", "合格");
            }
            tables.add(table);
            /*辐射的试验表*/
            List<InsOrderFile> insOrderFiles = insOrderFileMapper.selectList(Wrappers.<InsOrderFile>lambdaQuery()
@@ -2812,7 +2839,16 @@
                Map<String, String> table2 = new HashMap<>();
                table2.put("indexs", "环境试验:" + String.join("、", strings) + "∑1");
                table2.put("term", "环境试验:" + String.join("、", strings) + "∑1");
                table2.put("result", "环境试验:" + String.join("、", strings) + "∑1");
                List<Integer> list = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                        .eq(InsProduct::getState, 1)
                        .eq(InsProduct::getInsSampleId,insSample.getId())
                        .in(InsProduct::getSonLaboratory, strings)).stream()
                        .map(InsProduct::getInsResult).distinct().collect(Collectors.toList());
                if (list.contains(0)) {
                    table2.put("result", "不合格");
                } else {
                    table2.put("result", "合格");
                }
                tables.add(table2);
                Map<String, String> table3 = new HashMap<>();
@@ -2845,7 +2881,7 @@
                    rowRenderData.setRowStyle(rowStyle);
                    List<CellRenderData> cells = new ArrayList<>();
                    //列数
                    for (int j = 0; j < 2; j++) {
                    for (int j = 0; j < 3; j++) {
                        CellRenderData cellRenderData = new CellRenderData();
                        CellStyle cellStyle = new CellStyle();
                        cellStyle.setVertAlign(XWPFTableCell.XWPFVertAlign.CENTER);
@@ -2871,9 +2907,17 @@
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else {
                            } else if (j == 1) {
                                //第二列
                                textRenderData.setText("试验要求");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else {
                                //第三列
                                textRenderData.setText("实验结果");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
@@ -2890,8 +2934,18 @@
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else {
                            } else if (j == 1) {
                                textRenderData.setText(products.get(i - 1).getTell());
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else {
                                //第三列
                                //获取检验项目和结论
                                InsProduct insProduct = products.get(i - 1);
                                textRenderData.setText("经过" + insProduct.getInspectionItemSubclass() + "之后,样品" + (insProduct.getInsResult() == 0 ? "不合格" : "无异常") + "。");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
@@ -2928,7 +2982,8 @@
                Map<String, Object> table4 = new HashMap<>();
                table4.put("table4", tableRenderData);
                tables4.add(table4);
            } else {
            }
            else {
                Map<String, String> table = new HashMap<>();
                table.put("indexs", indexs + "");
                table.put("term", "电路参数");
@@ -2953,7 +3008,8 @@
                    }
                }
            }
        } else {
        }
        else {
            //如果只有环境试验没有电路试验
            strings.remove("近场");
            strings.remove("远场");
@@ -2961,7 +3017,16 @@
                Map<String, String> table2 = new HashMap<>();
                table2.put("indexs", "环境试验:" + String.join("、", strings) + "∑1");
                table2.put("term", "环境试验:" + String.join("、", strings) + "∑1");
                table2.put("result", "环境试验:" + String.join("、", strings) + "∑1");
                List<Integer> list = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                        .eq(InsProduct::getState, 1)
                        .eq(InsProduct::getInsSampleId,insSample.getId())
                        .in(InsProduct::getSonLaboratory, strings)).stream()
                        .map(InsProduct::getInsResult).distinct().collect(Collectors.toList());
                if (list.contains(0)) {
                    table2.put("result", "不合格");
                } else {
                    table2.put("result", "合格");
                }
                tables.add(table2);
                /*创建环境试验条件表2*(项目数+1)*/
@@ -2983,7 +3048,7 @@
                    rowRenderData.setRowStyle(rowStyle);
                    List<CellRenderData> cells = new ArrayList<>();
                    //列数
                    for (int j = 0; j < 2; j++) {
                    for (int j = 0; j < 3; j++) {
                        CellRenderData cellRenderData = new CellRenderData();
                        CellStyle cellStyle = new CellStyle();
                        cellStyle.setVertAlign(XWPFTableCell.XWPFVertAlign.CENTER);
@@ -3009,9 +3074,17 @@
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else {
                            } else if (j == 1) {
                                //第二列
                                textRenderData.setText("试验要求");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else {
                                //第三列
                                textRenderData.setText("实验结果");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
@@ -3028,8 +3101,23 @@
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else {
                            } else if (j == 1) {
                                //第二列
                                textRenderData.setText(products.get(i - 1).getTell());
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else {
                                //第三列
                                //获取检验项目和结论
                                InsProduct insProduct = products.get(i - 1);
                                String shiyanjieguo = "无异常";
                                if (ObjectUtils.isNotNull(insProduct.getInsResult())) {
                                    shiyanjieguo = insProduct.getInsResult() == 0 ? "不合格" : "无异常";
                                }
                                textRenderData.setText("经过" + insProduct.getInspectionItemSubclass() + "之后,样品" + shiyanjieguo + "。");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
@@ -3074,7 +3162,6 @@
        for (String s1 : standardMethod) {
            standardMethod2.append(";\n").append(s1);
        }
        standardMethod2.append(";\n").append("GB/T 9410-2008 《移动通信天线通用技术规范》");
        standardMethod2.replace(0, 1, "");
        List<Map<String, String>> deviceList = null;
        if (deviceSet.size() != 0) {
@@ -3139,9 +3226,7 @@
            insOrder.setPhone("/");
        }
        //检验项目的环境
        InsProduct insProduct = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                .eq(InsProduct::getState, 1)
                .eq(InsProduct::getInsSampleId, insReportDto1.getSampleId())).get(0);
        InsProduct insProduct = insProducts.get(0);
        String environment = "";
        environment = (ObjectUtils.isNotEmpty(insProduct.getTemperature()) ? insProduct.getTemperature() + "℃ " : "") + (ObjectUtils.isNotEmpty(insProduct.getHumidity()) ? insProduct.getHumidity() + "%" : "");
        String finalEnvironment = environment;
@@ -3170,7 +3255,6 @@
                    put("twoCode", Pictures.ofLocal(codePath).create());
                    put("models", finalModelStr.replace(",", ""));
                    put("productSize", productSize);
                    put("productSize1", productSize1);
                    put("productSize2", productSize2);
                    put("productSize3", productSize3);
                    put("createTime", now.format(DateTimeFormatter.ofPattern("yyyy年MM月dd日")));
@@ -4056,8 +4140,7 @@
                                    cells.add(cellRenderData);
                                }
                            }
                        }
                        else {
                        } else {
                            //电调版本(复杂版)
                            if (inspectionItemSubclass.contains("电压驻波比") && i <= (angles + 1) * portRow) {
                                cc = (angles + 1) * portRow;
@@ -5157,7 +5240,7 @@
                                int k = (angles + 1) * portRow2;
                                int rr = qq == 0 ? (pp == 0 ? (nn == 0 ? (mm == 0 ? (hh == 0 ? (gg == 0 ? (ff == 0 ? (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) : ff) : gg) : hh) : mm) : nn) : pp) : qq;
                                if (i > rr && i <= rr + k) {
                                    ss = (rr + k) ;
                                    ss = (rr + k);
                                    if (itemSet.add("最大相位偏差")) {
                                        index.getAndIncrement();
                                    }
@@ -5262,7 +5345,7 @@
                                int length = result2s.get(0).getPort().split(",").length;
                                int portRow2 = (length % 8 == 0 ? length / 8 : length / 8 + 1);
                                int k = (angles + 1) * portRow2;
                                int rr =ss==0?( qq == 0 ? (pp == 0 ? (nn == 0 ? (mm == 0 ? (hh == 0 ? (gg == 0 ? (ff == 0 ? (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) : ff) : gg) : hh) : mm) : nn) : pp) : qq) : ss;
                                int rr = ss == 0 ? (qq == 0 ? (pp == 0 ? (nn == 0 ? (mm == 0 ? (hh == 0 ? (gg == 0 ? (ff == 0 ? (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) : ff) : gg) : hh) : mm) : nn) : pp) : qq) : ss;
                                if (i > ss) {
                                    if (itemSet.add("相位绝对值")) {
                                        index.getAndIncrement();