From 4f258638d62ccaae0050f1ed6c7231941b66fb50 Mon Sep 17 00:00:00 2001
From: deslrey <deslre0381@gmail.com>
Date: 星期六, 10 一月 2026 11:29:04 +0800
Subject: [PATCH] 【物料属性】的回显及查询

---
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java |  200 +++++++++++++++++++++++++++++--------------------
 1 files changed, 119 insertions(+), 81 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 7cd35f6..ad03024 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
@@ -177,13 +177,17 @@
         Integer isCheck = insOrderPlanDTO.getIsCheck();
         insOrderPlanDTO.setIsCheck(null);
         String sonLaboratory = insOrderPlanDTO.getSonLaboratory();//璇曢獙瀹�
+        // 鏁版嵁缃┖锛岄槻姝㈠弽灏勭敓鎴愰噸澶嶆暟鎹�
+        String materialProp = insOrderPlanDTO.getMaterialProp();
+        insOrderPlanDTO.setMaterialProp(null);
         IPage<InsOrderPlanVO> insOrderPage = insSampleMapper.findInsSampleAndOrder(page,
                 QueryWrappers.queryWrappers(insOrderPlanDTO),
                 userName,
                 userId,
                 sonLaboratory,
                 laboratory,
-                isCheck);
+                isCheck,
+                materialProp);
         return insOrderPage;
     }
 
@@ -274,7 +278,7 @@
     }
 
     @Override
-    public Map<String,Object> checkSubmitPlan(Integer orderId, String laboratory) {
+    public Map<String, Object> checkSubmitPlan(Integer orderId, String laboratory) {
         Map<String, Object> map = new HashMap<>();
         List<String> collect = new ArrayList<>();
         List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId).select(InsSample::getId));
@@ -304,15 +308,15 @@
         //鏌ヨifs鎷嗗垎璁㈠崟鏄惁鏈夊凡涓嬪崟浣嗘槸鏈瀹岀殑鍗曞瓙
         long count = 0L;
         InsOrder insOrder = insOrderMapper.selectById(orderId);
-        if(Objects.nonNull(insOrder.getIfsInventoryId())){
+        if (Objects.nonNull(insOrder.getIfsInventoryId())) {
             IfsInventoryQuantity one = ifsInventoryQuantityMapper.selectById(insOrder.getIfsInventoryId());
             //杩囨护鍑轰笉鍚堟牸鎴栨湭鎻愪氦鐨勫崟瀛�
-            count = ifsInventoryQuantityMapper.selectSplitOrderList(one.getPartNo(),one.getLineNo(),one.getReleaseNo(),one.getReceiptNo(),one.getOrderNo())
+            count = ifsInventoryQuantityMapper.selectSplitOrderList(one.getPartNo(), one.getLineNo(), one.getReleaseNo(), one.getReceiptNo(), one.getOrderNo())
                     .stream()
-                    .filter(f->(Objects.nonNull(f.getInsOrderId()) && !Objects.equals(f.getInsOrderId(),orderId)) && (Objects.isNull(f.getInsResult()) || 0==f.getInsResult())).count();
+                    .filter(f -> (Objects.nonNull(f.getInsOrderId()) && !Objects.equals(f.getInsOrderId(), orderId)) && (Objects.isNull(f.getInsResult()) || 0 == f.getInsResult())).count();
         }
-        map.put("errorMsg",collect);
-        map.put("unInsOrderCount",count);
+        map.put("errorMsg", collect);
+        map.put("unInsOrderCount", count);
         return map;
     }
 
@@ -620,6 +624,7 @@
 
     /**
      * 鏌ヨ妯℃澘鍐呭
+     *
      * @param order
      * @param insProducts
      */
@@ -684,6 +689,7 @@
 
     /**
      * todo: 鍘熷璁板綍妯℃澘娓呴櫎娌℃湁浣跨敤鐨勬楠岄」(鏆傛椂鏈塨ug鏃犳硶浣跨敤)
+     *
      * @param sheet
      * @param itemNameList
      */
@@ -756,6 +762,7 @@
 
     /**
      * 鍧愭爣鎷兼帴
+     *
      * @param r 妯潗鏍�
      * @param c 绾靛潗鏍�
      * @return
@@ -768,7 +775,7 @@
 
     @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) {
         InsOrder order = insOrderMapper.selectById(orderId);
         // 1. 鍒ゆ柇鏄惁鏈夐噸澶嶇紪鍙�, 鏈夐噸澶嶇紪鍙峰仛鎻愰啋
         Long codeCount = insOrderMapper.selectCount(Wrappers.<InsOrder>lambdaQuery()
@@ -807,7 +814,7 @@
             int count = 0;
             for (InsProduct product : insProducts) {
                 count++;
-                str +=  (count != 0 ? "\n" : "") + count + "锛�" +
+                str += (count != 0 ? "\n" : "") + count + "锛�" +
                         product.getInspectionItemClass() + " " +
                         product.getInspectionItem() + " " +
                         product.getInspectionItemSubclass();
@@ -937,7 +944,7 @@
             // 鐧昏妫�楠岀粨鏋�
             // 鍒ゆ柇鏄惁鏈変笉鍚堟牸, 鏈変笉鍚堟牸涓嶈兘绉诲簱
             // todo: ifs绉诲簱
-            insReportService.isRawMaterial(order,registerInsResults,false);
+            insReportService.isRawMaterial(order, registerInsResults, false);
 
             // 15 鍒ゆ柇褰撳墠鏍峰搧鏄惁涓哄師鏉愭枡, 鍘熸潗鏂欓渶瑕佽繘琛屾暟鎹垎鏋�, 鍒ゆ柇涔嬪墠10鏉℃暟鎹悓涓�涓緵搴斿晢, 鍚屼竴涓楠岄」鐨勫亸宸槸鍚﹁秴杩�10%
             // 鏌ヨifs淇℃伅鑾峰彇鑾峰彇鍓�10涓緵搴斿晢涓�鏍风殑, 妫�楠岄」涓�鏍蜂俊鎭�
@@ -964,6 +971,7 @@
 
     /**
      * *****娣诲姞鍒嗘瀽鏁版嵁******
+     *
      * @param productList
      * @param ifsInventoryQuantity
      * @param order
@@ -1054,6 +1062,7 @@
 
     /**
      * *****璁$畻鍋忓樊****
+     *
      * @param data
      * @param targetStr
      * @return
@@ -1079,11 +1088,12 @@
 
     /**
      * *****璁$畻鍋忓樊****
+     *
      * @param targetStr
      * @return
      */
     public static double isDeviationOverTenPercentByAsked(String asked, String targetStr) {
-        if(!isNumeric(asked)) return 0;
+        if (!isNumeric(asked)) return 0;
         double average = Double.parseDouble(asked);
 
         double target = Double.parseDouble(targetStr);
@@ -1097,6 +1107,7 @@
 
     /**
      * ******鍘熷璁板綍妯℃澘澶嶅埗*****
+     *
      * @param orderId
      * @param ids
      */
@@ -1130,6 +1141,7 @@
 
     /**
      * 妫�楠屼换鍔″鏍�
+     *
      * @param orderId
      * @param laboratory
      * @param type
@@ -1259,6 +1271,7 @@
 
     /**
      * 鐢熸垚鎶ュ憡
+     *
      * @param orderId
      */
     private void generateReport(Integer orderId) {
@@ -1298,6 +1311,7 @@
 
     /**
      * 鐢电紗閰嶇疆, 鏌ョ湅閰嶇疆鏍囪瘑
+     *
      * @param id
      * @param laboratory
      * @return
@@ -1309,6 +1323,7 @@
 
     /**
      * 鍘熸潗鏂欐煡鐪嬫爣璇�
+     *
      * @param id
      * @param laboratory
      * @return
@@ -1320,6 +1335,7 @@
 
     /**
      * 鏌ョ湅閲嶅鏍囪瘑
+     *
      * @param id
      * @param laboratory
      * @return
@@ -1331,6 +1347,7 @@
 
     /**
      * 鏂板涓嶅悎鏍煎娴嬪唴瀹�
+     *
      * @return
      */
     @Override
@@ -1527,6 +1544,7 @@
 
     /**
      * 鏌ヨ杩涜揣鍘熷璁板綍
+     *
      * @param insOrderId
      * @return
      */
@@ -1582,6 +1600,7 @@
 
     /**
      * 淇濆瓨鍘熸潗鏂欒繘璐ч獙璇�
+     *
      * @param factoryVerify
      * @return
      */
@@ -1633,13 +1652,14 @@
 
     /**
      * 璁剧疆琛ㄦ牸鏍峰紡
+     *
      * @param max 鏍囪瘑鏈�澶т釜鏁�
      * @return
      */
-    private TableStyle setTableStyle(int max){
+    private TableStyle setTableStyle(int max) {
         //璁剧疆鏍峰紡
         TableStyle tableStyle = new TableStyle();
-        if(max<=5){
+        if (max <= 5) {
             for (int i = 1; i <= max; i++) {
                 // 鏍规嵁妫�楠岀粨鏋滀釜鏁颁慨鏀归暱搴�
                 switch (i) {
@@ -1677,30 +1697,31 @@
 
     /**
      * 澶勭悊鏈夌數缂嗛鑹叉爣璇嗙殑妫�娴嬮」
-     * @param cableTags 鐢电紗棰滆壊鏍囪瘑
-     * @param collect   妫�娴嬮」鍒楄〃
+     *
+     * @param cableTags  鐢电紗棰滆壊鏍囪瘑
+     * @param collect    妫�娴嬮」鍒楄〃
      * @param startIndex 璧峰涓嬫爣
      * @param endIndex   缁撴潫涓嬫爣
      * @return
      */
-    private List<SampleProductExportDto> transformSampleProduct(List<String> cableTags,Map<String, List<SampleProductExportDto>> collect,int startIndex,int endIndex){
+    private List<SampleProductExportDto> transformSampleProduct(List<String> cableTags, Map<String, List<SampleProductExportDto>> collect, int startIndex, int endIndex) {
         List<SampleProductExportDto> sampleProductExportDtos = new ArrayList<>();
         for (String s : collect.keySet()) {
             List<String> lastValueList = new ArrayList<>();
             SampleProductExportDto dto = new SampleProductExportDto();
-            BeanUtil.copyProperties(collect.get(s).get(0),dto);
+            BeanUtil.copyProperties(collect.get(s).get(0), dto);
             Set<String> tellSet = new HashSet<>();
             for (int i = startIndex; i < endIndex; i++) {
                 String cableTag = cableTags.get(i);
                 for (SampleProductExportDto sDto : collect.get(s)) {
                     tellSet.add(sDto.getTell());
-                    if(sDto.getCableTag().equals(cableTag)){
+                    if (sDto.getCableTag().equals(cableTag)) {
                         lastValueList.add(sDto.getLastValue());
                     }
                 }
             }
             //鍒囧壊鐢电紗閰嶇疆椤�
-            dto.setTell(String.join("\n",tellSet));
+            dto.setTell(String.join("\n", tellSet.stream().sorted(Comparator.naturalOrder()).collect(Collectors.toList())));
             dto.setLastValueList(lastValueList);
             sampleProductExportDtos.add(dto);
         }
@@ -1709,10 +1730,11 @@
 
     /**
      * 妫�娴嬮」鎺掑簭
+     *
      * @param sourceMap
      * @param targetMap
      */
-    private void sortSampleProduct(Map<String, List<SampleProductExportDto>> sourceMap,Map<String, List<SampleProductExportDto>> targetMap){
+    private void sortSampleProduct(Map<String, List<SampleProductExportDto>> sourceMap, Map<String, List<SampleProductExportDto>> targetMap) {
         List<Map.Entry<String, List<SampleProductExportDto>>> entries = new ArrayList<>(sourceMap.entrySet());
         entries.sort(Comparator.comparingInt(o -> (o.getValue().get(0).getSort() == null ? 0 : o.getValue().get(0).getSort())));
         for (Map.Entry<String, List<SampleProductExportDto>> entry : entries) {
@@ -1722,6 +1744,7 @@
 
     /**
      * 灏忔姤鍛婄敓鎴�
+     *
      * @param orderId
      * @param insOrder
      * @param insSamples
@@ -1741,7 +1764,7 @@
         //鏌ヨ闆朵欢灞炴��
         IfsPartPropsRecord ifsPartPropsRecord = ifsPartPropsRecordMapper.selectOne(Wrappers.<IfsPartPropsRecord>lambdaQuery()
                 .eq(IfsPartPropsRecord::getIfsInventoryId, ifsInventoryQuantity.getId()));
-        if(Objects.nonNull(ifsPartPropsRecord)){
+        if (Objects.nonNull(ifsPartPropsRecord)) {
             enterFactoryReport.setOuterColor(ifsPartPropsRecord.getOuterColor());
         }
         enterFactoryReport.setQtyArrived(ifsInventoryQuantity.getQtyArrived() == null ? "" :
@@ -1766,7 +1789,7 @@
         List<RowRenderData> rows = new ArrayList<>();
         List<TextRenderData> text = new ArrayList<>();
         RowRenderData rowRenderData = null;
-        List<Map<String,Object>> cableTagEnclosureTables = new ArrayList<>();
+        List<Map<String, Object>> cableTagEnclosureTables = new ArrayList<>();
 
         // 鏌ヨ妫�楠屽唴瀹�
         List<SampleProductExportDto> sampleProductDto2s = insOrderMapper.selectSampleBySampleId(insSamples.stream()
@@ -1779,26 +1802,26 @@
         Integer max = insSamples.stream().mapToInt(InsSample::getQuantity).sum();
         TableRenderData tableRenderData = new TableRenderData();
         String templateName;
-        if(StringUtils.equals(OrderType.WG.getValue(),ifsInventoryQuantity.getOrderType())){
+        if (StringUtils.equals(OrderType.WG.getValue(), ifsInventoryQuantity.getOrderType())) {
             //杩囨护涓嶅垽瀹氱殑妫�娴嬮」
             List<SampleProductExportDto> filterItems = sampleProductDto2s.stream().filter(f -> f.getInsResult() != 3).collect(Collectors.toList());
             int maxCableTag = 5;//鍗曚釜琛ㄦ牸锛岀數缂嗛鑹叉爣璇嗘渶澶т釜鏁�
             templateName = "/static/small-wg-report-template.docx";
             //鏌ヨ妫�楠屽崟娑堟伅
             InsSampleUserVO insSampleUser = insSampleUserMapper.selectUserNameByOrderId(orderId);
-            if(Objects.nonNull(insSampleUser)){
+            if (Objects.nonNull(insSampleUser)) {
                 enterFactoryReport.setPartDesc(insSampleUser.getModel());
                 enterFactoryReport.setInspector(insSampleUser.getInspector());
                 enterFactoryReport.setInspectDate(insSampleUser.getInspectDate());
             }
 
-            Map<String, List<SampleProductExportDto>> item = new LinkedHashMap<>();//闈炵數缂嗛厤缃娴嬮」
+            Map<String, List<SampleProductExportDto>> totalItem = new LinkedHashMap<>();//妫�娴嬮」鍒楄〃
             Map<String, List<SampleProductExportDto>> cableTagItem = new LinkedHashMap<>();//鐢电紗閰嶇疆妫�娴嬮」
             Map<String, List<SampleProductExportDto>> cableTagEnclosureItem = new LinkedHashMap<>();//鐢电紗閰嶇疆妫�娴嬮」闄勪欢
 
             AtomicInteger finalIndex = new AtomicInteger(1);
             List<String> cableTags = insOrderMapper.selectSampleCableTag(insSample.getId());
-            max = cableTags.size();
+            max = Math.max(cableTags.size(), 1);
             //澶勭悊鐢电紗閰嶇疆妫�娴嬮」
             Map<String, List<SampleProductExportDto>> tempMap = new HashMap<>();
             Map<String, List<SampleProductExportDto>> tempMap2 = new HashMap<>();
@@ -1810,34 +1833,41 @@
                 List<SampleProductExportDto> sampleProductExportDtos2;
                 //澶勭悊鐢电紗閰嶇疆椤�
                 Map<String, List<SampleProductExportDto>> collect = listMap2.get(key).stream().collect(Collectors.groupingBy(SampleProductExportDto::getInspectionItemSubclass));
-                if(cableTags.size()>maxCableTag){
-                    sampleProductExportDtos = transformSampleProduct(cableTags,collect,0,maxCableTag);
-                    sampleProductExportDtos2 = transformSampleProduct(cableTags,collect,maxCableTag,cableTags.size());
-                    tempMap2.put(key,sampleProductExportDtos2);
-                }else{
-                    sampleProductExportDtos = transformSampleProduct(cableTags,collect,0,cableTags.size());
+                if (cableTags.size() > maxCableTag) {
+                    sampleProductExportDtos = transformSampleProduct(cableTags, collect, 0, maxCableTag);
+                    sampleProductExportDtos2 = transformSampleProduct(cableTags, collect, maxCableTag, cableTags.size());
+                    tempMap2.put(key, sampleProductExportDtos2);
+                } else {
+                    sampleProductExportDtos = transformSampleProduct(cableTags, collect, 0, cableTags.size());
                 }
-                tempMap.put(key,sampleProductExportDtos);
+                cableTagItem.put(key, sampleProductExportDtos);
             }
-            sortSampleProduct(tempMap,cableTagItem);
-            int tagNum = Math.min(max,maxCableTag);
-            List<String> tagList = cableTags.subList(0,tagNum);
-            handlerSampleItems(cableTagItem,finalIndex,sampleList,tagNum,text,rows,rowRenderData,resultCh,tagList,true);
+            //澶勭悊闈炵數缂嗛厤缃娴嬮」
+            Map<String, List<SampleProductExportDto>> listMap = filterItems.stream()
+                    .filter(f -> StringUtils.isBlank(f.getCableTag()) && StringUtils.isNotBlank(f.getInspectionItem()))
+                    .collect(Collectors.groupingBy(s -> s.getInspectionItem() + "&"));
+            //鍚堝苟妫�娴嬮」鍒楄〃
+            tempMap.putAll(cableTagItem);
+            tempMap.putAll(listMap);
+            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);
 
-            if(CollectionUtil.isNotEmpty(tempMap2)){
-                sortSampleProduct(tempMap2,cableTagEnclosureItem);
+            if (CollectionUtil.isNotEmpty(tempMap2)) {
+                sortSampleProduct(tempMap2, cableTagEnclosureItem);
                 //鐢熸垚闄勪欢鐢电紗琛ㄦ牸
                 TableRenderData tableRenderData2 = new TableRenderData();
-                List<String> newCableTags = cableTags.subList(maxCableTag,cableTags.size());
+                List<String> newCableTags = cableTags.subList(maxCableTag, cableTags.size());
                 AtomicInteger finalIndex2 = new AtomicInteger(1);
                 List<TextRenderData> newText = new ArrayList<TextRenderData>();
                 List<RowRenderData> newRows = new ArrayList<>();
                 RowRenderData newRowRenderData = null;
-                handlerSampleItems(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);
                 tableRenderData2.setRows(newRows);
                 tableRenderData2.setTableStyle(setTableStyle(newCableTags.size()));
                 HashMap<String, Object> tableMap = new HashMap<>();
-                tableMap.put("enclosureTable",tableRenderData2);
+                tableMap.put("enclosureTable", tableRenderData2);
                 tableMap.put("resultCh", resultCh);
                 tableMap.put("writeUrl", null);
                 tableMap.put("examineUrl", null);
@@ -1849,40 +1879,27 @@
                 cableTagEnclosureTables.add(tableMap);
             }
 
-            //澶勭悊闈炵數缂嗛厤缃娴嬮」
-            Map<String, List<SampleProductExportDto>> listMap = filterItems.stream()
-                    .filter(f -> StringUtils.isBlank(f.getCableTag()) && StringUtils.isNotBlank(f.getInspectionItem()))
-                    .collect(Collectors.groupingBy(SampleProductExportDto::getInspectionItem));
-            sortSampleProduct(listMap,item);
-            text = new ArrayList<>();
-            sampleList = new ArrayList<>();
-            handlerSampleItems(item,finalIndex,sampleList,tagNum,text,rows,rowRenderData,resultCh,cableTags,false);
             tableRenderData.setRows(rows);
             tableRenderData.setTableStyle(setTableStyle(tagNum));
-            if (!resultCh.get().equals("")) {
+            if (!resultCh.get().isEmpty()) {
                 resultCh.set("缁忔楠岋紝" + resultCh.get() + "鎵�妫�椤圭洰涓嶅悎鏍硷紝鍏朵綑鎵�妫�椤圭洰鍧囧悎鏍笺�傦紙鐩栫珷鏈夋晥锛�");
             } else {
                 resultCh.set("鏈骇鍝佺鍚堢浉鍏虫爣鍑嗚姹傦紝缁忔楠屽悎鏍煎噯浜堝嚭鍘傦紙鐩栫珷鏈夋晥锛�");
             }
 
-        }else{
+        } else {
             templateName = "/static/small-report-template.docx";
             // 杞垚Mpa杩涜鎺掑簭
             Map<String, List<SampleProductExportDto>> sortedMap = sampleProductDto2s.stream()
                     .filter(sampleProductDto2 -> StringUtils.isNotBlank(sampleProductDto2.getInspectionItem()))
                     .collect(Collectors.groupingBy(SampleProductExportDto::getInspectionItem));
-//            List<Map.Entry<String, List<SampleProductExportDto>>> entries = new ArrayList<>(sortedMap.entrySet());
-//            entries.sort(Comparator.comparingInt(o -> (o.getValue().get(0).getSort() == null ? 0 : o.getValue().get(0).getSort())));
 //            // 鍒涘缓涓�涓� LinkedHashMap 鏉ヤ繚鎸佹彃鍏ラ『搴�
             Map<String, List<SampleProductExportDto>> item = new LinkedHashMap<>();
-//            for (Map.Entry<String, List<SampleProductExportDto>> entry : entries) {
-//                item.put(entry.getKey(), entry.getValue());
-//            }
-            sortSampleProduct(sortedMap,item);
+            sortSampleProduct(sortedMap, item);
 
 
             AtomicInteger finalIndex = new AtomicInteger(1);
-            handlerSampleItems(item,finalIndex,sampleList,max,text,rows,rowRenderData,resultCh,null,true);
+            handlerSampleItems(OrderType.RAW.getValue(), item, finalIndex, sampleList, max, text, rows, rowRenderData, resultCh, null, true);
             tableRenderData.setRows(rows);
             tableRenderData.setTableStyle(setTableStyle(max));
 
@@ -1903,7 +1920,7 @@
                     put("standardMethod", standardMethod2.toString().equals("null") ? "" : standardMethod2);
                     put("orderType", orderType);
                     put("table", tableRenderData);
-                    put("enclosureTables", cableTagEnclosureTables.isEmpty()?null:cableTagEnclosureTables);
+                    put("enclosureTables", cableTagEnclosureTables.isEmpty() ? null : cableTagEnclosureTables);
                     put("resultCh", resultCh);
                     put("writeUrl", null);
                     put("examineUrl", null);
@@ -1934,6 +1951,7 @@
 
     /**
      * 澶勭悊甯歌妫�娴嬮」
+     *
      * @param item
      * @param finalIndex
      * @param sampleList
@@ -1943,7 +1961,7 @@
      * @param rowRenderData
      * @param resultCh
      */
-    private static void handlerSampleItems(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) {
         item.forEach((s, sampleProductDtoInside) -> {
             // 娣诲姞妫�楠岄」
             SampleProductExportDto dto2 = new SampleProductExportDto();
@@ -1956,10 +1974,10 @@
                 // 澶勭悊闆嗗悎
                 Map<String, SampleProductExportDto> map = new LinkedHashMap<>();
                 for (SampleProductExportDto productDto2 : sampleProductDtoInside) {
-                    String productName = productDto2.getInspectionItemClass() + productDto2.getInspectionItem();
+                    String productName = productDto2.getInspectionItemClass() + productDto2.getInspectionItem() + productDto2.getCableTag();
                     if (map.containsKey(productName)) {
                         // 濡傛灉鍚嶇О宸茬粡瀛樺湪锛屾坊鍔� lastValue 鍊煎埌 lastValueList 鍒楄〃
-                        if(CollectionUtil.isEmpty(map.get(productName).getLastValueList())){
+                        if (CollectionUtil.isEmpty(map.get(productName).getLastValueList()) || StringUtils.equals(OrderType.RAW.getValue(), orderType)) {
                             map.get(productName)
                                     .getLastValueList()
                                     .add(productDto2.getLastValue());
@@ -1969,7 +1987,7 @@
                                 .add(productDto2.getInsResult());
                     } else {
                         // 濡傛灉鍚嶇О涓嶅瓨鍦紝鐩存帴鏀惧叆 map
-                        if(CollectionUtil.isEmpty(productDto2.getLastValueList())){
+                        if (CollectionUtil.isEmpty(productDto2.getLastValueList()) || StringUtils.equals(OrderType.RAW.getValue(), orderType)) {
                             productDto2.setLastValueList(new ArrayList<>()); // 妫�楠屽唴瀹�
                             productDto2.getLastValueList().add(productDto2.getLastValue());
                         }
@@ -2001,10 +2019,10 @@
                 // 澶勭悊闆嗗悎
                 Map<String, SampleProductExportDto> map = new LinkedHashMap<>();
                 for (SampleProductExportDto productDto2 : sampleProductDtoInside) {
-                    String productName = productDto2.getInspectionItemClass() + productDto2.getInspectionItem() + productDto2.getInspectionItemSubclass();
+                    String productName = productDto2.getInspectionItemClass() + productDto2.getInspectionItem() + productDto2.getInspectionItemSubclass() + productDto2.getCableTag();
                     if (map.containsKey(productName)) {
                         // 濡傛灉鍚嶇О宸茬粡瀛樺湪锛屾坊鍔� lastValue 鍊煎埌 lastValueList 鍒楄〃
-                        if(CollectionUtil.isEmpty(map.get(productName).getLastValueList())){
+                        if (CollectionUtil.isEmpty(map.get(productName).getLastValueList()) || StringUtils.equals(OrderType.RAW.getValue(), orderType)) {
                             map.get(productName)
                                     .getLastValueList()
                                     .add(productDto2.getLastValue());
@@ -2014,7 +2032,7 @@
                                 .add(productDto2.getInsResult());
                     } else {
                         // 濡傛灉鍚嶇О涓嶅瓨鍦紝鐩存帴鏀惧叆 map
-                        if(CollectionUtil.isEmpty(productDto2.getLastValueList())){
+                        if (CollectionUtil.isEmpty(productDto2.getLastValueList()) || StringUtils.equals(OrderType.RAW.getValue(), orderType)) {
                             productDto2.setLastValueList(new ArrayList<>()); // 妫�楠屽唴瀹�
                             productDto2.getLastValueList().add(productDto2.getLastValue());
                         }
@@ -2035,8 +2053,8 @@
         });
 
         // 娣诲姞灏忔姤鍛婅〃澶�
-        if(hasAddHead){
-            text = addSmallHead(text, max, rows,cableTagList);
+        if (hasAddHead) {
+            text = addSmallHead(text, max, rows, cableTagList);
         }
 
         // 涓棿妫�娴嬪�兼坊鍔�
@@ -2054,7 +2072,9 @@
 
             // 妫�楠岄」鐩�
             TextRenderData middleRenderData2 = new TextRenderData();
-            middleRenderData2.setText(sample.getInspectionName()+"鈭�"+sample.getInspectionName()+i);
+            String[] split = sample.getInspectionName().split("&");
+            String itemName = split.length > 0 ? split[0] : sample.getInspectionName();
+            middleRenderData2.setText(itemName + "鈭�" + itemName + i + "_" + finalIndex);
             Style middleStyle2 = new Style();
             middleStyle2.setFontFamily("瀹嬩綋");
             middleStyle2.setColor("000000");
@@ -2141,7 +2161,7 @@
                     TextRenderData middleRenderData6 = new TextRenderData();
                     middleRenderData6.setText((StringUtils.isNotEmpty(sample.getLastValue()) ?
                             sample.getLastValue() : "")
-                            + "鈭�" + (finalIndex.get() +"_"+ i));
+                            + "鈭�" + (finalIndex.get() + "_" + i));
                     Style middleStyle6 = new Style();
                     middleStyle6.setFontFamily("瀹嬩綋");
                     middleStyle6.setColor("000000");
@@ -2224,12 +2244,13 @@
 
     /**
      * 娣诲姞灏忔姤鍛婅〃澶�
+     *
      * @param text
      * @param max
      * @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) {
         RowRenderData rowRenderData;
 //        // 澶�
         TextRenderData headRenderData1 = new TextRenderData();
@@ -2343,7 +2364,7 @@
             text = new ArrayList<>();
         }
         //濡傛灉鏈夌數缂嗛鑹诧紝鐢熸垚棰滆壊鏍囪瘑琛�
-        if(CollectionUtil.isNotEmpty(cableTagList)){
+        if (CollectionUtil.isNotEmpty(cableTagList)) {
             TextRenderData tagRenderData1 = new TextRenderData();
             tagRenderData1.setText("");
             Style tagStyle1 = new Style();
@@ -2406,6 +2427,7 @@
 
     /**
      * 鍒涘缓澶ф姤鍛�
+     *
      * @param orderId
      * @param insOrder
      * @param
@@ -2831,6 +2853,7 @@
 
     /**
      * 璋冩暣楂樺害
+     *
      * @param row
      * @param rowHeight
      * @return
@@ -3062,12 +3085,13 @@
 
     /**
      * 娣诲姞鎶ュ憡琛ㄥご
+     *
      * @param sample
      * @param text
      * @param rowRenderData
      * @param rows
      * @param max
-     * @param cableTags 绾胯姱棰滆壊
+     * @param cableTags     绾胯姱棰滆壊
      */
     private static void addHead(SampleProductDto sample, List<TextRenderData> text, RowRenderData rowRenderData, List<RowRenderData> rows, int max, List<String> cableTags) {
         // 绗竴琛�
@@ -3285,16 +3309,17 @@
 
     /**
      * 娣诲姞妫�娴嬪��
-     * @param a   褰撳墠鏍峰搧
+     *
+     * @param a             褰撳墠鏍峰搧
      * @param text
      * @param rowRenderData
      * @param rows
-     * @param max  妫�楠屾暟閲�
+     * @param max           妫�楠屾暟閲�
      * @param resultChList  涓嶇鍚堜俊鎭腑鏂�
      * @param resultEhList  涓嶇鍚堜俊鎭嫳鏂�
      * @param insSamples
-     * @param cableTags 绾胯姱棰滆壊
-     * @param isOneSample 鍒ゆ柇鏄惁鏄彧鏈変竴涓牱鍝�
+     * @param cableTags     绾胯姱棰滆壊
+     * @param isOneSample   鍒ゆ柇鏄惁鏄彧鏈変竴涓牱鍝�
      */
     private int addTestValue(SampleProductDto a,
                              List<TextRenderData> text,
@@ -3973,6 +3998,7 @@
 
     /**
      * 娣诲姞鎶ュ憡缁撹涓嫳鏂�
+     *
      * @param sample
      * @param itemCh
      * @param itemEn
@@ -4032,6 +4058,7 @@
 
     /**
      * 鏍煎紡鍖栦慨鏀规楠岄」
+     *
      * @param sampleProductDto2s
      */
     private void formatProducts(List<SampleProductExportDto> sampleProductDto2s) {
@@ -4101,6 +4128,7 @@
 
     /**
      * 娣诲姞缁撳熬
+     *
      * @param text
      * @param rowRenderData
      * @param rows
@@ -4132,6 +4160,7 @@
 
     /**
      * 鍒ゆ柇褰撳墠鍐呭鏄惁鏄瀛﹁鏁版硶
+     *
      * @param str
      * @return
      */
@@ -4148,6 +4177,7 @@
 
     /**
      * 淇敼瑕佹眰鎻忚堪鐨勭瀛﹁鏁版硶
+     *
      * @param input
      */
     public static String convertToScientificNotation(String input) {
@@ -4177,6 +4207,7 @@
 
     /**
      * 灞曠ず鎴愮瀛﹁鏁版硶
+     *
      * @param number
      * @return
      */
@@ -4273,6 +4304,7 @@
 
     /**
      * 鏍规嵁瑕佹眰鎻忚堪淇濈暀缁撴灉灏忔暟鐐逛綅鏁�
+     *
      * @param reference
      * @param value
      * @return
@@ -4341,6 +4373,7 @@
 
     /**
      * 淇濈暀浣嶆暟, 濡傛灉绛変簬0 杩斿洖鎵惧埌鐨勪竴涓潪0浣嶆暟
+     *
      * @param number 褰撳墠鏁板瓧
      * @param scale  鍘熸湰淇濈暀鐨勪綅鏁�
      * @return
@@ -4379,9 +4412,10 @@
 
     /**
      * *****淇濆瓨鍏冩闃块噷杩涜揣楠岃瘉鍘熷璁板綍*****
-     * @param insOrderId 璁㈠崟Id
-     * @param examineUserId  澶嶆牳浜篒d
-     * @param writeUserId  妫�楠屽憳Id
+     *
+     * @param insOrderId    璁㈠崟Id
+     * @param examineUserId 澶嶆牳浜篒d
+     * @param writeUserId   妫�楠屽憳Id
      */
     private void reportFactoryVerify(Integer insOrderId, Integer examineUserId, Integer writeUserId) {
         // 鏌ヨ杩涜揣楠岃瘉鍘熷璁板綍
@@ -4534,6 +4568,7 @@
 
     /**
      * ***鏍煎紡鍖栬繘鍘傞獙璇佸唴瀹�****
+     *
      * @param basicType
      * @return
      */
@@ -4563,6 +4598,7 @@
 
     /**
      * ***word杞崲pdf***
+     *
      * @param path
      * @return
      */
@@ -4611,6 +4647,7 @@
 
     /**
      * *****淇敼鎴愬搧鎶芥牱鐘舵��******
+     *
      * @param insSamples
      * @param order
      */
@@ -4648,6 +4685,7 @@
 
     /**
      * 娣诲姞宸ユ椂
+     *
      * @param userId
      * @param insProduct
      * @param insOrder

--
Gitblit v1.9.3