From a7418fdc3875d68b03f5d89ceaa0c66a8e3902cd Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期三, 24 十二月 2025 14:03:54 +0800
Subject: [PATCH] 销售订单报检区分物料属性

---
 inspect-server/src/main/java/com/ruoyi/inspect/dto/OrderSplitDTO.java                          |    3 +
 inspect-server/src/main/java/com/ruoyi/inspect/aspect/MoveLocationAfterPushMesStockAspect.java |   10 ++++-
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java   |    6 ++-
 basic-server/src/main/java/com/ruoyi/basic/pojo/IfsInventoryQuantity.java                      |    3 +
 cnas-device/src/main/java/com/ruoyi/device/utils/DataAcquisition.java                          |   36 +++++++++--------
 inspect-server/src/main/java/com/ruoyi/inspect/service/RawMaterialOrderService.java            |    2 
 inspect-server/src/main/java/com/ruoyi/inspect/controller/RawMaterialOrderController.java      |    3 +
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java       |   40 +++++++++-----------
 8 files changed, 58 insertions(+), 45 deletions(-)

diff --git a/basic-server/src/main/java/com/ruoyi/basic/pojo/IfsInventoryQuantity.java b/basic-server/src/main/java/com/ruoyi/basic/pojo/IfsInventoryQuantity.java
index 4ed7eca..9c3a4d7 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/pojo/IfsInventoryQuantity.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/pojo/IfsInventoryQuantity.java
@@ -30,6 +30,9 @@
     @ApiModelProperty("璁㈠崟绫诲瀷(01raw:鍘熸潗鏂欙紝02wg:澶栬喘鎴愬搧)")
     private String orderType;
 
+    @ApiModelProperty("鐗╂枡灞炴�э紝鐢ㄤ簬鍖哄垎閾溿�侀摑瀵间綋绛夐浂浠�")
+    private String materialProp;
+
     @ApiModelProperty("琛屽彿")
     private String lineNo;
 
diff --git a/cnas-device/src/main/java/com/ruoyi/device/utils/DataAcquisition.java b/cnas-device/src/main/java/com/ruoyi/device/utils/DataAcquisition.java
index 05308ae..ef616a4 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/utils/DataAcquisition.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/utils/DataAcquisition.java
@@ -346,23 +346,25 @@
                 }
             }
             // 鎷兼帴鏁伴噰閰嶇疆
-            List<Object> result = new ArrayList<>();
-            for (int i = 0; i < numberOfDataEntries.get(); i++) {
-                String aggregate = "";
-                for (int j = 0; j < v.size(); j++) {
-                    int index;
-                    if (j == 0) {
-                        index = i;
-                    } else {
-                        index = numberOfDataEntries.get() + i;
-                    }
-                    aggregate += list.get(index).toString() + ",";
-                }
-                int lastIndex = aggregate.lastIndexOf(",");
-                String substring = aggregate.substring(0, lastIndex);
-                result.add(substring);
-
-            }
+            List<Object> result = new ArrayList<>(list);
+//            String join = String.join(",", list.stream().map(String::valueOf).collect(Collectors.toList()));
+//            result.add(join);
+//            for (int i = 0; i < numberOfDataEntries.get(); i++) {
+//                String aggregate = "";
+//                for (int j = 0; j < v.size(); j++) {
+//                    int index;
+//                    if (j == 0) {
+//                        index = i;
+//                    } else {
+//                        index = numberOfDataEntries.get() + i;
+//                    }
+//                    aggregate += list.get(index).toString() + ",";
+//                }
+//                int lastIndex = aggregate.lastIndexOf(",");
+//                String substring = aggregate.substring(0, lastIndex);
+//                result.add(substring);
+//
+//            }
             // 杩涜鍏紡璁$畻
             Object resultValue = calculationFormula(result, v.get(0), k, device);
             map.put(k, resultValue);
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/aspect/MoveLocationAfterPushMesStockAspect.java b/inspect-server/src/main/java/com/ruoyi/inspect/aspect/MoveLocationAfterPushMesStockAspect.java
index 0f8c327..2595c51 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/aspect/MoveLocationAfterPushMesStockAspect.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/aspect/MoveLocationAfterPushMesStockAspect.java
@@ -3,15 +3,14 @@
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.ruoyi.basic.mapper.IfsInventoryQuantityMapper;
 import com.ruoyi.basic.pojo.IfsInventoryQuantity;
 import com.ruoyi.common.numgen.NumberGenerator;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.api.MesApiUtils;
 import com.ruoyi.inspect.pojo.IfsSplitOrderRecord;
 import com.ruoyi.inspect.service.IfsSplitOrderRecordService;
 import lombok.extern.slf4j.Slf4j;
 import org.aspectj.lang.JoinPoint;
-import org.aspectj.lang.annotation.AfterReturning;
 import org.aspectj.lang.annotation.Aspect;
 import org.aspectj.lang.annotation.Before;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -36,6 +35,9 @@
     private MesApiUtils mesApiUtils;
 
     private final static String LOCATION_NO = "WG-02-001";//mes澶栬喘鍚堟牸搴撲綅
+
+    @Autowired
+    private NumberGenerator<IfsSplitOrderRecord> splitOrderRecordNumberGenerator;
 
     @Before(value = "execution(* com.ruoyi.inspect.service.impl.InsOrderServiceImpl.moveRawMaterial(..))")
     @Transactional(rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
@@ -66,6 +68,9 @@
                         //浣跨敤鐩稿悓鐨勭郴缁熺紪鍙�
                         one.setSystemNo(quantityList.get(0).getSystemNo());
                     }
+                    if(StringUtils.isBlank(one.getSystemNo())){
+                        one.setSystemNo(splitOrderRecordNumberGenerator.generateNumberWithPrefix(IfsSplitOrderRecord.DIGIT,IfsSplitOrderRecord.PREFIX,IfsSplitOrderRecord::getSystemNo));
+                    }
                     //鍚屾MES瀹炴椂搴撳瓨
                     Map<String, Object> requestMap = new HashMap<>();
                     requestMap.put("partNo", one.getPartNo()); // 闆朵欢缂栧彿
@@ -92,6 +97,7 @@
                     if(b){
                         ifsSplitOrderRecordService.update(null,Wrappers.<IfsSplitOrderRecord>lambdaUpdate()
                                 .set(IfsSplitOrderRecord::getSyncStatus,1)
+                                .set(IfsSplitOrderRecord::getSystemNo,one.getSystemNo())
                                 .eq(IfsSplitOrderRecord::getId,one.getId()));
                     }
                 }
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/controller/RawMaterialOrderController.java b/inspect-server/src/main/java/com/ruoyi/inspect/controller/RawMaterialOrderController.java
index 0bbd552..9fd882a 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/controller/RawMaterialOrderController.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/controller/RawMaterialOrderController.java
@@ -110,10 +110,11 @@
     public Result<?> inspectionReport(@RequestBody Map<String, Object> param) {
         List<Long> ids = (List<Long>) param.get("ids");
         String orderType = Objects.nonNull(param.get("orderType"))?param.get("orderType").toString():"";
+        String materialProp = Objects.nonNull(param.get("materialProp"))?param.get("materialProp").toString():"";
         if(!OrderType.validateValue(orderType)){
             throw new ErrorException("鎵归噺鎶ユ澶辫触,闈炴硶鐨勯攢鍞鍗曞垎绫绘灇涓�");
         }
-        return Result.success(rawMaterialOrderService.inspectionReport(ids,orderType));
+        return Result.success(rawMaterialOrderService.inspectionReport(ids,orderType,materialProp));
     }
 
     /**
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/dto/OrderSplitDTO.java b/inspect-server/src/main/java/com/ruoyi/inspect/dto/OrderSplitDTO.java
index ab4d170..7b220da 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/dto/OrderSplitDTO.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/dto/OrderSplitDTO.java
@@ -31,4 +31,7 @@
     @ApiModelProperty("鏄惁鍚屾鍒癕ES")
     private Boolean pushToMes;
 
+    @ApiModelProperty("鐗╂枡灞炴�э紝鐢ㄤ簬鍖哄垎閾溿�侀摑瀵间綋绛夋潗鏂�")
+    private String materialProp;
+
 }
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/RawMaterialOrderService.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/RawMaterialOrderService.java
index 7ed340b..cb62ed7 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/RawMaterialOrderService.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/RawMaterialOrderService.java
@@ -42,7 +42,7 @@
      */
     IPage<IfsInventoryQuantityDto> getIfsByStateOne(IPage<IfsInventoryQuantityDto> page, IfsInventoryQuantityDto ifsInventoryQuantityDto);
 
-    int inspectionReport(List<Long> ids,String orderType);
+    int inspectionReport(List<Long> ids,String orderType,String materialProp);
 
     int revokeInspectionReport(Long id);
 
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..e1d8152 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
@@ -1700,7 +1700,7 @@
                 }
             }
             //鍒囧壊鐢电紗閰嶇疆椤�
-            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);
         }
@@ -1792,7 +1792,7 @@
                 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<>();//鐢电紗閰嶇疆妫�娴嬮」闄勪欢
 
@@ -1817,12 +1817,19 @@
                 }else{
                     sampleProductExportDtos = transformSampleProduct(cableTags,collect,0,cableTags.size());
                 }
-                tempMap.put(key,sampleProductExportDtos);
+                cableTagItem.put(key,sampleProductExportDtos);
             }
-            sortSampleProduct(tempMap,cableTagItem);
+            //澶勭悊闈炵數缂嗛厤缃娴嬮」
+            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.subList(0,tagNum);
-            handlerSampleItems(cableTagItem,finalIndex,sampleList,tagNum,text,rows,rowRenderData,resultCh,tagList,true);
+            handlerSampleItems(totalItem,finalIndex,sampleList,tagNum,text,rows,rowRenderData,resultCh,tagList,true);
 
             if(CollectionUtil.isNotEmpty(tempMap2)){
                 sortSampleProduct(tempMap2,cableTagEnclosureItem);
@@ -1849,17 +1856,9 @@
                 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("鏈骇鍝佺鍚堢浉鍏虫爣鍑嗚姹傦紝缁忔楠屽悎鏍煎噯浜堝嚭鍘傦紙鐩栫珷鏈夋晥锛�");
@@ -1871,13 +1870,8 @@
             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);
 
 
@@ -1956,7 +1950,7 @@
                 // 澶勭悊闆嗗悎
                 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())){
@@ -2001,7 +1995,7 @@
                 // 澶勭悊闆嗗悎
                 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())){
@@ -2054,7 +2048,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");
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java
index 14b7bbf..da12559 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java
@@ -171,7 +171,7 @@
      * @return
      */
     @Override
-    public int inspectionReport(List<Long> ids,String orderType) {
+    public int inspectionReport(List<Long> ids,String orderType,String materialProp) {
         Integer userId = SecurityUtils.getUserId().intValue();
         ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate()
                 .in(IfsInventoryQuantity::getId, ids)
@@ -179,6 +179,7 @@
                 .set(IfsInventoryQuantity::getDeclareUserId, userId)
                 .set(IfsInventoryQuantity::getIsInspect, 1)
                 .set(IfsInventoryQuantity::getOrderType,orderType)
+                .set(IfsInventoryQuantity::getMaterialProp,materialProp)
                 .set(IfsInventoryQuantity::getDeclareDate, LocalDateTime.now())
         );
         threadPoolTaskExecutor.execute(() -> {
@@ -254,6 +255,7 @@
                 .set(IfsInventoryQuantity::getDeclareDate, LocalDateTime.now())
                 .set(IfsInventoryQuantity::getUpdateBatchNo, ifsInventoryQuantity.getUpdateBatchNo())
                 .set(IfsInventoryQuantity::getOrderType,ifsInventoryQuantity.getOrderType())
+                .set(IfsInventoryQuantity::getMaterialProp,ifsInventoryQuantity.getMaterialProp())
         );
 
         threadPoolTaskExecutor.execute(() -> {
@@ -939,7 +941,7 @@
         if(Objects.nonNull(splitOrderList) && !splitOrderList.isEmpty()){
             List<Long> ids = splitOrderList.stream().map(IfsInventoryQuantity::getId).collect(Collectors.toList());
             ids.add(ifsInventoryQuantity.getId());
-            this.inspectionReport(ids,OrderType.RAW.getValue());
+            this.inspectionReport(ids,OrderType.RAW.getValue(),orderSplitDTO.getMaterialProp());
         }
         //鍕鹃�夊悓姝ュ埌MES锛屼繚瀛樿鍗曟媶鍒嗚褰�
         if(orderSplitDTO.getPushToMes()){

--
Gitblit v1.9.3