From f90d9f53beb844265c4153159aadb0baf81bafdb Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期四, 30 七月 2026 18:07:11 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_business' into dev_business

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productsales/MesWmProductSalesLineMapper.java |   22 ++++++++++++++++++++++
 1 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productsales/MesWmProductSalesLineMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productsales/MesWmProductSalesLineMapper.java
index 9dcc9e4..6068a10 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productsales/MesWmProductSalesLineMapper.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productsales/MesWmProductSalesLineMapper.java
@@ -1,11 +1,13 @@
 package cn.iocoder.yudao.module.mes.dal.mysql.wm.productsales;
 
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesLineDO;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * MES 閿�鍞嚭搴撳崟琛� Mapper
@@ -31,6 +33,26 @@
                 .orderByDesc(MesWmProductSalesLineDO::getId));
     }
 
+    /**
+     * 鏍规嵁閿�鍞鍗曟槑缁� ID 鍒楄〃鏌ヨ鍑哄簱琛岋紝鎸� saleOrderItemId 鍒嗙粍杩斿洖鎵瑰彿
+     */
+    default Map<Long, String> selectBatchCodesBySaleOrderItemIds(java.util.Collection<Long> saleOrderItemIds) {
+        if (saleOrderItemIds == null || saleOrderItemIds.isEmpty()) {
+            return java.util.Collections.emptyMap();
+        }
+        List<MesWmProductSalesLineDO> lines = selectList(new LambdaQueryWrapperX<MesWmProductSalesLineDO>()
+                .in(MesWmProductSalesLineDO::getSaleOrderItemId, saleOrderItemIds));
+        return lines.stream()
+                .filter(l -> l.getBatchCode() != null && !l.getBatchCode().isEmpty())
+                .collect(java.util.stream.Collectors.groupingBy(
+                        MesWmProductSalesLineDO::getSaleOrderItemId,
+                        java.util.LinkedHashMap::new,
+                        java.util.stream.Collectors.collectingAndThen(
+                                java.util.stream.Collectors.mapping(MesWmProductSalesLineDO::getBatchCode,
+                                        java.util.stream.Collectors.toSet()),
+                                codes -> String.join("銆�", codes))));
+    }
+
     default void updateQualityStatusByIds(List<Long> ids, Integer qualityStatus) {
         update(new MesWmProductSalesLineDO().setQualityStatus(qualityStatus),
                 new LambdaUpdateWrapper<MesWmProductSalesLineDO>().in(MesWmProductSalesLineDO::getId, ids));

--
Gitblit v1.9.3