Browse Source

优化储运中心棒一的牌号查询

lingpeng.li 1 day ago
parent
commit
221e70ecc6

+ 21 - 6
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/carUnit/service/impl/CarUnitServiceImpl.java

@@ -1773,6 +1773,26 @@ public class CarUnitServiceImpl extends ServiceImpl<CarUnitMapper, CarUnit> impl
                 .filter(item -> item.getHeatNo() != null) // 避免空指针
                 .collect(Collectors.groupingBy(RollClubOneDetails::getHeatNo));
 
+        // 提前收集所有 billetNo
+        Set<String> billetNoSet = oneList.stream()
+                .map(RollClubOneDetails::getBilletNo)
+                .filter(Objects::nonNull)
+                .collect(Collectors.toSet());
+
+        // 批量查询 billetBasicInfo,并按 billetNo 映射(保留创建时间最新的一条)
+        List<BilletBasicInfo> billetBasicInfos = billetBasicInfoService.list(
+                new LambdaQueryWrapper<BilletBasicInfo>()
+                        .in(BilletBasicInfo::getBilletNo, billetNoSet)
+                        .orderByDesc(BilletBasicInfo::getCreateTime)
+        );
+        Map<String, BilletBasicInfo> billetInfoMap = billetBasicInfos.stream()
+                .filter(b -> b.getBilletNo() != null)
+                .collect(Collectors.toMap(
+                        BilletBasicInfo::getBilletNo,
+                        Function.identity(),
+                        (existing, replacement) -> existing // 取第一条(最新)
+                ));
+
         Map<String, StorageCenterHeatNoInvoicingVO.RollOneHeatNo> resultMap = new HashMap<>();
 
         // 2. 遍历每个分组
@@ -1825,12 +1845,7 @@ public class CarUnitServiceImpl extends ServiceImpl<CarUnitMapper, CarUnit> impl
 
                 String brandNum = "5"; // 默认值
 
-                BilletBasicInfo billetBasicInfo = billetBasicInfoService.getOne(
-                        new LambdaQueryWrapper<BilletBasicInfo>()
-                                .eq(BilletBasicInfo::getBilletNo, billetNo)
-                                .orderByDesc(BilletBasicInfo::getCreateTime)
-                                .last("LIMIT 1")
-                );
+                BilletBasicInfo billetBasicInfo = billetInfoMap.get(billetNo);
 
                 if (billetBasicInfo != null && billetBasicInfo.getBrandNum() != null) {
                     brandNum = billetBasicInfo.getBrandNum();