From b53f9dad31d0a6f1802d1d5ebd98964bb9577d4a Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期五, 06 三月 2026 17:31:14 +0800
Subject: [PATCH] 销售退货模块接口开发

---
 src/main/resources/mapper/production/SalesLedgerWorkMapper.xml                          |    2 
 src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml          |    2 
 src/main/java/com/ruoyi/sales/service/ShippingInfoService.java                          |    3 +
 src/main/resources/mapper/sales/ReceiptPaymentMapper.xml                                |    6 +-
 src/main/resources/mapper/sales/ShippingInfoMapper.xml                                  |   21 ++++++----
 src/main/java/com/ruoyi/procurementrecord/dto/ReturnSaleProductDto.java                 |    4 +
 src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java |   18 +-------
 src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java                 |    3 -
 src/main/resources/mapper/production/ProductOrderMapper.xml                             |    2 
 src/main/resources/mapper/sales/SalesLedgerProductMapper.xml                            |    4 +-
 src/main/java/com/ruoyi/sales/mapper/ShippingInfoMapper.java                            |    2 
 src/main/resources/mapper/production/SalesLedgerSchedulingMapper.xml                    |    2 
 src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml                 |    2 
 src/main/resources/mapper/procurementrecord/ReturnSaleProductMapper.xml                 |   21 +++++++---
 src/main/resources/mapper/sales/ShipmentApprovalMapper.xml                              |    2 
 15 files changed, 48 insertions(+), 46 deletions(-)

diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ReturnSaleProductDto.java b/src/main/java/com/ruoyi/procurementrecord/dto/ReturnSaleProductDto.java
index 3cdb7dc..fa6e6d6 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ReturnSaleProductDto.java
+++ b/src/main/java/com/ruoyi/procurementrecord/dto/ReturnSaleProductDto.java
@@ -15,5 +15,7 @@
     private String unit;
 
     //鏈��璐ф暟閲�
-    private BigDecimal unReturn;
+    private BigDecimal unQuantity;
+
+    private BigDecimal totalReturnNum;
 }
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 080150b..9af5101 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java
@@ -1,14 +1,11 @@
 package com.ruoyi.procurementrecord.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.utils.OrderUtils;
 import com.ruoyi.procurementrecord.dto.ReturnManagementDto;
-import com.ruoyi.procurementrecord.dto.ReturnSaleProductDto;
 import com.ruoyi.procurementrecord.mapper.ReturnManagementMapper;
-import com.ruoyi.procurementrecord.mapper.ReturnSaleProductMapper;
 import com.ruoyi.procurementrecord.pojo.ReturnManagement;
 import com.ruoyi.procurementrecord.pojo.ReturnSaleProduct;
 import com.ruoyi.procurementrecord.service.ReturnManagementService;
@@ -17,22 +14,16 @@
 import com.ruoyi.sales.dto.SalesLedgerProductDto;
 import com.ruoyi.sales.mapper.SalesLedgerMapper;
 import com.ruoyi.sales.pojo.SalesLedger;
-import com.ruoyi.sales.pojo.SalesLedgerProduct;
 import com.ruoyi.sales.pojo.ShippingInfo;
-import com.ruoyi.sales.service.ISalesLedgerProductService;
 import com.ruoyi.sales.service.ShippingInfoService;
-import com.ruoyi.sales.service.impl.ShippingInfoServiceImpl;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * @author :yys
@@ -55,10 +46,6 @@
     @Override
     public IPage<ReturnManagementDto> listPage(Page page, ReturnManagementDto returnManagement) {
         IPage<ReturnManagementDto> returnManagementIPage = returnManagementMapper.listPage(page, returnManagement);
-        for (ReturnManagementDto returnManagementDto : returnManagementIPage.getRecords()) {
-            List<ReturnSaleProductDto> returnSaleProducts = returnSaleProductService.listReturnSaleProductDto(returnManagementDto.getId());
-            returnManagementDto.setReturnSaleProducts(returnSaleProducts);
-        }
         return returnManagementIPage;
     }
 
@@ -96,7 +83,7 @@
         SalesLedgerDto salesLedgerDto = new SalesLedgerDto();
         BeanUtils.copyProperties(salesLedger, salesLedgerDto);
 
-        List<SalesLedgerProductDto> salesLedgerProductDtos = shippingInfoService.getReturnManagementDtoById(shippingId);
+        List<SalesLedgerProductDto> salesLedgerProductDtos = shippingInfoService.getReturnManagementDtoById(byId.getId());
         salesLedgerDto.setProductDtoData(salesLedgerProductDtos);
          return salesLedgerDto;
     }
@@ -105,7 +92,8 @@
     public boolean handle(Long returnManagementId) {
         ReturnManagement byId = this.getById(returnManagementId);
         byId.setStatus(1);
-        return false;
+        updateById(byId);
+        return true;
     }
 
     @Override
diff --git a/src/main/java/com/ruoyi/sales/mapper/ShippingInfoMapper.java b/src/main/java/com/ruoyi/sales/mapper/ShippingInfoMapper.java
index 8cc8b29..25b5128 100644
--- a/src/main/java/com/ruoyi/sales/mapper/ShippingInfoMapper.java
+++ b/src/main/java/com/ruoyi/sales/mapper/ShippingInfoMapper.java
@@ -21,7 +21,7 @@
 
     List<ShippingInfo> listAll();
 
-    List<SalesLedgerProductDto> getReturnManagementDtoById(Long shippingId);
+    List<SalesLedgerProductDto> getReturnManagementDtoById(@Param("shippingId")Long shippingId);
 
     List<ShippingInfo> getShippingInfoByCustomerName(String customerName);
 
diff --git a/src/main/java/com/ruoyi/sales/service/ShippingInfoService.java b/src/main/java/com/ruoyi/sales/service/ShippingInfoService.java
index 3f2f1d3..2aa1a13 100644
--- a/src/main/java/com/ruoyi/sales/service/ShippingInfoService.java
+++ b/src/main/java/com/ruoyi/sales/service/ShippingInfoService.java
@@ -7,6 +7,7 @@
 import com.ruoyi.sales.dto.SalesLedgerProductDto;
 import com.ruoyi.sales.dto.ShippingInfoDto;
 import com.ruoyi.sales.pojo.ShippingInfo;
+import org.apache.ibatis.annotations.Param;
 
 import java.io.IOException;
 import java.util.List;
@@ -22,7 +23,7 @@
 
     boolean delete(List<Long> ids);
 
-    List<SalesLedgerProductDto> getReturnManagementDtoById(Long shippingId);
+    List<SalesLedgerProductDto> getReturnManagementDtoById( Long shippingId);
 
     List<ShippingInfo> getShippingInfoByCustomerName(String customerName);
 }
diff --git a/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
index 1cdbebb..c9651a7 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
@@ -9,7 +9,6 @@
 import com.ruoyi.common.enums.FileNameType;
 import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
 import com.ruoyi.other.service.impl.TempFileServiceImpl;
-import com.ruoyi.procurementrecord.dto.ReturnSaleProductDto;
 import com.ruoyi.procurementrecord.utils.StockUtils;
 import com.ruoyi.sales.dto.SalesLedgerProductDto;
 import com.ruoyi.sales.dto.ShippingInfoDto;
@@ -112,7 +111,7 @@
 
     @Override
     public List<SalesLedgerProductDto> getReturnManagementDtoById(Long shippingId) {
-        return shippingInfoMapper.getReturnManagementDtoById(shippingId);
+        return shippingInfoMapper.getReturnManagementDtoById(shippingId );
 
     }
 
diff --git a/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml b/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
index e1d9381..b0166ca 100644
--- a/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
+++ b/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
@@ -20,7 +20,7 @@
             t2.tax_exclusive_total_price,
             t3.inbound_num as quantityStock
         from  purchase_ledger t1
-        left join sales_ledger_product t2 on t1.id = t2.sales_ledger_id
+        left join sales_ledger_product t2 on t1.id = t2.sales_ledger_id and slp.type = 2
         left join procurement_record_storage t3 on t2.id = t3.sales_ledger_product_id
         where t1.purchase_contract_number = #{req.purchaseContractNumber}
         <if test="req.id != null and req.id != ''">
diff --git a/src/main/resources/mapper/procurementrecord/ReturnSaleProductMapper.xml b/src/main/resources/mapper/procurementrecord/ReturnSaleProductMapper.xml
index 39fd27f..87257ab 100644
--- a/src/main/resources/mapper/procurementrecord/ReturnSaleProductMapper.xml
+++ b/src/main/resources/mapper/procurementrecord/ReturnSaleProductMapper.xml
@@ -11,13 +11,22 @@
         <result column="status" property="status" />
     </resultMap>
     <select id="listReturnSaleProductDto" resultType="com.ruoyi.procurementrecord.dto.ReturnSaleProductDto">
-        select rsp.*,
-               slp.product_category as product_name,
-               slp.specification_model as model
-        from return_sale_product rsp
-                 left join sales_ledger_product slp on rsp.return_sale_ledger_product_id = slp.id
-        where rsp.return_management_id = #{returnManagementId}
+        SELECT slp.product_category                                         as product_name,
+               slp.specification_model                                      as model,
+               rsp.*,
+               GREATEST(slp.quantity - COALESCE(rs.total_return_num, 0), 0) AS un_quantity,
+               COALESCE(rs.total_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
+                 LEFT JOIN sales_ledger_product slp ON si.sales_ledger_product_id = slp.id and slp.type = 1
+                 LEFT JOIN (SELECT return_sale_ledger_product_id,
 
+                                   SUM(num) AS total_return_num
+                            FROM return_sale_product
+                            WHERE 1 = 1 and return_management_id != #{returnManagementId}
+                            GROUP BY return_sale_ledger_product_id) rs ON rs.return_sale_ledger_product_id = slp.id
+        where rm.id =#{returnManagementId}
     </select>
 
 </mapper>
diff --git a/src/main/resources/mapper/production/ProductOrderMapper.xml b/src/main/resources/mapper/production/ProductOrderMapper.xml
index fdcb54e..6b993bf 100644
--- a/src/main/resources/mapper/production/ProductOrderMapper.xml
+++ b/src/main/resources/mapper/production/ProductOrderMapper.xml
@@ -41,7 +41,7 @@
         ) shipping_status_counts ON sl.id = shipping_status_counts.sales_ledger_id
             left join product_model pm on po.product_model_id = pm.id
             left join product p on pm.product_id = p.id
-        left join sales_ledger_product slp on po.sale_ledger_product_id = slp.id
+        left join sales_ledger_product slp on po.sale_ledger_product_id = slp.id and slp.type = 1
         left join product_process_route ppr on po.id = ppr.product_order_id
         left join product_bom pb on pb.id = ppr.bom_id
         <where>
diff --git a/src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml b/src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml
index fdbe7cc..28501a6 100644
--- a/src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml
+++ b/src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml
@@ -22,7 +22,7 @@
         FROM
         sales_ledger_production_accounting t4
         LEFT JOIN sales_ledger T1 ON T1.id = t4.sales_ledger_id
-        left join sales_ledger_product t3 on t4.sales_ledger_product_id = t3.id
+        left join sales_ledger_product t3 on t4.sales_ledger_product_id = t3.id and slp.type = 1
         <where>
             t3.type = 1
             <if test="salesLedgerDto.schedulingUserName != null and salesLedgerDto.schedulingUserName != '' ">
diff --git a/src/main/resources/mapper/production/SalesLedgerSchedulingMapper.xml b/src/main/resources/mapper/production/SalesLedgerSchedulingMapper.xml
index 72321ec..4cff920 100644
--- a/src/main/resources/mapper/production/SalesLedgerSchedulingMapper.xml
+++ b/src/main/resources/mapper/production/SalesLedgerSchedulingMapper.xml
@@ -91,7 +91,7 @@
         FROM
         sales_ledger_scheduling T2
         LEFT JOIN sales_ledger T1 ON T1.id = T2.sales_ledger_id
-        left join sales_ledger_product t3 on T2.sales_ledger_product_id = t3.id
+        left join sales_ledger_product t3 on T2.sales_ledger_product_id = t3.id and slp.type = 1
         <where>
             t3.type = 1
             <if test="salesLedgerDto.status != null and salesLedgerDto.status != '' ">
diff --git a/src/main/resources/mapper/production/SalesLedgerWorkMapper.xml b/src/main/resources/mapper/production/SalesLedgerWorkMapper.xml
index d8dcd22..4ec771f 100644
--- a/src/main/resources/mapper/production/SalesLedgerWorkMapper.xml
+++ b/src/main/resources/mapper/production/SalesLedgerWorkMapper.xml
@@ -28,7 +28,7 @@
         FROM
         sales_ledger_work t4
         LEFT JOIN sales_ledger T1 ON T1.id = t4.sales_ledger_id
-        left join sales_ledger_product t3 on t4.sales_ledger_product_id = t3.id
+        left join sales_ledger_product t3 on t4.sales_ledger_product_id = t3.id and slp.type = 1
         left join sales_ledger_scheduling t2 on t4.sales_ledger_scheduling_id = t2.id
         <where>
             t3.type = 1
diff --git a/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml b/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml
index 355402e..975d120 100644
--- a/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml
+++ b/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml
@@ -90,7 +90,7 @@
         FROM invoice_ledger_file
         GROUP BY invoice_ledger_id
         ) T4 ON T4.invoice_ledger_id = T1.id
-        LEFT JOIN sales_ledger_product T5 ON T2.sales_ledger_product_id = T5.id
+        LEFT JOIN sales_ledger_product T5 ON T2.sales_ledger_product_id = T5.id and slp.type = 1
         LEFT JOIN (
         SELECT
         SUM(receipt_payment_amount) AS receipt_payment_amount_total,
@@ -378,7 +378,7 @@
                 GROUP_CONCAT( name ORDER BY id ASC SEPARATOR ' | ') AS invoiceFileName
             FROM invoice_ledger_file GROUP BY invoice_ledger_id
         ) T4 ON T4.invoice_ledger_id = T1.id
-                 LEFT JOIN sales_ledger_product T5 ON T2.sales_ledger_product_id = T5.id
+                 LEFT JOIN sales_ledger_product T5 ON T2.sales_ledger_product_id = T5.id and slp.type = 1
                  LEFT JOIN (
             SELECT SUM(receipt_payment_amount) AS receipt_payment_amount_total,invoice_ledger_id FROM receipt_payment GROUP
                 BY invoice_ledger_id
@@ -414,7 +414,7 @@
         GROUP_CONCAT( name ORDER BY id ASC SEPARATOR ' | ') AS invoiceFileName
         FROM invoice_ledger_file GROUP BY invoice_ledger_id
         ) T4 ON T4.invoice_ledger_id = T1.id
-        LEFT JOIN sales_ledger_product T5 ON T2.sales_ledger_product_id = T5.id
+        LEFT JOIN sales_ledger_product T5 ON T2.sales_ledger_product_id = T5.id and slp.type = 1
         LEFT JOIN (
         SELECT SUM(receipt_payment_amount) AS receipt_payment_amount_total,invoice_ledger_id FROM receipt_payment GROUP
         BY invoice_ledger_id
diff --git a/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml b/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
index 671fcf5..73026c8 100644
--- a/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
+++ b/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
@@ -31,7 +31,7 @@
                  left join production_product_main ppm on qi.product_main_id = ppm.id
                  left join product_work_order pwo on ppm.work_order_id = pwo.id
                  left join product_order po on pwo.product_order_id = po.id
-                 left join sales_ledger_product slp on po.sale_ledger_product_id = slp.id
+                 left join sales_ledger_product slp on po.sale_ledger_product_id = slp.id and slp.type = 1
         where qi.product_main_id = #{productMainId}
 
 
@@ -144,7 +144,7 @@
                      p.product_name,
                      ps.unit_quantity * slp.quantity AS single_quantity
               FROM sales_ledger sl
-                       LEFT JOIN sales_ledger_product slp ON slp.sales_ledger_id = sl.id
+                       LEFT JOIN sales_ledger_product slp ON slp.sales_ledger_id = sl.id and slp.type = 1
                        LEFT JOIN product_model pm ON pm.id = slp.product_model_id
                        LEFT JOIN product_bom pb ON pb.product_model_id = pm.id
                        LEFT JOIN product_structure ps ON pb.id = ps.bom_id
diff --git a/src/main/resources/mapper/sales/ShipmentApprovalMapper.xml b/src/main/resources/mapper/sales/ShipmentApprovalMapper.xml
index 8b9792e..68cd664 100644
--- a/src/main/resources/mapper/sales/ShipmentApprovalMapper.xml
+++ b/src/main/resources/mapper/sales/ShipmentApprovalMapper.xml
@@ -9,7 +9,7 @@
         FROM shipment_approval sa
                  LEFT JOIN shipping_info si ON sa.shipping_info_id = si.id
                  LEFT JOIN sales_ledger sl ON sa.sales_ledger_id = sl.id
-                 LEFT JOIN sales_ledger_product slp ON sa.sales_ledger_product_id = slp.id
+                 LEFT JOIN sales_ledger_product slp ON sa.sales_ledger_product_id = slp.id and slp.type = 1
                  LEFT JOIN sys_user T2 ON sl.entry_person = T2.user_id
         <where>
             1=1
diff --git a/src/main/resources/mapper/sales/ShippingInfoMapper.xml b/src/main/resources/mapper/sales/ShippingInfoMapper.xml
index c5b3ae7..955a89f 100644
--- a/src/main/resources/mapper/sales/ShippingInfoMapper.xml
+++ b/src/main/resources/mapper/sales/ShippingInfoMapper.xml
@@ -24,7 +24,7 @@
         sl.customer_name
         FROM shipping_info s
         LEFT JOIN sales_ledger sl ON s.sales_ledger_id = sl.id
-        LEFT JOIN sales_ledger_product slp ON s.sales_ledger_product_id = slp.id
+        LEFT JOIN sales_ledger_product slp ON s.sales_ledger_product_id = slp.id and slp.type = 1
         left join product_model pm on slp.product_model_id = pm.id
         left join product p on pm.product_id = p.id
         WHERE 1=1
@@ -61,22 +61,25 @@
     <select id="getReturnManagementDtoById" resultType="com.ruoyi.sales.dto.SalesLedgerProductDto">
         SELECT
         slp.*,
-        slp.quantity - COALESCE(rs.total_return_num, 0) AS un_quantity,
+        GREATEST(slp.quantity - COALESCE(rs.total_return_num, 0), 0) AS un_quantity,
         COALESCE(rs.total_return_num, 0) AS total_return_num
         FROM shipping_info si
-        LEFT JOIN sales_ledger_product slp ON si.sales_ledger_product_id = slp.id
+        LEFT JOIN sales_ledger_product slp ON si.sales_ledger_product_id = slp.id and slp.type = 1
         LEFT JOIN (
         SELECT
         return_sale_ledger_product_id,
         SUM(num) AS total_return_num
-        FROM return_sale_product
-        <where>
-            <if test="productId != null">
-                AND return_sale_ledger_product_id = #{productId}
-            </if>
-        </where>
+        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
+        WHERE 1=1
         GROUP BY return_sale_ledger_product_id
         ) rs ON rs.return_sale_ledger_product_id = slp.id
+        <where>
+            <if test="shippingId != null">
+                si.id = #{shippingId}
+            </if>
+        </where>
     </select>
     <select id="getShippingInfoByCustomerName" resultType="com.ruoyi.sales.pojo.ShippingInfo">
         select * from shipping_info si

--
Gitblit v1.9.3