From 5d818f39c862884b7087488d588fef5b7ce47386 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 28 十月 2026 18:33:55 +0800
Subject: [PATCH] feat(mes): 增加销售退货单与出库单关联功能

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

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/returnsales/MesWmReturnSalesLineMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/returnsales/MesWmReturnSalesLineMapper.java
index d097aa0..086a34f 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/returnsales/MesWmReturnSalesLineMapper.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/returnsales/MesWmReturnSalesLineMapper.java
@@ -1,12 +1,17 @@
 package cn.iocoder.yudao.module.mes.dal.mysql.wm.returnsales;
 
+import cn.iocoder.yudao.framework.common.core.KeyValue;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.module.mes.controller.admin.wm.returnsales.vo.line.MesWmReturnSalesLinePageReqVO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnsales.MesWmReturnSalesLineDO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 
+import java.math.BigDecimal;
+import java.util.Collection;
 import java.util.List;
 
 /**
@@ -34,4 +39,31 @@
                 .eq(MesWmReturnSalesLineDO::getReturnId, returnId));
     }
 
+    default List<MesWmReturnSalesLineDO> selectListByProductSalesLineIds(Collection<Long> productSalesLineIds) {
+        return selectList(new LambdaQueryWrapperX<MesWmReturnSalesLineDO>()
+                .in(MesWmReturnSalesLineDO::getProductSalesLineId, productSalesLineIds));
+    }
+
+    /**
+     * 缁熻姣忎釜閿�鍞嚭搴撹宸茶閫�璐х殑鏁伴噺锛氭帓闄ゅ凡鍙栨秷鐨勯��璐у崟鍜屽凡鍒犻櫎鐨勮
+     *
+     * @param productSalesLineIds 閿�鍞嚭搴撹 ID 闆嗗悎
+     * @param canceledStatus      閫�璐у崟宸插彇娑堢姸鎬�
+     * @param excludeReturnId     闇�瑕佹帓闄ょ殑閫�璐у崟 ID锛堟牎楠屽綋鍓嶉��璐у崟鑷韩鐨勫彲閫�鏁伴噺鏃朵娇鐢級锛屽彲涓虹┖
+     * @return key=閿�鍞嚭搴撹 ID锛寁alue=宸查��鏁伴噺
+     */
+    @Select("<script>" +
+            "SELECT rl.product_sales_line_id AS `key`, IFNULL(SUM(rl.quantity), 0) AS `value` " +
+            "FROM mes_wm_return_sales_line rl " +
+            "INNER JOIN mes_wm_return_sales rs ON rs.id = rl.return_id AND rs.deleted = 0 AND rs.status != #{canceledStatus} " +
+            "<if test='excludeReturnId != null'>AND rs.id != #{excludeReturnId} </if>" +
+            "WHERE rl.deleted = 0 AND rl.product_sales_line_id IN " +
+            "<foreach collection='productSalesLineIds' item='id' open='(' separator=',' close=')'>#{id}</foreach> " +
+            "GROUP BY rl.product_sales_line_id" +
+            "</script>")
+    List<KeyValue<Long, BigDecimal>> selectReturnedQuantityList(
+            @Param("productSalesLineIds") Collection<Long> productSalesLineIds,
+            @Param("canceledStatus") Integer canceledStatus,
+            @Param("excludeReturnId") Long excludeReturnId);
+
 }

--
Gitblit v1.9.3