From 685257c3dc80fb732480480128269cefa51e50e5 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期五, 28 八月 2026 16:59:50 +0800
Subject: [PATCH] feat(inspect): 新增检验报告类型参数支持检测报告和检验报告

---
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java |  177 ++++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 115 insertions(+), 62 deletions(-)

diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java
index 7cd309f..31c71a6 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java
@@ -88,6 +88,9 @@
 @Service
 public class InsOrderPlanServiceImpl extends ServiceImpl<InsOrderMapper, InsOrder> implements InsOrderPlanService {
 
+    private static final int DETECTION_REPORT = 0;
+    private static final int INSPECTION_REPORT = 1;
+
     @Resource
     private InsSampleMapper insSampleMapper;
     @Resource
@@ -766,7 +769,10 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int submitPlan(Integer orderId, String laboratory, Integer verifyUser, String entrustCode,Boolean registerInsResults) {
+    public int submitPlan(Integer orderId, String laboratory, Integer verifyUser, String entrustCode, Boolean registerInsResults, Integer reportType) {
+        if (!Objects.equals(DETECTION_REPORT, reportType) && !Objects.equals(INSPECTION_REPORT, reportType)) {
+            throw new ErrorException("璇烽�夋嫨鎶ュ憡绫诲瀷");
+        }
         InsOrder order = insOrderMapper.selectById(orderId);
         // 1. 鍒ゆ柇鏄惁鏈夐噸澶嶇紪鍙�, 鏈夐噸澶嶇紪鍙峰仛鎻愰啋
         Long codeCount = insOrderMapper.selectCount(Wrappers.<InsOrder>lambdaQuery()
@@ -793,13 +799,17 @@
                 .in(InsProduct::getInsSampleId, InsSampleIds)
                 .eq(InsProduct::getSonLaboratory, laboratory)
                 .eq(InsProduct::getState, 1)
-                .and(wrapper -> wrapper
-                        .isNull(InsProduct::getInsResult)
-                        .or()
-                        .eq(InsProduct::getInsResult, 2)
-                )
+                .and(wrapper -> {
+                    if (Objects.equals(reportType, DETECTION_REPORT)) {
+                        wrapper.isNull(InsProduct::getLastValue).or().eq(InsProduct::getLastValue, "");
+                    } else {
+                        wrapper.isNull(InsProduct::getInsResult).or().eq(InsProduct::getInsResult, 2);
+                    }
+                })
                 .ne(InsProduct::getIsBinding, 1));
-        insProducts.addAll(insProductMapper.selectFiberInsProduct(InsSampleIds, laboratory));
+        if (Objects.equals(reportType, INSPECTION_REPORT)) {
+            insProducts.addAll(insProductMapper.selectFiberInsProduct(InsSampleIds, laboratory));
+        }
         if (insProducts.size() > 0) {
             String str = "";
             int count = 0;
@@ -863,7 +873,7 @@
         });
 
         // 8.鎻愪氦鐢熸垚鎶ュ憡
-        this.generateReport(orderId);
+        this.generateReport(orderId, reportType);
 
         // 9.娣诲姞涓存椂pdf鐢熸垚鍦板潃
         InsReport report = insReportMapper.selectOne(Wrappers.<InsReport>lambdaQuery()
@@ -1263,22 +1273,24 @@
      * 鐢熸垚鎶ュ憡
      * @param orderId
      */
-    private void generateReport(Integer orderId) {
+    private void generateReport(Integer orderId, Integer reportType) {
         /*鏍峰搧涓嬬殑椤圭洰鍙鏈変竴涓」鐩笉鍚堟牸鍒欐楠岀粨鏋滀负0,鍚﹀垯涓�1*/
         //杩欓噷鐨刬nsSamples鏄鍗曚笅鐨勬墍鏈夋牱鍝佸寘鎷�("/")
         List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId));
+        if (Objects.equals(reportType, INSPECTION_REPORT)) {
         for (InsSample insSample : insSamples) {
             List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                     .eq(InsProduct::getInsSampleId, insSample.getId())
                     .eq(InsProduct::getState, 1)
                     .ne(InsProduct::getIsBinding, 1));
-            List<Integer> results = insProducts.stream().map(InsProduct::getInsResult).filter(str -> str != null).collect(Collectors.toList());
+            List<Integer> results = insProducts.stream().map(InsProduct::getInsResult).filter(Objects::nonNull).collect(Collectors.toList());
             if (results.contains(0)) {
                 insSample.setInsResult(0);
             } else {
                 insSample.setInsResult(1);
             }
             insSampleMapper.updateById(insSample);
+        }
         }
         InsOrder insOrder = insOrderMapper.selectById(orderId);
         // 鎶芥鍙樻垚濮旀墭妫�楠�
@@ -1289,10 +1301,10 @@
         // 鍒ゆ柇鏄ぇ鎶ュ憡杩樻槸灏忔姤鍛�  杩涘巶灏忔姤鍛�, 鍏朵粬閮芥槸澶ф姤鍛�
         if (insOrder.getOrderType().equals(InsOrderTypeConstants.ENTER_THE_FACTORY)) {
             // 鐢熸垚灏忔姤鍛�
-            addSmallReport(orderId, insOrder, insSamples);
+            addSmallReport(orderId, insOrder, insSamples, reportType);
         } else {
             //鐢熸垚澶ф姤鍛�
-            addBitReport(orderId, insOrder);
+            addBitReport(orderId, insOrder, reportType);
         }
 
     }
@@ -1638,10 +1650,19 @@
      * @param max 鏍囪瘑鏈�澶т釜鏁�
      * @return
      */
-    private TableStyle setTableStyle(int max){
+    private TableStyle setTableStyle(int max, boolean showResult){
         //璁剧疆鏍峰紡
         TableStyle tableStyle = new TableStyle();
-        if(max<=5){
+        if (!showResult) {
+            switch (max) {
+                case 1: tableStyle.setColWidths(new int[]{650, 3000, 850, 2400, 3100}); break;
+                case 2: tableStyle.setColWidths(new int[]{650, 2800, 850, 2200, 1750, 1750}); break;
+                case 3: tableStyle.setColWidths(new int[]{650, 2600, 850, 1800, 1400, 1400, 1400}); break;
+                case 4: tableStyle.setColWidths(new int[]{650, 2400, 850, 1600, 1125, 1125, 1125, 1125}); break;
+                case 5: tableStyle.setColWidths(new int[]{650, 2200, 850, 1500, 960, 960, 960, 960, 960}); break;
+                default: break;
+            }
+        } else if(max<=5){
             for (int i = 1; i <= max; i++) {
                 // 鏍规嵁妫�楠岀粨鏋滀釜鏁颁慨鏀归暱搴�
                 switch (i) {
@@ -1729,11 +1750,13 @@
      * @param insOrder
      * @param insSamples
      */
-    private void addSmallReport(Integer orderId, InsOrder insOrder, List<InsSample> insSamples) {
+    private void addSmallReport(Integer orderId, InsOrder insOrder, List<InsSample> insSamples, Integer reportType) {
         InsReport insReport = new InsReport();
         AtomicReference<String> resultCh = new AtomicReference<>("");
+        boolean showResult = Objects.equals(reportType, INSPECTION_REPORT);
         insReport.setCode(insOrder.getEntrustCode());
         insReport.setInsOrderId(orderId);
+        insReport.setReportType(reportType);
         InsSample insSample = insSamples.get(0);
         // 濉厖鍩虹鏁版嵁
         EnterFactoryReport enterFactoryReport = new EnterFactoryReport();
@@ -1784,9 +1807,11 @@
         String templateName;
         if(StringUtils.equals(OrderType.WG.getValue(),ifsInventoryQuantity.getOrderType())){
             //杩囨护涓嶅垽瀹氱殑妫�娴嬮」
-            List<SampleProductExportDto> filterItems = sampleProductDto2s.stream().filter(f -> f.getInsResult() != 3).collect(Collectors.toList());
+            List<SampleProductExportDto> filterItems = sampleProductDto2s.stream()
+                    .filter(f -> !showResult || f.getInsResult() != 3)
+                    .collect(Collectors.toList());
             int maxCableTag = 5;//鍗曚釜琛ㄦ牸锛岀數缂嗛鑹叉爣璇嗘渶澶т釜鏁�
-            templateName = "/static/small-wg-report-template.docx";
+            templateName = showResult ? "/static/small-wg-report-template.docx" : "/static/small-wg-detection-template.docx";
             //鏌ヨ妫�楠屽崟娑堟伅
             InsSampleUserVO insSampleUser = insSampleUserMapper.selectUserNameByOrderId(orderId);
             if(Objects.nonNull(insSampleUser)){
@@ -1832,7 +1857,7 @@
             sortSampleProduct(tempMap,totalItem);
             int tagNum = Math.min(max,maxCableTag);
             List<String> tagList = cableTags.isEmpty()?new ArrayList<>():cableTags.subList(0,tagNum);
-            handlerSampleItems(OrderType.WG.getValue(),totalItem,finalIndex,sampleList,tagNum,text,rows,rowRenderData,resultCh,tagList,true);
+            handlerSampleItems(OrderType.WG.getValue(), totalItem, finalIndex, sampleList, tagNum, text, rows, rowRenderData, resultCh, tagList, true, showResult);
 
             if(CollectionUtil.isNotEmpty(tempMap2)){
                 sortSampleProduct(tempMap2,cableTagEnclosureItem);
@@ -1843,9 +1868,9 @@
                 List<TextRenderData> newText = new ArrayList<TextRenderData>();
                 List<RowRenderData> newRows = new ArrayList<>();
                 RowRenderData newRowRenderData = null;
-                handlerSampleItems(OrderType.WG.getValue(),cableTagEnclosureItem,finalIndex2, new ArrayList<>(),newCableTags.size(),newText,newRows,newRowRenderData,resultCh,newCableTags,true);
+                handlerSampleItems(OrderType.WG.getValue(), cableTagEnclosureItem, finalIndex2, new ArrayList<>(), newCableTags.size(), newText, newRows, newRowRenderData, resultCh, newCableTags, true, showResult);
                 tableRenderData2.setRows(newRows);
-                tableRenderData2.setTableStyle(setTableStyle(newCableTags.size()));
+            tableRenderData2.setTableStyle(setTableStyle(newCableTags.size(), showResult));
                 HashMap<String, Object> tableMap = new HashMap<>();
                 tableMap.put("enclosureTable",tableRenderData2);
                 tableMap.put("resultCh", resultCh);
@@ -1860,15 +1885,15 @@
             }
 
             tableRenderData.setRows(rows);
-            tableRenderData.setTableStyle(setTableStyle(tagNum));
-            if (!resultCh.get().isEmpty()) {
+            tableRenderData.setTableStyle(setTableStyle(tagNum, showResult));
+            if (showResult && !resultCh.get().isEmpty()) {
                 resultCh.set("缁忔楠岋紝" + resultCh.get() + "鎵�妫�椤圭洰涓嶅悎鏍硷紝鍏朵綑鎵�妫�椤圭洰鍧囧悎鏍笺�傦紙鐩栫珷鏈夋晥锛�");
-            } else {
+            } else if (showResult) {
                 resultCh.set("鏈骇鍝佺鍚堢浉鍏虫爣鍑嗚姹傦紝缁忔楠屽悎鏍煎噯浜堝嚭鍘傦紙鐩栫珷鏈夋晥锛�");
             }
 
         }else{
-            templateName = "/static/small-report-template.docx";
+            templateName = showResult ? "/static/small-report-template.docx" : "/static/small-detection-template.docx";
             // 杞垚Mpa杩涜鎺掑簭
             Map<String, List<SampleProductExportDto>> sortedMap = sampleProductDto2s.stream()
                     .filter(sampleProductDto2 -> StringUtils.isNotBlank(sampleProductDto2.getInspectionItem()))
@@ -1879,13 +1904,13 @@
 
 
             AtomicInteger finalIndex = new AtomicInteger(1);
-            handlerSampleItems(OrderType.RAW.getValue(), item,finalIndex,sampleList,max,text,rows,rowRenderData,resultCh,null,true);
+            handlerSampleItems(OrderType.RAW.getValue(), item, finalIndex, sampleList, max, text, rows, rowRenderData, resultCh, null, true, showResult);
             tableRenderData.setRows(rows);
-            tableRenderData.setTableStyle(setTableStyle(max));
+            tableRenderData.setTableStyle(setTableStyle(max, showResult));
 
-            if (!resultCh.get().equals("")) {
+            if (showResult && !resultCh.get().equals("")) {
                 resultCh.set("缁忔楠岋紝" + resultCh.get() + "鎵�妫�椤圭洰涓嶅悎鏍硷紝鍏朵綑鎵�妫�椤圭洰鍧囧悎鏍笺��");
-            } else {
+            } else if (showResult) {
                 resultCh.set("缁忔楠屾鎵�" + enterFactoryReport.getSample() + "鍚勯」鐩潎绗﹀悎妫�楠岃鑼冭姹傘��");
             }
         }
@@ -1913,7 +1938,7 @@
         try {
             // 淇敼鎹㈣鍜屽悎骞堕棶棰�
             updaeMerge(template.getXWPFDocument(), true);
-            String name = insReport.getCode().replace("/", "") + "-J.docx";
+            String name = insReport.getCode().replace("/", "") + (showResult ? "-J.docx" : "-C.docx");
             template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name)));
             insReport.setUrl("/word/" + name);
             insReport.setIsPass(0);
@@ -1940,7 +1965,7 @@
      * @param rowRenderData
      * @param resultCh
      */
-    private static void handlerSampleItems(String orderType,Map<String, List<SampleProductExportDto>> item,AtomicInteger finalIndex,List<SampleProductExportDto> sampleList,Integer max,List<TextRenderData> text,List<RowRenderData> rows,RowRenderData rowRenderData,AtomicReference<String> resultCh,List<String> cableTagList,Boolean hasAddHead ){
+    private static void handlerSampleItems(String orderType, Map<String, List<SampleProductExportDto>> item, AtomicInteger finalIndex, List<SampleProductExportDto> sampleList, Integer max, List<TextRenderData> text, List<RowRenderData> rows, RowRenderData rowRenderData, AtomicReference<String> resultCh, List<String> cableTagList, Boolean hasAddHead, boolean showResult) {
         item.forEach((s, sampleProductDtoInside) -> {
             // 娣诲姞妫�楠岄」
             SampleProductExportDto dto2 = new SampleProductExportDto();
@@ -2033,7 +2058,7 @@
 
         // 娣诲姞灏忔姤鍛婅〃澶�
         if(hasAddHead){
-            text = addSmallHead(text, max, rows,cableTagList);
+            text = addSmallHead(text, max, rows, cableTagList, showResult);
         }
 
         // 涓棿妫�娴嬪�兼坊鍔�
@@ -2083,21 +2108,21 @@
             if (CollectionUtils.isNotEmpty(sample.getLastValueList())
                     && sample.getLastValueList().size() == max) {
                 // 鍒ゆ柇鏄惁鏄瑙�, 澶栬鍏ㄩ儴鍚堟牸鐨勮瘽闇�瑕佸悎骞�
-                if (sample.getInspectionItem().contains("澶栬")) {
+                if (showResult && sample.getInspectionItem().contains("澶栬")) {
                     // 鍒ゅ畾缁撴灉
                     boolean falg = false;
                     if (CollectionUtils.isNotEmpty(sample.getLastValueList())) {
                         // 鍒ゆ柇鏄惁鏈変竴涓敊璇�
-                        if (sample.getInsResultList().stream().anyMatch(s -> s.equals(2))) {
+                        if (sample.getInsResultList().stream().anyMatch(s -> Objects.equals(s, 2))) {
                             falg = true;
                         } else {
-                            boolean error = sample.getInsResultList().stream().anyMatch(s -> s.equals(0));
+                            boolean error = sample.getInsResultList().stream().anyMatch(s -> Objects.equals(s, 0));
                             if (!error) {
                                 falg = true;
                             }
                         }
                     } else {
-                        if (!sample.getInsResult().equals(2)) {
+                        if (!Objects.equals(sample.getInsResult(), 2)) {
                             falg = true;
                         }
                     }
@@ -2152,7 +2177,7 @@
 
             // 鍒ゅ畾缁撴灉
             String result = "";
-            if (sample.getInsResult() != null) {
+            if (showResult && sample.getInsResult() != null) {
                 switch (sample.getInsResult()) {
                     case 1:
                         result = "鈭�";
@@ -2165,18 +2190,18 @@
                         break;
                 }
             }
-            if (CollectionUtils.isNotEmpty(sample.getLastValueList())) {
+            if (showResult && CollectionUtils.isNotEmpty(sample.getLastValueList())) {
                 // 鍒ゆ柇鏄惁鏈変竴涓敊璇�
-                if (sample.getInsResultList().stream().anyMatch(s -> s.equals(3))) {
+                if (sample.getInsResultList().stream().anyMatch(s -> Objects.equals(s, 3))) {
                     result = "-";
                 } else {
-                    boolean error = sample.getInsResultList().stream().anyMatch(s -> s.equals(0));
+                    boolean error = sample.getInsResultList().stream().anyMatch(s -> Objects.equals(s, 0));
                     if (error) {
                         List<String> collect = new ArrayList<>();
                         int index = 1;
                         for (Integer count : sample.getInsResultList()) {
                             String type;
-                            if (count.equals(0)) {
+                            if (Objects.equals(count, 0)) {
                                 // 娣诲姞涓嶅悎鏍兼弿杩�
                                 String item1 = (max == 1 ? "" : "绗�" + index + "娆�")
                                         + sample.getInspectionItem()
@@ -2200,6 +2225,7 @@
                 }
             }
 
+            if (showResult) {
             TextRenderData middleRenderData7 = new TextRenderData();
             middleRenderData7.setText(result);
             Style middleStyle7 = new Style();
@@ -2207,6 +2233,7 @@
             middleStyle7.setColor("000000");
             middleRenderData7.setStyle(middleStyle7);
             text.add(middleRenderData7);
+            }
 
             TextRenderData[] text2 = text.toArray(new TextRenderData[0]);
             rowRenderData = Rows.of(text2).center().rowAtleastHeight(1).create();
@@ -2227,7 +2254,7 @@
      * @param rows
      * @return
      */
-    private static List<TextRenderData> addSmallHead(List<TextRenderData> text, Integer max, List<RowRenderData> rows,List<String> cableTagList) {
+    private static List<TextRenderData> addSmallHead(List<TextRenderData> text, Integer max, List<RowRenderData> rows, List<String> cableTagList, boolean showResult) {
         RowRenderData rowRenderData;
 //        // 澶�
         TextRenderData headRenderData1 = new TextRenderData();
@@ -2264,13 +2291,14 @@
 
         for (int i = 0; i < max; i++) {
             TextRenderData headRenderData6 = new TextRenderData();
-            headRenderData6.setText("妫�楠岀粨鏋溾垜6");
+            headRenderData6.setText(showResult ? "妫�楠岀粨鏋溾垜6" : "妫�娴嬫暟鎹垜6");
             Style headStyle6 = new Style();
             headStyle6.setFontFamily("瀹嬩綋");
             headStyle6.setColor("000000");
             headRenderData6.setStyle(headStyle6);
             text.add(headRenderData6);
         }
+        if (showResult) {
         TextRenderData headRenderData7 = new TextRenderData();
         headRenderData7.setText("鍗曢」鍒ゆ柇");
         Style headStyle7 = new Style();
@@ -2278,6 +2306,7 @@
         headStyle7.setColor("000000");
         headRenderData7.setStyle(headStyle7);
         text.add(headRenderData7);
+        }
 
         TextRenderData[] text3 = text.toArray(new TextRenderData[0]);
         rowRenderData = Rows.of(text3).center().rowAtleastHeight(1).create();
@@ -2327,6 +2356,7 @@
                 tagRenderData6.setStyle(tagStyle6);
                 text.add(tagRenderData6);
             }
+            if (showResult) {
             TextRenderData tagRenderData7 = new TextRenderData();
             tagRenderData7.setText("");
             Style tagStyle7 = new Style();
@@ -2334,6 +2364,7 @@
             tagStyle7.setColor("000000");
             tagRenderData7.setStyle(tagStyle7);
             text.add(tagRenderData7);
+            }
 
             TextRenderData[] text4 = text.toArray(new TextRenderData[0]);
             rowRenderData = Rows.of(text4).center().rowAtleastHeight(1).create();
@@ -2385,6 +2416,7 @@
                 tagRenderData6.setStyle(tagStyle6);
                 text.add(tagRenderData6);
             }
+            if (showResult) {
             TextRenderData tagRenderData7 = new TextRenderData();
             tagRenderData7.setText("/");
             Style tagStyle7 = new Style();
@@ -2392,6 +2424,7 @@
             tagStyle7.setColor("000000");
             tagRenderData7.setStyle(tagStyle7);
             text.add(tagRenderData7);
+            }
 
             TextRenderData[] text4 = text.toArray(new TextRenderData[0]);
             rowRenderData = Rows.of(text4).center().rowAtleastHeight(1).create();
@@ -2409,12 +2442,14 @@
      * @param insOrder
      * @param
      */
-    private void addBitReport(Integer orderId, InsOrder insOrder) {
+    private void addBitReport(Integer orderId, InsOrder insOrder, Integer reportType) {
         //samples鏄笉鍖呮嫭甯︽湁"/"鐨勬牱鍝�
         List<SampleProductDto> samples = insSampleMapper.selectSampleProductListByOrderId(orderId);
         InsReport insReport = new InsReport();
         insReport.setCode(insOrder.getEntrustCode());
         insReport.setInsOrderId(orderId);
+        insReport.setReportType(reportType);
+        boolean showResult = Objects.equals(reportType, INSPECTION_REPORT);
         List<Map<String, Object>> tables = new ArrayList<>();
         Set<String> standardMethod = new HashSet<>();
         Set<String> deviceSet = new HashSet<>();
@@ -2504,15 +2539,15 @@
             }
 
             // 琛ㄥご娣诲姞
-            addHead(a, text, rowRenderData, rows, max, cableTags);
+            addHead(a, text, rowRenderData, rows, max, cableTags, showResult);
             text = new ArrayList<>();
 
             // 娣诲姞妫�娴嬪��
-            productSize.set(addTestValue(a, text, rowRenderData, rows, max, resultChList, resultEnList, insSamples, cableTags, isOneSample));
+            productSize.set(addTestValue(a, text, rowRenderData, rows, max, resultChList, resultEnList, insSamples, cableTags, isOneSample, showResult));
             text = new ArrayList<>();
 
             // 缁撳熬娣诲姞
-            addEnding(text, rowRenderData, rows, max);
+            addEnding(text, rowRenderData, rows, max, showResult);
             text = new ArrayList<>();
 
             List<TableRenderData> tables1 = new ArrayList<>();
@@ -2546,7 +2581,7 @@
 //                    for (int i = 1; i <= max; i++) {
 //                    }
                     // 鏍规嵁妫�楠岀粨鏋滀釜鏁颁慨鏀归暱搴�
-                    tableStyle.setColWidths(calcTableColWidths(max));
+                    tableStyle.setColWidths(calcTableColWidths(max, showResult));
 //                    switch (max) {
 //                        case 1:
 //                            tableStyle.setColWidths(new int[]{650, 2000, 2000, 850, 2200, 2100, 1200});
@@ -2592,7 +2627,7 @@
 //                for (int i = 1; i <= max; i++) {
 //                }
                 // 鏍规嵁妫�楠岀粨鏋滀釜鏁颁慨鏀归暱搴�
-                tableStyle.setColWidths(calcTableColWidths(max));
+                tableStyle.setColWidths(calcTableColWidths(max, showResult));
 //                switch (max) {
 //                    case 1:
 //                        tableStyle.setColWidths(new int[]{650, 2000, 2000, 850, 2200, 2100, 1200});
@@ -2680,7 +2715,7 @@
         Custom custom = customMapper.selectById(insOrder.getCompanyId());
 
         // 鏌ヨ鍒ゆ柇鏄惁鏈変笉鍒ゅ畾椤圭洰,鍜屽叏閮芥槸鍒ゅ畾椤�
-        int judgeType = insProductMapper.selectNoJudge(insOrder.getId());
+        int judgeType = showResult ? insProductMapper.selectNoJudge(insOrder.getId()) : 0;
         String resultCh = "";
         String resultEn = "";
         for (String reference : resultChList) {
@@ -2772,7 +2807,7 @@
         List<Map<String, String>> finalDeviceList = deviceList;
         String finalModelStr = modelStr;
 
-        InputStream inputStream = this.getClass().getResourceAsStream("/static/report-template.docx");
+        InputStream inputStream = this.getClass().getResourceAsStream(showResult ? "/static/report-template.docx" : "/static/detection-report-template.docx");
         Configure configure = Configure.builder()
                 .bind("deviceList", new HackLoopTableRenderPolicy())
                 .useSpringEL(true)
@@ -2815,7 +2850,7 @@
         try {
             // 淇敼鎹㈣鍜屽悎骞堕棶棰�
             updaeMerge(template.getXWPFDocument(), false);
-            String name = insReport.getCode().replace("/", "") + ".docx";
+            String name = insReport.getCode().replace("/", "") + (showResult ? ".docx" : "-C.docx");
             template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name)));
             insReport.setUrl("/word/" + name);
             insReport.setWriteUserId(SecurityUtils.getUserId().intValue());//鎻愪氦浜�
@@ -2835,7 +2870,17 @@
      * @param max 鏈�澶ф楠屼釜鏁�
      * @return
      */
-    private static int[] calcTableColWidths(int max){
+    private static int[] calcTableColWidths(int max, boolean showResult){
+        if (!showResult) {
+            switch (max) {
+                case 1: return new int[]{650, 2200, 2200, 850, 2300, 1800};
+                case 2: return new int[]{650, 1600, 1600, 850, 1900, 1700, 1700};
+                case 3: return new int[]{650, 1400, 1400, 850, 1600, 1375, 1375, 1375};
+                case 4: return new int[]{650, 1250, 1250, 850, 1450, 1140, 1140, 1140, 1140};
+                case 5: return new int[]{650, 1150, 1150, 850, 1300, 980, 980, 980, 980, 980};
+                default: return new int[0];
+            }
+        }
         int[] colWidths = null;
         switch (max) {
             case 1:
@@ -3109,7 +3154,7 @@
      * @param max
      * @param cableTags 绾胯姱棰滆壊
      */
-    private static void addHead(SampleProductDto sample, List<TextRenderData> text, RowRenderData rowRenderData, List<RowRenderData> rows, int max, List<String> cableTags) {
+    private static void addHead(SampleProductDto sample, List<TextRenderData> text, RowRenderData rowRenderData, List<RowRenderData> rows, int max, List<String> cableTags, boolean showResult) {
         // 绗竴琛�
         TextRenderData firstRenderData1 = new TextRenderData();
         firstRenderData1.setText("鏍峰搧缂栧彿@Sample No.鈭�1");
@@ -3234,13 +3279,14 @@
 
         for (int i = 0; i < max; i++) {
             TextRenderData headRenderData6 = new TextRenderData();
-            headRenderData6.setText("妫�楠岀粨鏋淍Test result鈭�6");
+            headRenderData6.setText(showResult ? "妫�楠岀粨鏋淍Test result鈭�6" : "妫�娴嬫暟鎹瓳Test data鈭�6");
             Style headStyle6 = new Style();
             headStyle6.setFontFamily("瀹嬩綋");
             headStyle6.setColor("000000");
             headRenderData6.setStyle(headStyle6);
             text.add(headRenderData6);
         }
+        if (showResult) {
         TextRenderData headRenderData7 = new TextRenderData();
         headRenderData7.setText("缁撹@Conclusion");
         Style headStyle7 = new Style();
@@ -3248,6 +3294,7 @@
         headStyle7.setColor("000000");
         headRenderData7.setStyle(headStyle7);
         text.add(headRenderData7);
+        }
 
         TextRenderData[] text3 = text.toArray(new TextRenderData[0]);
         rowRenderData = Rows.of(text3).center().rowAtleastHeight(1).create();
@@ -3305,6 +3352,7 @@
                 cableRenderData6.setStyle(cableStyle6);
                 text.add(cableRenderData6);
             }
+            if (showResult) {
             TextRenderData cableRenderData7 = new TextRenderData();
             cableRenderData7.setText("-");
             Style cableStyle7 = new Style();
@@ -3312,6 +3360,7 @@
             cableStyle7.setColor("000000");
             cableRenderData7.setStyle(cableStyle7);
             text.add(cableRenderData7);
+            }
 
             TextRenderData[] text4 = text.toArray(new TextRenderData[0]);
             rowRenderData = Rows.of(text4).center().rowAtleastHeight(1).create();
@@ -3344,7 +3393,7 @@
                              List<String> resultChList,
                              List<String> resultEhList,
                              InsSample insSamples, List<String> cableTags,
-                             boolean isOneSample) {
+                             boolean isOneSample, boolean showResult) {
         // 妫�楠岄」鎬绘暟
         AtomicInteger productSize = new AtomicInteger(1);
         // 涓嶅悎鏍间俊鎭�
@@ -3868,6 +3917,7 @@
                 }
             }
             // 鍒ゅ畾缁撴灉
+            if (showResult) {
             String result = "";
             if (sample.getInsResult() != null) {
                 switch (sample.getInsResult()) {
@@ -3884,16 +3934,16 @@
             }
             if (CollectionUtils.isNotEmpty(sample.getLastValueList())) {
                 // 鍒ゆ柇鏄惁鏈変竴涓敊璇�
-                if (sample.getInsResultList().stream().anyMatch(s -> s.equals(3))) {
+                if (sample.getInsResultList().stream().anyMatch(s -> Objects.equals(s, 3))) {
                     result = "-";
                 } else {
-                    boolean error = sample.getInsResultList().stream().anyMatch(s -> s.equals(0));
+                    boolean error = sample.getInsResultList().stream().anyMatch(s -> Objects.equals(s, 0));
                     if (error) {
                         List<String> collect = new ArrayList<>();
                         int index = 0;
                         for (Integer count : sample.getInsResultList()) {
                             String type;
-                            if (count.equals(0)) {
+                            if (Objects.equals(count, 0)) {
                                 String itemCh = "";
                                 String itemEn = "";
                                 // 娣诲姞涓嶅悎鏍兼弿杩�
@@ -3927,6 +3977,7 @@
                 }
             }
 
+            if (showResult) {
             TextRenderData headRenderData7 = new TextRenderData();
             headRenderData7.setText(result);
             Style headStyle7 = new Style();
@@ -3934,6 +3985,8 @@
             headStyle7.setColor("000000");
             headRenderData7.setStyle(headStyle7);
             text.add(headRenderData7);
+            }
+            }
 
             TextRenderData[] text2 = text.toArray(new TextRenderData[0]);
             rowRenderData = Rows.of(text2).center().rowAtleastHeight(1).create();
@@ -4094,7 +4147,7 @@
                 sampleProductDto2.setLastValue(sampleProductDto2.getLastValue().trim());
             }
 
-            if (sampleProductDto2.getInsResult().equals(0)) {
+            if (Objects.equals(sampleProductDto2.getInsResult(), 0)) {
                 // 鏌ヨ涓嶅悎鏍煎娴�
                 Long count = insUnqualifiedRetestProductMapper.selectCount(Wrappers.<InsUnqualifiedRetestProduct>lambdaQuery()
                         .eq(InsUnqualifiedRetestProduct::getInsProductId, sampleProductDto2.getInsProductId())
@@ -4158,7 +4211,7 @@
      * @param rowRenderData
      * @param rows
      */
-    private static void addEnding(List<TextRenderData> text, RowRenderData rowRenderData, List<RowRenderData> rows, int max) {
+    private static void addEnding(List<TextRenderData> text, RowRenderData rowRenderData, List<RowRenderData> rows, int max, boolean showResult) {
         for (int i = 0; i < 2; i++) {
             TextRenderData endingRenderData = new TextRenderData();
             endingRenderData.setText("澶囨敞鈭�1999");
@@ -4169,9 +4222,9 @@
             text.add(endingRenderData);
         }
 
-        for (int i = 0; i < 5 + max - 1; i++) {
+        for (int i = 0; i < (showResult ? 5 : 4) + max - 1; i++) {
             TextRenderData endingRenderData = new TextRenderData();
-            endingRenderData.setText("鈥溾垰鈥濊〃绀洪」鐩悎鏍�,鈥溍椻�濊〃绀洪」鐩笉鍚堟牸,鈥�-鈥濊〃绀轰笉瑕佸垽瀹氾紝鈥�/鈥濊〃绀烘病鏈夋爣鍑嗚姹傘�侤鈥溾垰鈥� indicates test ltem is qualified,鈥溍椻�� indicates test ltem is unqualified,鈥�-鈥� indicates test ltem judgment is not required,鈥�/鈥� indicates test ltem is no test requirement.鈭�2000");
+            endingRenderData.setText(showResult ? "鈥溾垰鈥濊〃绀洪」鐩悎鏍�,鈥溍椻�濊〃绀洪」鐩笉鍚堟牸,鈥�-鈥濊〃绀轰笉瑕佸垽瀹氾紝鈥�/鈥濊〃绀烘病鏈夋爣鍑嗚姹傘�侤鈥溾垰鈥� indicates test ltem is qualified,鈥溍椻�� indicates test ltem is unqualified,鈥�-鈥� indicates test ltem judgment is not required,鈥�/鈥� indicates test ltem is no test requirement.鈭�2000" : "");
             Style endingStyle = new Style();
             endingStyle.setFontFamily("瀹嬩綋");
             endingStyle.setColor("000000");

--
Gitblit v1.9.3