zss
2025-02-28 ede49ec7133b86d9db9dc1f0328418dcdaaef8aa
报告修改+实验结果
已修改5个文件
253 ■■■■ 文件已修改
inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProductResult.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java 161 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsSampleMapper.xml 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/static/report-template.docx 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProductResult.java
@@ -16,7 +16,7 @@
@Data
public class InsProductResult implements Serializable {
    /**
     *
     *
     */
    @TableId(type = IdType.AUTO)
    private Integer id;
@@ -49,6 +49,8 @@
    private String afterCheck;
    private String afterNote;
    private String testResult;
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
@@ -69,4 +71,4 @@
     * 次数(检测次数)
     */
    private Integer num;
}
}
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
@@ -652,6 +652,16 @@
                } catch (Exception e) {
                    result.setAfterCheck("");//''
                }
                //实验结果
                try {
                    JSONObject resValue = JSON.parseObject(JSON.toJSONString(jo.get("testResult")));
                    if (resValue.get("v") != null) {
                        Object o = JSON.parseObject(JSON.toJSONString(resValue.get("v"))).get("v");
                        result.setTestResult(o.equals("") ? null : (o.toString()));
                    }
                } catch (Exception e) {
                    result.setTestResult("");//''
                }
                //设备编号
                if (jo.get("equipValue") != null) {
                    JSONArray jsonArray2 = JSON.parseArray(JSON.toJSONString(jo.get("equipValue")));
@@ -1170,11 +1180,12 @@
    private void createReport(Integer orderId,List<InsReportDto1> insReportDto1s){
        for (InsReportDto1 insReportDto1 : insReportDto1s) {
            if (ObjectUtils.isNotEmpty(insReportDto1.getInsReportDto2s())){
                try{
                    wordUtils.generateReport(orderId, insReportDto1);
                }catch (Exception e){
                    throw new ErrorException("报告格式生成有误,请联系管理员!");
                }
                wordUtils.generateReport(orderId, insReportDto1);
//                try{
//                    wordUtils.generateReport(orderId, insReportDto1);
//                }catch (Exception e){
//                    throw new ErrorException("报告格式生成有误,请联系管理员!");
//                }
            }
        }
    }
@@ -1237,8 +1248,8 @@
            String str = "";
            int count = 0;
            for (InsProduct product : insProducts) {
                //辐射试验,温湿度试验,功率试验的检验项目,不需要去手动填写检验值,只需要上传表格文件就可以了,后台提交的时候校验跳过这个检验项目
                if (product.getInspectionItem().equals("辐射试验") || product.getInspectionItem().equals("温湿度试验") || product.getInspectionItem().equals("功率试验")) {
                //温湿度试验,功率试验的检验项目,不需要去手动填写检验值,只需要上传表格文件就可以了,后台提交的时候校验跳过这个检验项目
                if ( product.getInspectionItem().equals("温湿度试验") || product.getInspectionItem().equals("功率试验")) {
                    product.setInsResult(3);//不判定
                    insProductMapper.updateById(product);
                    continue;
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
@@ -2591,37 +2593,52 @@
        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(insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
        List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                .eq(InsProduct::getInsSampleId, insSample.getId())
                .eq(InsProduct::getState, 1)).stream().map(InsProduct::getMethodS).distinct().collect(Collectors.toList()));
                .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 + ""));
        productSize1.set(productSize1.get() + Integer.parseInt(0 + ""));
        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 + ""));
        productSize3.set(productSize3.get() + Integer.parseInt(productCount3 + productCount1 + ""));
        productSize3.set(productSize3.get() + Integer.parseInt(productCount3 + ""));
        //将项目按照站点进行分类
        Map<String, List<InsProduct>> listMap = s.getInsProduct().stream().collect(Collectors.groupingBy(InsProduct::getSonLaboratory));
        // 创建一个 Map 将站点和项目ID的映射关系
@@ -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);
@@ -3138,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;
@@ -3169,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日")));
inspect-server/src/main/resources/mapper/InsSampleMapper.xml
@@ -150,7 +150,7 @@
        </if>
        OR isu.user_id is NULL
        ) a
          ON ios.ins_order_id = a.id AND ios.laboratory = #{sonLaboratory} and a.sampleId=ios.ins_sample_id
        ON ios.ins_order_id = a.id AND ios.laboratory = #{sonLaboratory} and a.sampleId=ios.ins_sample_id
        left join
        (SELECT td.user_id order_user_id, td.ins_sample_id FROM ins_sample_user td,(SELECT max(id) id FROM
        ins_sample_user where son_laboratory=#{sonLaboratory} GROUP BY ins_sample_id) md where td.id = md.id
@@ -180,6 +180,7 @@
               inspection_item_class_en,
               inspection_item_subclass,
               inspection_item_subclass_en,
               ip.factory     ip_factory,
               ip.laboratory  ip_laboratory,
               ip.sample_type ip_sample_type,
@@ -269,6 +270,7 @@
               ipr.before_note,
               ipr.after_check,
               ipr.after_note,
               ipr.test_result,
               ipr2.frequency,
               ipr2.often,
               ipr2.port,
@@ -341,6 +343,7 @@
               ipr.before_note,
               ipr.after_check,
               ipr.after_note,
               ipr.test_result,
               ipr2.frequency,
               ipr2.often,
               ipr2.port,
@@ -373,21 +376,21 @@
    </select>
    <select id="selectSampleProductListByOrderId2" resultMap="sampleDto">
        select isa.*,
               ios.num          num1,
               ip.id            ip_id,
               ios.num        num1,
               ip.id          ip_id,
               inspection_item,
               inspection_item_en,
               inspection_item_subclass,
               inspection_item_subclass_en,
               inspection_item_class,
               inspection_item_class_en,
               ip.factory       ip_factory,
               ip.laboratory    ip_laboratory,
               ip.sample_type   ip_sample_type,
               ip.sample        ip_sample,
               ip.model         ip_model,
               ip.factory     ip_factory,
               ip.laboratory  ip_laboratory,
               ip.sample_type ip_sample_type,
               ip.sample      ip_sample,
               ip.model       ip_model,
               son_laboratory,
               ip.unit          ip_unit,
               ip.unit        ip_unit,
               price,
               man_hour,
               man_hour_group,
@@ -403,13 +406,13 @@
               ask,
               tell,
               `last_value`,
               ip.ins_result    ip_ins_result,
               ip.ins_result  ip_ins_result,
               state,
               ip.ins_sample_id,
               ip.create_user   ip_create_user,
               ip.update_user   ip_update_user,
               ip.create_time   ip_create_time,
               ip.update_time   ip_update_time,
               ip.create_user ip_create_user,
               ip.update_user ip_update_user,
               ip.create_time ip_create_time,
               ip.update_time ip_update_time,
               template_id,
               ip.method_s
@@ -422,21 +425,21 @@
    </select>
    <select id="selectSampleProductListByOrder2Id2" resultMap="sampleDto">
        select isa.*,
               ios.num          num1,
               ip.id            ip_id,
               ios.num        num1,
               ip.id          ip_id,
               inspection_item,
               inspection_item_en,
               inspection_item_subclass,
               inspection_item_subclass_en,
               inspection_item_class,
               inspection_item_class_en,
               ip.factory       ip_factory,
               ip.laboratory    ip_laboratory,
               ip.sample_type   ip_sample_type,
               ip.sample        ip_sample,
               ip.model         ip_model,
               ip.factory     ip_factory,
               ip.laboratory  ip_laboratory,
               ip.sample_type ip_sample_type,
               ip.sample      ip_sample,
               ip.model       ip_model,
               son_laboratory,
               ip.unit          ip_unit,
               ip.unit        ip_unit,
               price,
               man_hour,
               man_hour_group,
@@ -452,13 +455,13 @@
               ask,
               tell,
               `last_value`,
               ip.ins_result    ip_ins_result,
               ip.ins_result  ip_ins_result,
               state,
               ip.ins_sample_id,
               ip.create_user   ip_create_user,
               ip.update_user   ip_update_user,
               ip.create_time   ip_create_time,
               ip.update_time   ip_update_time,
               ip.create_user ip_create_user,
               ip.update_user ip_update_user,
               ip.create_time ip_create_time,
               ip.update_time ip_update_time,
               template_id,
               ip.method_s
        from ins_sample isa
@@ -543,6 +546,7 @@
               ipr.before_note,
               ipr.after_check,
               ipr.after_note,
               ipr.test_result,
               ipr2.frequency,
               ipr2.often,
               ipr2.port,
@@ -613,6 +617,7 @@
               ipr.before_note,
               ipr.after_check,
               ipr.after_note,
               ipr.test_result,
               ipr2.frequency,
               ipr2.often,
               ipr2.port,
@@ -681,6 +686,7 @@
               ipr.before_note,
               ipr.after_check,
               ipr.after_note,
               ipr.test_result,
               ipr2.frequency,
               ipr2.often,
               ipr2.port,
@@ -821,6 +827,7 @@
        <result property="beforeNote" column="before_note" jdbcType="VARCHAR"/>
        <result property="afterCheck" column="after_check" jdbcType="VARCHAR"/>
        <result property="afterNote" column="after_note" jdbcType="VARCHAR"/>
        <result property="testResult" column="test_result" jdbcType="VARCHAR"/>
        <result property="equipName" column="equip_name" jdbcType="VARBINARY"/>
    </resultMap>
    <resultMap id="insProductResult2" type="com.yuanchu.mom.pojo.InsProductResult2">
inspect-server/src/main/resources/static/report-template.docx
Binary files differ