From ba473638c25efe295a039ff4dd9585bbd8dd4474 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期三, 01 七月 2026 17:20:36 +0800
Subject: [PATCH] 销售退货:调整新增和编辑时计算可退货数量的逻辑

---
 src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java |    9 +++++++++
 src/main/java/com/ruoyi/procurementrecord/bean/vo/ShippingProductVo.java                |    3 +++
 src/main/java/com/ruoyi/procurementrecord/bean/dto/ReturnSaleProductDto.java            |    3 +++
 src/main/resources/mapper/sales/ShippingInfoMapper.xml                                  |    7 +++++--
 src/main/resources/mapper/procurementrecord/ReturnSaleProductMapper.xml                 |   15 ++++++---------
 5 files changed, 26 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/ruoyi/procurementrecord/bean/dto/ReturnSaleProductDto.java b/src/main/java/com/ruoyi/procurementrecord/bean/dto/ReturnSaleProductDto.java
index 6cfae1b..b24ad14 100644
--- a/src/main/java/com/ruoyi/procurementrecord/bean/dto/ReturnSaleProductDto.java
+++ b/src/main/java/com/ruoyi/procurementrecord/bean/dto/ReturnSaleProductDto.java
@@ -35,4 +35,7 @@
 
     @Schema(description = "鍙戣揣鍑哄簱鏁伴噺")
     private BigDecimal stockOutNum;
+
+    @Schema(description = "寰呭鐞嗛��璐ф暟閲�")
+    private BigDecimal pendingReturnNum;
 }
diff --git a/src/main/java/com/ruoyi/procurementrecord/bean/vo/ShippingProductVo.java b/src/main/java/com/ruoyi/procurementrecord/bean/vo/ShippingProductVo.java
index 9f87aef..760d83f 100644
--- a/src/main/java/com/ruoyi/procurementrecord/bean/vo/ShippingProductVo.java
+++ b/src/main/java/com/ruoyi/procurementrecord/bean/vo/ShippingProductVo.java
@@ -40,4 +40,7 @@
 
     @Schema(description = "鍚◣鍗曚环")
     private BigDecimal taxInclusiveUnitPrice;
+
+    @Schema(description = "寰呭鐞嗛��璐ф暟閲�")
+    private BigDecimal pendingReturnNum;
 }
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java
index 048f1df..a6e3d6f 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java
@@ -33,6 +33,7 @@
 
 import java.math.BigDecimal;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author :yys
@@ -122,6 +123,14 @@
         byId.setSettler(SecurityUtils.getLoginUser().getNickName());
         byId.setRefundAmount(totalRefund);
         updateById(byId);
+        //鏇存柊閫�璐т骇鍝佸垪琛ㄧ殑鐘舵��
+        List<ReturnSaleProduct> updateList = list.stream().map(m -> {
+            ReturnSaleProduct returnSaleProduct = new ReturnSaleProduct();
+            returnSaleProduct.setId(m.getId());
+            returnSaleProduct.setStatus(1);
+            return returnSaleProduct;
+        }).collect(Collectors.toList());
+        returnSaleProductService.updateBatchById(updateList);
 
         // 3. 鏇存柊閿�鍞彴璐︾殑瀹為檯鍚堝悓閲戦
         if (byId.getShippingId() != null) {
diff --git a/src/main/resources/mapper/procurementrecord/ReturnSaleProductMapper.xml b/src/main/resources/mapper/procurementrecord/ReturnSaleProductMapper.xml
index 6b15d56..d104b21 100644
--- a/src/main/resources/mapper/procurementrecord/ReturnSaleProductMapper.xml
+++ b/src/main/resources/mapper/procurementrecord/ReturnSaleProductMapper.xml
@@ -19,8 +19,9 @@
             sor.outbound_batches,
             sor.stock_out_num,
             sor.batch_no,
-               GREATEST(sor.stock_out_num - COALESCE(rs1.total_return_num1, 0), 0) AS un_quantity,
-               COALESCE(rs.total_return_num, 0)                             AS total_return_num
+            GREATEST( sor.stock_out_num - COALESCE ( rs.total_return_num, 0 ), 0 ) AS un_quantity,
+            COALESCE ( rs.pending_return_num, 0 ) AS pending_return_num ,
+            COALESCE ( rs.return_num, 0 ) AS total_return_num
         FROM return_sale_product rsp
                  LEFT JOIN return_management rm ON rm.id = rsp.return_management_id
                  LEFT JOIN shipping_info si ON si.id = rm.shipping_id
@@ -30,15 +31,11 @@
                 left join product_model pm on slp.product_model_id = pm.id
                   LEFT JOIN product p on pm.product_id = p.id
                  LEFT JOIN (SELECT stock_out_record_id,
-                                   SUM(num) AS total_return_num
+                                   SUM(num) AS total_return_num,
+                                   SUM( CASE WHEN return_management_id =#{returnManagementId} AND STATUS = 0 THEN num ELSE 0 END ) AS pending_return_num ,
+                                   SUM( CASE WHEN STATUS = 1 THEN num ELSE 0 END ) AS return_num
                             FROM return_sale_product
-                            WHERE 1 = 1 and return_management_id = #{returnManagementId}
                             GROUP BY stock_out_record_id) rs ON rs.stock_out_record_id = sor.id
-                 LEFT JOIN (SELECT stock_out_record_id,
-                                   SUM(num) AS total_return_num1
-                            FROM return_sale_product
-                            WHERE 1 = 1
-                            GROUP BY stock_out_record_id) rs1 ON rs1.stock_out_record_id = sor.id
         where rm.id =#{returnManagementId}
     </select>
     <select id="listReturnSaleProduct" resultType="com.ruoyi.procurementrecord.bean.dto.ReturnSaleProductDto">
diff --git a/src/main/resources/mapper/sales/ShippingInfoMapper.xml b/src/main/resources/mapper/sales/ShippingInfoMapper.xml
index 6fc1842..8775933 100644
--- a/src/main/resources/mapper/sales/ShippingInfoMapper.xml
+++ b/src/main/resources/mapper/sales/ShippingInfoMapper.xml
@@ -78,7 +78,8 @@
             sor.batch_no,
             slp.tax_inclusive_unit_price,
             GREATEST(sor.stock_out_num - COALESCE(rs.total_return_num, 0), 0) AS un_quantity,
-            COALESCE(rs.total_return_num, 0) AS total_return_num
+            COALESCE(rs.return_num, 0) AS total_return_num,
+            COALESCE(rs.pending_return_num, 0) AS pending_return_num
         FROM shipping_info si
         LEFT JOIN shipping_product_detail spd ON spd.shipping_info_id = si.id
         LEFT JOIN stock_out_record sor ON sor.record_id = si.id and sor.record_type = '13'
@@ -86,7 +87,9 @@
         LEFT JOIN (
         SELECT
         stock_out_record_id,
-        SUM(num) AS total_return_num
+        SUM(num) AS total_return_num,
+        SUM( CASE WHEN rsp.STATUS = 0 THEN rsp.num ELSE 0 END ) AS pending_return_num ,
+        SUM( CASE WHEN rsp.STATUS = 1 THEN rsp.num ELSE 0 END ) AS return_num
         FROM return_sale_product rsp
         left join return_management rm on rm.id = rsp.return_management_id
         left join shipping_info si on si.id = rm.shipping_id

--
Gitblit v1.9.3