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/productsales/MesWmProductSalesMapper.java | 29 +++++++++++++++++++++++++++++
1 files changed, 29 insertions(+), 0 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productsales/MesWmProductSalesMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productsales/MesWmProductSalesMapper.java
index 013c8cd..66c4d93 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productsales/MesWmProductSalesMapper.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productsales/MesWmProductSalesMapper.java
@@ -54,6 +54,35 @@
return selectPage(reqVO, wrapper);
}
+ /**
+ * 鍒嗛〉鏌ヨ鍙��閿�鍞嚭搴撳崟锛氫粎宸插畬鎴愮姸鎬侊紝涓斿瓨鍦ㄣ�屽嚭搴撴暟閲� > 宸查��鏁伴噺銆嶇殑琛�
+ */
+ default PageResult<MesWmProductSalesDO> selectReturnablePage(MesWmProductSalesPageReqVO reqVO,
+ Integer finishedStatus, Integer canceledStatus,
+ List<Long> permittedClientIds) {
+ LambdaQueryWrapperX<MesWmProductSalesDO> wrapper = new LambdaQueryWrapperX<MesWmProductSalesDO>()
+ .likeIfPresent(MesWmProductSalesDO::getCode, reqVO.getCode())
+ .likeIfPresent(MesWmProductSalesDO::getName, reqVO.getName())
+ .eqIfPresent(MesWmProductSalesDO::getClientId, reqVO.getClientId())
+ .eq(MesWmProductSalesDO::getStatus, finishedStatus)
+ .betweenIfPresent(MesWmProductSalesDO::getSalesDate, reqVO.getShipmentDate())
+ .betweenIfPresent(MesWmProductSalesDO::getOutboundTime, reqVO.getOutboundTime());
+ if (permittedClientIds != null) {
+ if (CollUtil.isEmpty(permittedClientIds)) {
+ return PageResult.empty();
+ }
+ wrapper.in(MesWmProductSalesDO::getClientId, permittedClientIds);
+ }
+ wrapper.apply("EXISTS (SELECT 1 FROM mes_wm_product_sales_line psl " +
+ "WHERE psl.deleted = 0 AND psl.sales_id = mes_wm_product_sales.id AND psl.quantity > " +
+ "(SELECT IFNULL(SUM(rl.quantity), 0) FROM mes_wm_return_sales_line rl " +
+ "INNER JOIN mes_wm_return_sales rs ON rs.id = rl.return_id AND rs.deleted = 0 " +
+ "WHERE rl.deleted = 0 AND rl.product_sales_line_id = psl.id AND rs.status != {0}))",
+ canceledStatus);
+ wrapper.orderByDesc(MesWmProductSalesDO::getId);
+ return selectPage(reqVO, wrapper);
+ }
+
default MesWmProductSalesDO selectByCode(String code) {
return selectOne(MesWmProductSalesDO::getCode, code);
}
--
Gitblit v1.9.3