From 4d00b5a1923103b25ae4beaf26ba0a04b8d3ca4a Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期一, 26 五月 2025 11:25:30 +0800
Subject: [PATCH] 中空代码优化:提供字符串多级排序 提供客户名称

---
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassRelationInfoServiceImpl.java |   46 ++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 38 insertions(+), 8 deletions(-)

diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassRelationInfoServiceImpl.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassRelationInfoServiceImpl.java
index 5b12e1a..dbc4e08 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassRelationInfoServiceImpl.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassRelationInfoServiceImpl.java
@@ -13,10 +13,7 @@
 import com.mes.hollow.entity.HollowBigStorageCageDetails;
 import com.mes.hollow.entity.HollowGlassOutRelationInfo;
 import com.mes.hollow.entity.HollowGlassRelationInfo;
-import com.mes.hollow.entity.dto.FlowCardGlassInfoDTO;
-import com.mes.hollow.entity.dto.HollowBigStorageDTO;
-import com.mes.hollow.entity.dto.HollowGlassDetailsDTO;
-import com.mes.hollow.entity.dto.LackDetailsDTO;
+import com.mes.hollow.entity.dto.*;
 import com.mes.hollow.entity.vo.HollowAllFlowCardVO;
 import com.mes.hollow.entity.vo.HollowBigStorageDetailsQueryVO;
 import com.mes.hollow.mapper.HollowGlassRelationInfoMapper;
@@ -30,10 +27,13 @@
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 /**
@@ -315,21 +315,23 @@
         listMap.forEach((e, v) -> {
             HollowAllFlowCardVO hollowAllFlowCardVO = new HollowAllFlowCardVO();
             HollowBigStorageCageDetails cageDetails = v.get(0);
+            //鎸夌収娴佺▼鍗¤幏鍙栧搴旂殑浜у搧鍚嶇О
+            OrderDetailsDTO orderDetails = baseMapper.queryProductNameByFlowCardId(cageDetails.getFlowCardId());
+            if (null != orderDetails) {
+                BeanUtils.copyProperties(orderDetails, hollowAllFlowCardVO);
+            }
             hollowAllFlowCardVO.setFlowCardId(e);
             if (cageDetails.getHollowSequence() == 0) {
                 hollowAllFlowCardVO.setIsThroughSlot(Boolean.TRUE);
             } else {
                 hollowAllFlowCardVO.setIsThroughSlot(Boolean.FALSE);
             }
-            //鎸夌収娴佺▼鍗¤幏鍙栧搴旂殑浜у搧鍚嶇О
-            String productName = baseMapper.queryProductNameByFlowCardId(cageDetails.getFlowCardId());
-            hollowAllFlowCardVO.setProductName(productName);
             List<FlowCardGlassInfoDTO> flowCardInfoList = hollowBigStorageCageDetailsService.hollowIsAll(e, cageDetails.getTotalLayer(), Boolean.FALSE);
             hollowAllFlowCardVO.setFlowCardGlassInfoDTOList(flowCardInfoList);
             resultList.add(hollowAllFlowCardVO);
         });
+        sortFlowCardIdList(resultList);
         return resultList;
-//        return dtos.stream().collect(Collectors.groupingBy(e -> e.getFlowCardId() + ":" + e.getProductName()));
     }
 
     @Override
@@ -396,5 +398,33 @@
 //        return lackDetailsList;
 //    }
 
+    private void sortFlowCardIdList(List<HollowAllFlowCardVO> list) {
+        Pattern pattern = Pattern.compile("^NG(\\d+)([A-Za-z]+)(\\d+)$");
+
+        list.sort((v1, v2) -> {
+            Matcher m1 = pattern.matcher(v1.getFlowCardId());
+            Matcher m2 = pattern.matcher(v2.getFlowCardId());
+
+            if (!m1.find() || !m2.find()) {
+                throw new IllegalArgumentException("鑾峰彇鍒扮殑娴佺▼鍗′笉绗﹀悎鏍¢獙瑙勫垯");
+            }
+
+            // 鎻愬彇閮ㄥ垎
+            BigInteger order1 = new BigInteger(m1.group(1));
+            BigInteger order2 = new BigInteger(m2.group(1));
+            String layer1 = m1.group(2);
+            String layer2 = m2.group(2);
+            BigInteger seq1 = new BigInteger(m1.group(3));
+            BigInteger seq2 = new BigInteger(m2.group(3));
+
+            // 浼樺厛绾ф帓搴�
+            int cmp = order1.compareTo(order2);
+            if (cmp != 0) return cmp;
+            cmp = layer1.compareTo(layer2);
+            if (cmp != 0) return cmp;
+            return seq1.compareTo(seq2);
+        });
+    }
+
 }
 

--
Gitblit v1.8.0