From 96d416d310d323e68d42d1ed417f6cea21852d57 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期三, 13 五月 2026 11:56:39 +0800
Subject: [PATCH] Merge branch 'dev_New_pro' of http://114.132.189.42:9002/r/product-inventory-management-after into dev_New_pro

---
 src/main/java/com/ruoyi/procurementrecord/bean/dto/InventoryInformationDto.java                |    2 
 src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordOutMapper.java               |    2 
 src/main/java/com/ruoyi/purchase/mapper/PurchaseReturnOrdersMapper.java                        |   13 
 src/main/java/com/ruoyi/sales/service/ShippingInfoService.java                                 |    4 
 src/main/java/com/ruoyi/procurementrecord/controller/ProcurementExceptionRecordController.java |   11 
 src/main/java/com/ruoyi/procurementrecord/bean/vo/ShippingInfoVo.java                          |   17 +
 src/main/java/com/ruoyi/procurementrecord/pojo/ReturnSaleProduct.java                          |   15 
 src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java                                |   25 +
 src/main/java/com/ruoyi/procurementrecord/bean/dto/Details.java                                |    2 
 src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java                        |    3 
 src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementPageDtoCopy.java                 |    2 
 src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java       |    6 
 src/main/java/com/ruoyi/procurementrecord/service/ReturnManagementService.java                 |    6 
 src/main/resources/mapper/procurementrecord/ReturnManagementMapper.xml                         |    8 
 src/main/resources/mapper/stock/StockOutRecordMapper.xml                                       |    6 
 src/main/java/com/ruoyi/basic/mapper/ProductModelMapper.java                                   |    2 
 src/main/java/com/ruoyi/purchase/service/PurchaseReturnOrdersService.java                      |    6 
 src/main/java/com/ruoyi/procurementrecord/mapper/ReturnManagementMapper.java                   |    2 
 src/main/resources/mapper/purchase/PurchaseReturnOrderProductsMapper.xml                       |    4 
 src/main/java/com/ruoyi/sales/dto/ShippingInfoDto.java                                         |    6 
 src/main/resources/mapper/stock/StockInRecordMapper.xml                                        |   10 
 src/main/java/com/ruoyi/purchase/pojo/PurchaseReturnOrderProducts.java                         |   20 
 src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java                       |    1 
 src/main/java/com/ruoyi/account/bean/dto/PurchaseReturnDto.java                                |    3 
 src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementRecordOutAdd.java                |    2 
 src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java        |   41 +-
 src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementPageDto.java                     |    2 
 src/main/java/com/ruoyi/purchase/dto/SimpleReturnOrderGroupDto.java                            |    2 
 src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementUpdateDto.java                   |    2 
 src/main/java/com/ruoyi/purchase/dto/PurchaseReturnOrderProductsDto.java                       |    2 
 src/main/java/com/ruoyi/sales/mapper/ShippingInfoMapper.java                                   |    4 
 src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java                |    2 
 src/main/java/com/ruoyi/procurementrecord/service/ReturnSaleProductService.java                |    2 
 src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java    |    6 
 src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnSaleProductServiceImpl.java       |    2 
 src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementAddDto.java                      |    2 
 src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml                        |   24 
 src/main/java/com/ruoyi/purchase/service/impl/PurchaseReturnOrdersServiceImpl.java             |   42 +-
 src/main/java/com/ruoyi/procurementrecord/bean/dto/ReturnSaleProductDto.java                   |   38 ++
 src/main/java/com/ruoyi/purchase/controller/PurchaseReturnOrdersController.java                |   11 
 src/main/resources/mapper/purchase/PurchaseReturnOrdersMapper.xml                              |   77 ++++
 src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml                     |   16 
 src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java          |    3 
 src/main/java/com/ruoyi/account/bean/dto/PurchaseInboundDto.java                               |    3 
 src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementDto.java                         |    2 
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java                         |    6 
 src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java             |    6 
 src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java                     |    6 
 src/main/java/com/ruoyi/purchase/vo/PurchaseReturnOrderProductsDetailVo.java                   |   62 ++++
 src/main/java/com/ruoyi/account/bean/dto/SalesOutboundDto.java                                 |    3 
 src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java                           |    2 
 src/main/resources/mapper/procurementrecord/ReturnSaleProductMapper.xml                        |   33 +
 src/main/java/com/ruoyi/purchase/vo/PurchaseReturnDetailsVo.java                               |   13 
 src/main/java/com/ruoyi/warehouse/mapper/DocumentationMapper.java                              |    1 
 src/main/java/com/ruoyi/purchase/vo/PurchaseStockInProductVo.java                              |   50 +++
 src/main/java/com/ruoyi/procurementrecord/mapper/ReturnSaleProductMapper.java                  |    2 
 src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementRecordOutPageDto.java            |    2 
 src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java       |    2 
 src/main/resources/mapper/sales/ShippingInfoMapper.xml                                         |   39 +
 /dev/null                                                                                      |   27 -
 src/main/java/com/ruoyi/account/bean/dto/SalesReturnDto.java                                   |    3 
 src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java                           |    3 
 src/main/java/com/ruoyi/procurementrecord/bean/vo/ShippingProductVo.java                       |   43 ++
 src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java                    |   97 ++++++
 src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementManagementUpdateDto.java         |    2 
 src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordMapper.java                  |    6 
 src/main/java/com/ruoyi/procurementrecord/controller/ReturnManagementController.java           |   17 
 src/main/java/com/ruoyi/procurementrecord/bean/dto/ReturnManagementDto.java                    |   10 
 68 files changed, 639 insertions(+), 257 deletions(-)

diff --git a/src/main/java/com/ruoyi/account/bean/dto/PurchaseInboundDto.java b/src/main/java/com/ruoyi/account/bean/dto/PurchaseInboundDto.java
index 6ca07a4..757e6b4 100644
--- a/src/main/java/com/ruoyi/account/bean/dto/PurchaseInboundDto.java
+++ b/src/main/java/com/ruoyi/account/bean/dto/PurchaseInboundDto.java
@@ -3,6 +3,7 @@
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.Date;
 
@@ -18,9 +19,11 @@
 
     @Schema(description = "寮�濮嬫棩鏈�")
     @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date startDate;
 
     @Schema(description = "缁撴潫鏃ユ湡")
     @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date endDate;
 }
diff --git a/src/main/java/com/ruoyi/account/bean/dto/PurchaseReturnDto.java b/src/main/java/com/ruoyi/account/bean/dto/PurchaseReturnDto.java
index d521422..c238990 100644
--- a/src/main/java/com/ruoyi/account/bean/dto/PurchaseReturnDto.java
+++ b/src/main/java/com/ruoyi/account/bean/dto/PurchaseReturnDto.java
@@ -3,6 +3,7 @@
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.Date;
 
@@ -18,9 +19,11 @@
 
     @Schema(description = "寮�濮嬫棩鏈�")
     @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date startDate;
 
     @Schema(description = "缁撴潫鏃ユ湡")
     @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date endDate;
 }
diff --git a/src/main/java/com/ruoyi/account/bean/dto/SalesOutboundDto.java b/src/main/java/com/ruoyi/account/bean/dto/SalesOutboundDto.java
index a30e035..33bc1b9 100644
--- a/src/main/java/com/ruoyi/account/bean/dto/SalesOutboundDto.java
+++ b/src/main/java/com/ruoyi/account/bean/dto/SalesOutboundDto.java
@@ -3,6 +3,7 @@
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.Date;
 
@@ -18,9 +19,11 @@
 
     @Schema(description = "寮�濮嬫棩鏈�")
     @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date startDate;
 
     @Schema(description = "缁撴潫鏃ユ湡")
     @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date endDate;
 }
diff --git a/src/main/java/com/ruoyi/account/bean/dto/SalesReturnDto.java b/src/main/java/com/ruoyi/account/bean/dto/SalesReturnDto.java
index d635408..b7ebae2 100644
--- a/src/main/java/com/ruoyi/account/bean/dto/SalesReturnDto.java
+++ b/src/main/java/com/ruoyi/account/bean/dto/SalesReturnDto.java
@@ -3,6 +3,7 @@
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.Date;
 
@@ -18,9 +19,11 @@
 
     @Schema(description = "寮�濮嬫棩鏈�")
     @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date startDate;
 
     @Schema(description = "缁撴潫鏃ユ湡")
     @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date endDate;
 }
diff --git a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
index 34e1aed..b0046d7 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
@@ -216,6 +216,7 @@
             if (shippingInfo != null) {
                 if (status.equals(2)) {
                     shippingInfo.setStatus("瀹℃牳閫氳繃");
+                    shippingInfo.setShippingDate(new Date());
                     //鏇存敼鍑哄簱瀹℃牳鐘舵�侊紙寰呯‘璁ゆ敼鎴愬緟瀹℃牳锛�
                     stockUtils.shipmentStatus(StockOutQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode(), shippingInfo.getId());
                 } else if (status.equals(3)) {
diff --git a/src/main/java/com/ruoyi/basic/mapper/ProductModelMapper.java b/src/main/java/com/ruoyi/basic/mapper/ProductModelMapper.java
index 36876d0..b245741 100644
--- a/src/main/java/com/ruoyi/basic/mapper/ProductModelMapper.java
+++ b/src/main/java/com/ruoyi/basic/mapper/ProductModelMapper.java
@@ -5,7 +5,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.basic.pojo.ProductModel;
 import com.ruoyi.basic.vo.ProductModelVo;
-import com.ruoyi.procurementrecord.dto.ProcurementPageDto;
+import com.ruoyi.procurementrecord.bean.dto.ProcurementPageDto;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/Details.java b/src/main/java/com/ruoyi/procurementrecord/bean/dto/Details.java
similarity index 90%
rename from src/main/java/com/ruoyi/procurementrecord/dto/Details.java
rename to src/main/java/com/ruoyi/procurementrecord/bean/dto/Details.java
index 08dd6af..ba226d1 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/Details.java
+++ b/src/main/java/com/ruoyi/procurementrecord/bean/dto/Details.java
@@ -1,4 +1,4 @@
-package com.ruoyi.procurementrecord.dto;
+package com.ruoyi.procurementrecord.bean.dto;
 
 import lombok.Data;
 
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/InventoryInformationDto.java b/src/main/java/com/ruoyi/procurementrecord/bean/dto/InventoryInformationDto.java
similarity index 91%
rename from src/main/java/com/ruoyi/procurementrecord/dto/InventoryInformationDto.java
rename to src/main/java/com/ruoyi/procurementrecord/bean/dto/InventoryInformationDto.java
index 2396b29..b45b5b9 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/InventoryInformationDto.java
+++ b/src/main/java/com/ruoyi/procurementrecord/bean/dto/InventoryInformationDto.java
@@ -1,4 +1,4 @@
-package com.ruoyi.procurementrecord.dto;
+package com.ruoyi.procurementrecord.bean.dto;
 
 import lombok.Data;
 
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementAddDto.java b/src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementAddDto.java
similarity index 89%
rename from src/main/java/com/ruoyi/procurementrecord/dto/ProcurementAddDto.java
rename to src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementAddDto.java
index 6bb4e47..e231348 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementAddDto.java
+++ b/src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementAddDto.java
@@ -1,4 +1,4 @@
-package com.ruoyi.procurementrecord.dto;
+package com.ruoyi.procurementrecord.bean.dto;
 
 import lombok.Data;
 
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementDto.java b/src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementDto.java
similarity index 97%
rename from src/main/java/com/ruoyi/procurementrecord/dto/ProcurementDto.java
rename to src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementDto.java
index d8004b4..aa88d45 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementDto.java
+++ b/src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementDto.java
@@ -1,4 +1,4 @@
-package com.ruoyi.procurementrecord.dto;
+package com.ruoyi.procurementrecord.bean.dto;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.framework.aspectj.lang.annotation.Excel;
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementManagementUpdateDto.java b/src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementManagementUpdateDto.java
similarity index 94%
rename from src/main/java/com/ruoyi/procurementrecord/dto/ProcurementManagementUpdateDto.java
rename to src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementManagementUpdateDto.java
index ac896a2..f9fc9ff 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementManagementUpdateDto.java
+++ b/src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementManagementUpdateDto.java
@@ -1,4 +1,4 @@
-package com.ruoyi.procurementrecord.dto;
+package com.ruoyi.procurementrecord.bean.dto;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.framework.aspectj.lang.annotation.Excel;
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java b/src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementPageDto.java
similarity index 98%
rename from src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java
rename to src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementPageDto.java
index 57c2dbb..fa3e337 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java
+++ b/src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementPageDto.java
@@ -1,4 +1,4 @@
-package com.ruoyi.procurementrecord.dto;
+package com.ruoyi.procurementrecord.bean.dto;
 
 
 import com.fasterxml.jackson.annotation.JsonFormat;
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDtoCopy.java b/src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementPageDtoCopy.java
similarity index 98%
rename from src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDtoCopy.java
rename to src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementPageDtoCopy.java
index 9173ce3..8e89c2f 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDtoCopy.java
+++ b/src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementPageDtoCopy.java
@@ -1,4 +1,4 @@
-package com.ruoyi.procurementrecord.dto;
+package com.ruoyi.procurementrecord.bean.dto;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.framework.aspectj.lang.annotation.Excel;
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutAdd.java b/src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementRecordOutAdd.java
similarity index 90%
rename from src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutAdd.java
rename to src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementRecordOutAdd.java
index 58fba64..09272c4 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutAdd.java
+++ b/src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementRecordOutAdd.java
@@ -1,4 +1,4 @@
-package com.ruoyi.procurementrecord.dto;
+package com.ruoyi.procurementrecord.bean.dto;
 
 import lombok.Data;
 
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutPageDto.java b/src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementRecordOutPageDto.java
similarity index 97%
rename from src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutPageDto.java
rename to src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementRecordOutPageDto.java
index 6b57f2a..a5dd8d6 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutPageDto.java
+++ b/src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementRecordOutPageDto.java
@@ -1,4 +1,4 @@
-package com.ruoyi.procurementrecord.dto;
+package com.ruoyi.procurementrecord.bean.dto;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.framework.aspectj.lang.annotation.Excel;
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementUpdateDto.java b/src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementUpdateDto.java
similarity index 90%
rename from src/main/java/com/ruoyi/procurementrecord/dto/ProcurementUpdateDto.java
rename to src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementUpdateDto.java
index 1a51301..cf9320d 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementUpdateDto.java
+++ b/src/main/java/com/ruoyi/procurementrecord/bean/dto/ProcurementUpdateDto.java
@@ -1,4 +1,4 @@
-package com.ruoyi.procurementrecord.dto;
+package com.ruoyi.procurementrecord.bean.dto;
 
 import lombok.Data;
 
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ReturnManagementDto.java b/src/main/java/com/ruoyi/procurementrecord/bean/dto/ReturnManagementDto.java
similarity index 65%
rename from src/main/java/com/ruoyi/procurementrecord/dto/ReturnManagementDto.java
rename to src/main/java/com/ruoyi/procurementrecord/bean/dto/ReturnManagementDto.java
index b69f241..539f3c7 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ReturnManagementDto.java
+++ b/src/main/java/com/ruoyi/procurementrecord/bean/dto/ReturnManagementDto.java
@@ -1,17 +1,9 @@
-package com.ruoyi.procurementrecord.dto;
+package com.ruoyi.procurementrecord.bean.dto;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.procurementrecord.pojo.ReturnManagement;
-import com.ruoyi.procurementrecord.pojo.ReturnSaleProduct;
-import com.ruoyi.sales.pojo.SalesLedgerProduct;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
-import org.springframework.format.annotation.DateTimeFormat;
 
-import java.time.LocalDateTime;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/procurementrecord/bean/dto/ReturnSaleProductDto.java b/src/main/java/com/ruoyi/procurementrecord/bean/dto/ReturnSaleProductDto.java
new file mode 100644
index 0000000..6cfae1b
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/bean/dto/ReturnSaleProductDto.java
@@ -0,0 +1,38 @@
+package com.ruoyi.procurementrecord.bean.dto;
+
+import com.ruoyi.procurementrecord.pojo.ReturnSaleProduct;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class ReturnSaleProductDto extends ReturnSaleProduct {
+
+    private String productName;
+
+    private String model;
+
+    private String unit;
+
+    //鏈��璐ф暟閲�
+    private BigDecimal unQuantity;
+
+    //鎬婚��璐ф暟閲�
+    private BigDecimal totalReturnNum;
+
+    // 閫�璐ф�讳环
+    private BigDecimal price;
+
+    // 閫�璐ф�讳环
+    private BigDecimal taxInclusiveUnitPrice;
+
+    @Schema(description = "鍑哄簱鍗曞彿")
+    private String outboundBatches;
+
+    @Schema(description = "鎵规鍙�")
+    private String batchNo;
+
+    @Schema(description = "鍙戣揣鍑哄簱鏁伴噺")
+    private BigDecimal stockOutNum;
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/bean/vo/ShippingInfoVo.java b/src/main/java/com/ruoyi/procurementrecord/bean/vo/ShippingInfoVo.java
new file mode 100644
index 0000000..d442c63
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/bean/vo/ShippingInfoVo.java
@@ -0,0 +1,17 @@
+package com.ruoyi.procurementrecord.bean.vo;
+
+import com.ruoyi.sales.pojo.ShippingInfo;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@Schema(name = "ShippingInfoVo", description = "钀ラ攢绠$悊--鍙戣揣淇℃伅")
+public class ShippingInfoVo {
+
+    private ShippingInfo shippingInfo;
+
+    @Schema(description = "鍙戣揣浜у搧鍒楄〃")
+    private List<ShippingProductVo> shippingProductVoList;
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/bean/vo/ShippingProductVo.java b/src/main/java/com/ruoyi/procurementrecord/bean/vo/ShippingProductVo.java
new file mode 100644
index 0000000..9f87aef
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/bean/vo/ShippingProductVo.java
@@ -0,0 +1,43 @@
+package com.ruoyi.procurementrecord.bean.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@Schema(name = "ShippingProductVo", description = "钀ラ攢绠$悊--鍙戣揣鍑哄簱浜у搧鍒楄〃")
+public class ShippingProductVo {
+    @Schema(description = "鍑哄簱鍗昳d")
+    private Long id;
+
+    @Schema(description = "浜у搧瑙勬牸id")
+    private Long productModelId;
+
+    @Schema(description = "浜у搧澶х被")
+    private String productCategory;
+
+    @Schema(description = "瑙勬牸鍨嬪彿")
+    private String specificationModel;
+
+    @Schema(description = "鍗曚綅")
+    private String unit;
+
+    @Schema(description = "鍑哄簱鍗曞彿")
+    private String outboundBatches;
+
+    @Schema(description = "鍙戣揣鍑哄簱鏁伴噺")
+    private BigDecimal stockOutNum;
+
+    @Schema(description = "鎵规鍙�")
+    private String batchNo;
+
+    @Schema(description = "鏈��璐ф暟")
+    private BigDecimal unQuantity;
+
+    @Schema(description = "閫�璐ф�绘暟")
+    private BigDecimal totalReturnNum;
+
+    @Schema(description = "鍚◣鍗曚环")
+    private BigDecimal taxInclusiveUnitPrice;
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementExceptionRecordController.java b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementExceptionRecordController.java
index c594994..bb14493 100644
--- a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementExceptionRecordController.java
+++ b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementExceptionRecordController.java
@@ -1,24 +1,13 @@
 package com.ruoyi.procurementrecord.controller;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.framework.aspectj.lang.annotation.Log;
-import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
 import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.framework.web.domain.AjaxResult;
-import com.ruoyi.procurementrecord.dto.*;
 import com.ruoyi.procurementrecord.mapper.ProcurementExceptionRecordMapper;
 import com.ruoyi.procurementrecord.pojo.ProcurementExceptionRecord;
-import com.ruoyi.procurementrecord.service.ProcurementRecordService;
 import io.swagger.v3.oas.annotations.tags.Tag;
-import io.swagger.v3.oas.annotations.Operation;
 import lombok.AllArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
-
-import jakarta.servlet.http.HttpServletResponse;
-import java.util.List;
 
 /**
  * @author :yys
diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
index e567eea..7e49990 100644
--- a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
+++ b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
@@ -8,7 +8,7 @@
 import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
 import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.framework.web.domain.AjaxResult;
-import com.ruoyi.procurementrecord.dto.*;
+import com.ruoyi.procurementrecord.bean.dto.*;
 import com.ruoyi.procurementrecord.mapper.CustomStorageMapper;
 import com.ruoyi.procurementrecord.pojo.CustomStorage;
 import com.ruoyi.procurementrecord.service.ProcurementRecordService;
@@ -16,7 +16,6 @@
 import io.swagger.v3.oas.annotations.Operation;
 import lombok.AllArgsConstructor;
 import org.apache.ibatis.annotations.Delete;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java
index f024bfe..c86d3e6 100644
--- a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java
+++ b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java
@@ -7,9 +7,9 @@
 import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
 import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.framework.web.domain.AjaxResult;
-import com.ruoyi.procurementrecord.dto.ProcurementRecordOutAdd;
-import com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto;
-import com.ruoyi.procurementrecord.dto.ProcurementUpdateDto;
+import com.ruoyi.procurementrecord.bean.dto.ProcurementRecordOutAdd;
+import com.ruoyi.procurementrecord.bean.dto.ProcurementRecordOutPageDto;
+import com.ruoyi.procurementrecord.bean.dto.ProcurementUpdateDto;
 import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper;
 import com.ruoyi.procurementrecord.service.ProcurementRecordOutService;
 import io.swagger.v3.oas.annotations.tags.Tag;
diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/ReturnManagementController.java b/src/main/java/com/ruoyi/procurementrecord/controller/ReturnManagementController.java
index 22882f4..b3f31b9 100644
--- a/src/main/java/com/ruoyi/procurementrecord/controller/ReturnManagementController.java
+++ b/src/main/java/com/ruoyi/procurementrecord/controller/ReturnManagementController.java
@@ -4,21 +4,16 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.common.utils.OrderUtils;
 import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.framework.web.domain.AjaxResult;
-import com.ruoyi.procurementrecord.dto.ReturnManagementDto;
-import com.ruoyi.procurementrecord.mapper.ReturnManagementMapper;
-import com.ruoyi.procurementrecord.pojo.ReturnManagement;
+import com.ruoyi.procurementrecord.bean.dto.ReturnManagementDto;
+import com.ruoyi.procurementrecord.bean.vo.ShippingInfoVo;
 import com.ruoyi.procurementrecord.pojo.ReturnSaleProduct;
 import com.ruoyi.procurementrecord.service.ReturnManagementService;
 import com.ruoyi.procurementrecord.service.ReturnSaleProductService;
-import com.ruoyi.procurementrecord.service.impl.ReturnSaleProductServiceImpl;
-import com.ruoyi.sales.dto.SalesLedgerDto;
-import io.swagger.v3.oas.annotations.tags.Tag;
 import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.AllArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
@@ -87,10 +82,10 @@
     }
 
     @GetMapping("/getByShippingId")
-    @Operation(summary = "閿�鍞��璐�-鏍规嵁鍑哄簱鍗曟煡璇㈤攢鍞鍗曚互鍙婁骇鍝佷俊鎭�")
+    @Operation(summary = "閿�鍞��璐�-鏍规嵁鍙戣揣鍗曟煡璇㈤攢鍞鍗曚互鍙婂嚭搴撶殑浜у搧淇℃伅")
     public AjaxResult getByShippingId(Long shippingId) {
-        SalesLedgerDto salesLedgerDto = returnManagementService.getReturnManagementDtoByShippingIdId(shippingId);
-        return success(salesLedgerDto);
+        ShippingInfoVo shippingInfoVo = returnManagementService.getReturnManagementDtoByShippingIdId(shippingId);
+        return success(shippingInfoVo);
     }
 
 }
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ReturnSaleProductDto.java b/src/main/java/com/ruoyi/procurementrecord/dto/ReturnSaleProductDto.java
deleted file mode 100644
index 51cb040..0000000
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ReturnSaleProductDto.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.ruoyi.procurementrecord.dto;
-
-import com.ruoyi.procurementrecord.pojo.ReturnSaleProduct;
-import lombok.Data;
-
-import java.math.BigDecimal;
-
-@Data
-public class ReturnSaleProductDto extends ReturnSaleProduct {
-
-    private String productName;
-
-    private String model;
-
-    private String unit;
-
-    //鏈��璐ф暟閲�
-    private BigDecimal unQuantity;
-
-    private BigDecimal totalReturnNum;
-
-    // 閫�璐ф�讳环
-    private BigDecimal price;
-
-    // 閫�璐ф�讳环
-    private BigDecimal taxInclusiveUnitPrice;
-}
diff --git a/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordMapper.java b/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordMapper.java
index b41cf62..f37f6d8 100644
--- a/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordMapper.java
+++ b/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordMapper.java
@@ -3,9 +3,9 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.procurementrecord.dto.ProcurementDto;
-import com.ruoyi.procurementrecord.dto.ProcurementPageDto;
-import com.ruoyi.procurementrecord.dto.ProcurementPageDtoCopy;
+import com.ruoyi.procurementrecord.bean.dto.ProcurementDto;
+import com.ruoyi.procurementrecord.bean.dto.ProcurementPageDto;
+import com.ruoyi.procurementrecord.bean.dto.ProcurementPageDtoCopy;
 import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage;
 import org.apache.ibatis.annotations.Param;
 
diff --git a/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordOutMapper.java b/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordOutMapper.java
index eebd7cc..a1e003e 100644
--- a/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordOutMapper.java
+++ b/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordOutMapper.java
@@ -3,7 +3,7 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto;
+import com.ruoyi.procurementrecord.bean.dto.ProcurementRecordOutPageDto;
 import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut;
 import org.apache.ibatis.annotations.Param;
 
diff --git a/src/main/java/com/ruoyi/procurementrecord/mapper/ReturnManagementMapper.java b/src/main/java/com/ruoyi/procurementrecord/mapper/ReturnManagementMapper.java
index 5c6504b..815559c 100644
--- a/src/main/java/com/ruoyi/procurementrecord/mapper/ReturnManagementMapper.java
+++ b/src/main/java/com/ruoyi/procurementrecord/mapper/ReturnManagementMapper.java
@@ -5,7 +5,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.account.bean.dto.SalesReturnDto;
 import com.ruoyi.account.bean.vo.SalesReturnVo;
-import com.ruoyi.procurementrecord.dto.ReturnManagementDto;
+import com.ruoyi.procurementrecord.bean.dto.ReturnManagementDto;
 import com.ruoyi.procurementrecord.pojo.ReturnManagement;
 import org.apache.ibatis.annotations.Param;
 
diff --git a/src/main/java/com/ruoyi/procurementrecord/mapper/ReturnSaleProductMapper.java b/src/main/java/com/ruoyi/procurementrecord/mapper/ReturnSaleProductMapper.java
index 879a074..d185189 100644
--- a/src/main/java/com/ruoyi/procurementrecord/mapper/ReturnSaleProductMapper.java
+++ b/src/main/java/com/ruoyi/procurementrecord/mapper/ReturnSaleProductMapper.java
@@ -1,6 +1,6 @@
 package com.ruoyi.procurementrecord.mapper;
 
-import com.ruoyi.procurementrecord.dto.ReturnSaleProductDto;
+import com.ruoyi.procurementrecord.bean.dto.ReturnSaleProductDto;
 import com.ruoyi.procurementrecord.pojo.ReturnSaleProduct;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
diff --git a/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java b/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java
index f5d8c79..4e8e3fb 100644
--- a/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java
+++ b/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java
@@ -8,7 +8,6 @@
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
-import java.util.Date;
 
 /**
  * @author :yys
@@ -64,10 +63,12 @@
     @Schema(description = "鍒涘缓鏃堕棿")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(fill = FieldFill.INSERT)
     private LocalDateTime createTime;
     @Schema(description = "鏇存柊鏃堕棿")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
     private LocalDateTime updateTime;
 
     @Schema(description = "鍒涘缓鐢ㄦ埛")
diff --git a/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnSaleProduct.java b/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnSaleProduct.java
index b7b0efa..2afeaa4 100644
--- a/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnSaleProduct.java
+++ b/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnSaleProduct.java
@@ -1,15 +1,12 @@
 package com.ruoyi.procurementrecord.pojo;
 
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.*;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Getter;
 import lombok.Setter;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
 
 /**
  * <p>
@@ -37,8 +34,8 @@
     @Schema(description = "閫�璐у崟id")
     private Long returnManagementId;
 
-    @Schema(description = "閫�璐т骇鍝乮d")
-    private Long returnsalesLedgerProductId;
+    @Schema(description = "鍏宠仈鍑哄簱鍗昳d")
+    private Long stockOutRecordId;
 
     @Schema(description = "閫�璐т骇鍝佹暟閲�")
     private BigDecimal num;
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java
index 202ce88..803c03f 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java
@@ -3,9 +3,9 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.procurementrecord.dto.ProcurementRecordOutAdd;
-import com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto;
-import com.ruoyi.procurementrecord.dto.ProcurementUpdateDto;
+import com.ruoyi.procurementrecord.bean.dto.ProcurementRecordOutAdd;
+import com.ruoyi.procurementrecord.bean.dto.ProcurementRecordOutPageDto;
+import com.ruoyi.procurementrecord.bean.dto.ProcurementUpdateDto;
 import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut;
 
 import jakarta.servlet.http.HttpServletResponse;
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java
index da23205..a209cf9 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java
@@ -5,7 +5,7 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.basic.pojo.ProductModel;
 import com.ruoyi.framework.web.domain.AjaxResult;
-import com.ruoyi.procurementrecord.dto.*;
+import com.ruoyi.procurementrecord.bean.dto.*;
 import com.ruoyi.procurementrecord.pojo.CustomStorage;
 import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage;
 
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/ReturnManagementService.java b/src/main/java/com/ruoyi/procurementrecord/service/ReturnManagementService.java
index 1a2de96..4e7555a 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/ReturnManagementService.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/ReturnManagementService.java
@@ -3,9 +3,9 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.procurementrecord.dto.ReturnManagementDto;
+import com.ruoyi.procurementrecord.bean.dto.ReturnManagementDto;
+import com.ruoyi.procurementrecord.bean.vo.ShippingInfoVo;
 import com.ruoyi.procurementrecord.pojo.ReturnManagement;
-import com.ruoyi.sales.dto.SalesLedgerDto;
 
 /**
  * @author :yys
@@ -26,7 +26,7 @@
 
     boolean updateReturnManagementDto(ReturnManagementDto returnManagementDto);
 
-    SalesLedgerDto getReturnManagementDtoByShippingIdId(Long shippingId);
+    ShippingInfoVo getReturnManagementDtoByShippingIdId(Long shippingId);
 
     boolean handle(Long returnManagementId);
 
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/ReturnSaleProductService.java b/src/main/java/com/ruoyi/procurementrecord/service/ReturnSaleProductService.java
index 07c080f..d16b527 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/ReturnSaleProductService.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/ReturnSaleProductService.java
@@ -1,6 +1,6 @@
 package com.ruoyi.procurementrecord.service;
 
-import com.ruoyi.procurementrecord.dto.ReturnSaleProductDto;
+import com.ruoyi.procurementrecord.bean.dto.ReturnSaleProductDto;
 import com.ruoyi.procurementrecord.pojo.ReturnSaleProduct;
 import com.baomidou.mybatisplus.extension.service.IService;
 
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java
index 8b6b33d..8b73f4a 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java
@@ -5,9 +5,9 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.procurementrecord.dto.ProcurementRecordOutAdd;
-import com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto;
-import com.ruoyi.procurementrecord.dto.ProcurementUpdateDto;
+import com.ruoyi.procurementrecord.bean.dto.ProcurementRecordOutAdd;
+import com.ruoyi.procurementrecord.bean.dto.ProcurementRecordOutPageDto;
+import com.ruoyi.procurementrecord.bean.dto.ProcurementUpdateDto;
 import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper;
 import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut;
 import com.ruoyi.procurementrecord.service.ProcurementRecordOutService;
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
index 8a3c4ba..1d99dec 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
@@ -12,7 +12,7 @@
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.security.LoginUser;
 import com.ruoyi.framework.web.domain.AjaxResult;
-import com.ruoyi.procurementrecord.dto.*;
+import com.ruoyi.procurementrecord.bean.dto.*;
 import com.ruoyi.procurementrecord.mapper.CustomStorageMapper;
 import com.ruoyi.procurementrecord.mapper.ProcurementRecordMapper;
 import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper;
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 e34ca05..b4701f6 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java
@@ -10,18 +10,17 @@
 import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
 import com.ruoyi.common.utils.OrderUtils;
 import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.procurementrecord.dto.ReturnManagementDto;
-import com.ruoyi.procurementrecord.dto.ReturnSaleProductDto;
+import com.ruoyi.procurementrecord.bean.dto.ReturnManagementDto;
+import com.ruoyi.procurementrecord.bean.dto.ReturnSaleProductDto;
+import com.ruoyi.procurementrecord.bean.vo.ShippingInfoVo;
+import com.ruoyi.procurementrecord.bean.vo.ShippingProductVo;
 import com.ruoyi.procurementrecord.mapper.ReturnManagementMapper;
 import com.ruoyi.procurementrecord.pojo.ReturnManagement;
 import com.ruoyi.procurementrecord.pojo.ReturnSaleProduct;
 import com.ruoyi.procurementrecord.service.ReturnManagementService;
 import com.ruoyi.procurementrecord.service.ReturnSaleProductService;
 import com.ruoyi.procurementrecord.utils.StockUtils;
-import com.ruoyi.sales.dto.SalesLedgerDto;
-import com.ruoyi.sales.dto.SalesLedgerProductDto;
 import com.ruoyi.sales.mapper.SalesLedgerMapper;
-import com.ruoyi.sales.pojo.SalesLedger;
 import com.ruoyi.sales.pojo.ShippingInfo;
 import com.ruoyi.sales.service.ShippingInfoService;
 import lombok.RequiredArgsConstructor;
@@ -32,7 +31,6 @@
 import org.springframework.util.ObjectUtils;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -76,28 +74,28 @@
 
     @Override
     public boolean updateReturnManagementDto(ReturnManagementDto returnManagementDto) {
-        List<ReturnSaleProduct> returnSaleProducts = new ArrayList<>();
         if (!CollectionUtils.isEmpty(returnManagementDto.getReturnSaleProducts())) {
             returnManagementDto.getReturnSaleProducts().stream().forEach(returnSaleProductDto -> {
                 ReturnSaleProduct returnSaleProduct = new ReturnSaleProduct();
                 BeanUtils.copyProperties(returnSaleProductDto, returnSaleProduct);
-                returnSaleProducts.add(returnSaleProduct);
+                if (returnSaleProductDto.getId() == null){
+                    returnSaleProduct.setReturnManagementId(returnManagementDto.getId());
+                    returnSaleProduct.setStatus(0);
+                    returnSaleProductService.save(returnSaleProduct);
+                }else returnSaleProductService.updateById(returnSaleProduct);
             });
         }
-        returnSaleProductService.updateBatchById(returnSaleProducts);
         return updateById(returnManagementDto);
     }
 
     @Override
-    public SalesLedgerDto getReturnManagementDtoByShippingIdId(Long shippingId) {
+    public ShippingInfoVo getReturnManagementDtoByShippingIdId(Long shippingId) {
         ShippingInfo byId = shippingInfoService.getById(shippingId);
-        SalesLedger salesLedger = salesLedgerMapper.selectById(byId.getSalesLedgerId());
-        SalesLedgerDto salesLedgerDto = new SalesLedgerDto();
-        BeanUtils.copyProperties(salesLedger, salesLedgerDto);
-
-        List<SalesLedgerProductDto> salesLedgerProductDtos = shippingInfoService.getReturnManagementDtoById(byId.getId());
-        salesLedgerDto.setProductDtoData(salesLedgerProductDtos);
-         return salesLedgerDto;
+        ShippingInfoVo shippingInfoVo = new ShippingInfoVo();
+        shippingInfoVo.setShippingInfo(byId);
+        List<ShippingProductVo> shippingProductVos = shippingInfoService.getReturnManagementDtoById(byId.getId());
+        shippingInfoVo.setShippingProductVoList(shippingProductVos);
+         return shippingInfoVo;
     }
 
     @Override
@@ -105,6 +103,7 @@
         ReturnManagement byId = this.getById(returnManagementId);
         List<ReturnSaleProductDto> list = returnSaleProductService.listReturnSaleProduct(returnManagementId);
         byId.setStatus(1);
+        byId.setSettler(SecurityUtils.getLoginUser().getNickName());
         updateById(byId);
         SalesRefundAmountOrderDto salesRefundAmountOrder = new SalesRefundAmountOrderDto();
         salesRefundAmountOrder.setReturnManagementId(returnManagementId);
@@ -117,11 +116,11 @@
             salesRefundAmountOrder.setRefundedAmount(new BigDecimal(0));
             // 鏄惁鏈夎川閲忛棶棰�
             if (returnSaleProduct.getIsQuality() == 1) {
-                // 鏈夎川閲忛棶棰橈紝鍏ヤ笉鍚堟牸搴�
-                stockUtils.addUnStock(returnSaleProduct.getProductModelId(),returnSaleProduct.getNum(), StockInQualifiedRecordTypeEnum.RETURN_UNSTOCK_IN.getCode(),returnSaleProduct.getId());
+                // 鏈夎川閲忛棶棰橈紝鍏ヤ笉鍚堟牸搴�(甯︽壒娆�)
+                stockUtils.addUnStockWithBatchNo(returnSaleProduct.getProductModelId(),returnSaleProduct.getNum(), StockInQualifiedRecordTypeEnum.RETURN_UNSTOCK_IN.getCode(),returnSaleProduct.getId(),returnSaleProduct.getBatchNo());
             }else{
-                // 鏃犺川閲忛棶棰橈紝鍏ュ悎鏍煎簱
-                stockUtils.addStock(returnSaleProduct.getProductModelId(),returnSaleProduct.getNum(), StockInQualifiedRecordTypeEnum.RETURN_HE_IN.getCode(),returnSaleProduct.getId());
+                // 鏃犺川閲忛棶棰橈紝鍏ュ悎鏍煎簱(甯︽壒娆�)
+                stockUtils.addStockWithBatchNo(returnSaleProduct.getProductModelId(),returnSaleProduct.getNum(), StockInQualifiedRecordTypeEnum.RETURN_HE_IN.getCode(),returnSaleProduct.getId(),returnSaleProduct.getBatchNo());
             }
         }
         salesRefundAmountOrder.setRefundAmount(bigDecimal);
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnSaleProductServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnSaleProductServiceImpl.java
index 4809674..29a9ee7 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnSaleProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnSaleProductServiceImpl.java
@@ -1,7 +1,7 @@
 package com.ruoyi.procurementrecord.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.procurementrecord.dto.ReturnSaleProductDto;
+import com.ruoyi.procurementrecord.bean.dto.ReturnSaleProductDto;
 import com.ruoyi.procurementrecord.mapper.ReturnSaleProductMapper;
 import com.ruoyi.procurementrecord.pojo.ReturnSaleProduct;
 import com.ruoyi.procurementrecord.service.ReturnSaleProductService;
diff --git a/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java b/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
index 1434db6..8a6925e 100644
--- a/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
+++ b/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
@@ -49,6 +49,24 @@
     }
 
     /**
+     * 涓嶅悎鏍煎叆搴撳甫鎵规鍙�
+     *
+     * @param productModelId
+     * @param quantity
+     * @param recordType
+     * @param recordId
+     */
+    public void addUnStockWithBatchNo(Long productModelId, BigDecimal quantity, String recordType, Long recordId, String batchNo) {
+        StockUninventoryDto stockUninventoryDto = new StockUninventoryDto();
+        stockUninventoryDto.setRecordId(recordId);
+        stockUninventoryDto.setRecordType(String.valueOf(recordType));
+        stockUninventoryDto.setQualitity(quantity);
+        stockUninventoryDto.setProductModelId(productModelId);
+        stockUninventoryDto.setBatchNo(batchNo);
+        stockUninventoryService.addStockInRecordOnly(stockUninventoryDto);
+    }
+
+    /**
      * 涓嶅悎鏍煎嚭搴�
      *
      * @param productModelId
@@ -122,9 +140,10 @@
     public void shipmentStatus(String recordType, Long recordId) {
         LambdaQueryWrapper<StockOutRecord> queryWrapper = new LambdaQueryWrapper<StockOutRecord>().eq(StockOutRecord::getRecordType, recordType)
                 .eq(StockOutRecord::getRecordId, recordId);
-        StockOutRecord stockOutRecord = stockOutRecordService.getOne(queryWrapper);
-        stockOutRecord.setApprovalStatus(0);
-        stockOutRecordService.updateById(stockOutRecord);
+        stockOutRecordService.list(queryWrapper).stream().forEach(stockOutRecord -> {
+            stockOutRecord.setApprovalStatus(0);
+            stockOutRecordService.updateById(stockOutRecord);
+        });
     }
 
     //涓嶅悎鏍煎簱瀛樺垹闄�
diff --git a/src/main/java/com/ruoyi/purchase/controller/PurchaseReturnOrdersController.java b/src/main/java/com/ruoyi/purchase/controller/PurchaseReturnOrdersController.java
index 16449e8..bb669b6 100644
--- a/src/main/java/com/ruoyi/purchase/controller/PurchaseReturnOrdersController.java
+++ b/src/main/java/com/ruoyi/purchase/controller/PurchaseReturnOrdersController.java
@@ -8,9 +8,13 @@
 import com.ruoyi.purchase.dto.PurchaseReturnOrderDto;
 import com.ruoyi.purchase.mapper.PurchaseReturnOrdersMapper;
 import com.ruoyi.purchase.service.PurchaseReturnOrdersService;
+import com.ruoyi.purchase.vo.PurchaseStockInProductVo;
+import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.AllArgsConstructor;
 import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * <p>
@@ -56,5 +60,12 @@
         return AjaxResult.success();
     }
 
+    @GetMapping("/getByPurchaseLedgerId")
+    @Operation(summary = "閲囪喘閫�璐�-鏍规嵁閲囪喘璁㈠崟id鏌ヨ閲囪喘璁㈠崟瀵瑰簲鐨勫叆搴撲骇鍝佷俊鎭�")
+    public AjaxResult getByPurchaseLedgerId(Long purchaseLedgerId) {
+        List<PurchaseStockInProductVo> purchaseStockInProductVos = purchaseReturnOrdersService.getByPurchaseLedgerId(purchaseLedgerId);
+        return AjaxResult.success(purchaseStockInProductVos);
+    }
+
 
 }
diff --git a/src/main/java/com/ruoyi/purchase/dto/PurchaseReturnOrderProductsDto.java b/src/main/java/com/ruoyi/purchase/dto/PurchaseReturnOrderProductsDto.java
index c89c151..928d8bf 100644
--- a/src/main/java/com/ruoyi/purchase/dto/PurchaseReturnOrderProductsDto.java
+++ b/src/main/java/com/ruoyi/purchase/dto/PurchaseReturnOrderProductsDto.java
@@ -9,5 +9,7 @@
     private String productName;
     private String model;
     private String unit;
+    //鎵规鍙�
+    private String batchNo;
 
 }
diff --git a/src/main/java/com/ruoyi/purchase/dto/SimpleReturnOrderGroupDto.java b/src/main/java/com/ruoyi/purchase/dto/SimpleReturnOrderGroupDto.java
index dc9220a..e66382e 100644
--- a/src/main/java/com/ruoyi/purchase/dto/SimpleReturnOrderGroupDto.java
+++ b/src/main/java/com/ruoyi/purchase/dto/SimpleReturnOrderGroupDto.java
@@ -16,6 +16,6 @@
 @AllArgsConstructor
 @NoArgsConstructor
 public class SimpleReturnOrderGroupDto implements Serializable {
-    private Long salesLedgerProductId;
+    private Long productModelId;
     private BigDecimal sumReturnQuantity;
 }
diff --git a/src/main/java/com/ruoyi/purchase/mapper/PurchaseReturnOrdersMapper.java b/src/main/java/com/ruoyi/purchase/mapper/PurchaseReturnOrdersMapper.java
index f3a5fdf..9d28354 100644
--- a/src/main/java/com/ruoyi/purchase/mapper/PurchaseReturnOrdersMapper.java
+++ b/src/main/java/com/ruoyi/purchase/mapper/PurchaseReturnOrdersMapper.java
@@ -1,16 +1,20 @@
 package com.ruoyi.purchase.mapper;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.account.bean.dto.PurchaseReturnDto;
 import com.ruoyi.account.bean.vo.PurchaseReturnVo;
 import com.ruoyi.purchase.dto.PurchaseReturnOrderDto;
-import com.ruoyi.purchase.pojo.PurchaseReturnOrders;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.purchase.dto.PurchaseReturnOrderHasAllInfoDto;
+import com.ruoyi.purchase.pojo.PurchaseReturnOrders;
+import com.ruoyi.purchase.vo.PurchaseReturnOrderProductsDetailVo;
+import com.ruoyi.purchase.vo.PurchaseStockInProductVo;
 import jakarta.validation.constraints.NotNull;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -27,4 +31,9 @@
     PurchaseReturnOrderHasAllInfoDto getPurchaseReturnOrderHasAllInfoById(@Param("id") @NotNull Long id);
 
     IPage<PurchaseReturnVo> listPageAccountPurchaseReturn(Page page, @Param("req") PurchaseReturnDto purchaseReturnDto);
+
+    //鏍规嵁閲囪喘璁㈠崟id鏌ヨ閲囪喘璁㈠崟瀵瑰簲鐨勫叆搴撲骇鍝佷俊鎭�
+    List<PurchaseStockInProductVo> getByPurchaseLedgerId(@Param("purchaseLedgerId") Long purchaseLedgerId);
+
+    List<PurchaseReturnOrderProductsDetailVo> getPurchaseReturnOrderProductsDetailById(@Param("id") Long id);
 }
diff --git a/src/main/java/com/ruoyi/purchase/pojo/PurchaseReturnOrderProducts.java b/src/main/java/com/ruoyi/purchase/pojo/PurchaseReturnOrderProducts.java
index 2a1b172..7738a34 100644
--- a/src/main/java/com/ruoyi/purchase/pojo/PurchaseReturnOrderProducts.java
+++ b/src/main/java/com/ruoyi/purchase/pojo/PurchaseReturnOrderProducts.java
@@ -1,20 +1,17 @@
 package com.ruoyi.purchase.pojo;
 
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
 /**
  * <p>
- * 
+ *
  * </p>
  *
  * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
@@ -34,7 +31,7 @@
     @Schema(description = "閫�璐у崟id")
     private Long purchaseReturnOrderId;
 
-    @Schema(description = "閲囪喘浜у搧id")
+    @Schema(description = "閿�鍞彴璐︿骇鍝乮d")
     private Long salesLedgerProductId;
 
     @Schema(description = "閫�璐ф暟閲�")
@@ -54,4 +51,7 @@
     @TableField(fill = FieldFill.INSERT)
     private Long deptId;
 
+    @Schema(description = "鍏宠仈鍏ュ簱鍗昳d")
+    private Long stockInRecordId;
+
 }
diff --git a/src/main/java/com/ruoyi/purchase/service/PurchaseReturnOrdersService.java b/src/main/java/com/ruoyi/purchase/service/PurchaseReturnOrdersService.java
index 2038e09..14e040e 100644
--- a/src/main/java/com/ruoyi/purchase/service/PurchaseReturnOrdersService.java
+++ b/src/main/java/com/ruoyi/purchase/service/PurchaseReturnOrdersService.java
@@ -8,7 +8,10 @@
 import com.ruoyi.purchase.vo.PurchaseReturnDetailsVo;
 import com.ruoyi.purchase.dto.PurchaseReturnOrderHasAllInfoDto;
 
+import com.ruoyi.purchase.vo.PurchaseStockInProductVo;
 import jakarta.validation.constraints.NotNull;
+
+import java.util.List;
 
 /**
  * <p>
@@ -27,4 +30,7 @@
     PurchaseReturnDetailsVo getPurchaseReturnOrderDtoById(@NotNull Long id);
 
     void deleteById(@NotNull Long id);
+
+    List<PurchaseStockInProductVo> getByPurchaseLedgerId(Long purchaseLedgerId);
+
 }
diff --git a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseReturnOrdersServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseReturnOrdersServiceImpl.java
index b5003ae..24e3405 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseReturnOrdersServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseReturnOrdersServiceImpl.java
@@ -1,7 +1,6 @@
 package com.ruoyi.purchase.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -9,24 +8,24 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.account.pojo.AccountIncome;
 import com.ruoyi.account.service.AccountIncomeService;
-import com.ruoyi.common.enums.SaleEnum;
 import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.framework.security.LoginUser;
 import com.ruoyi.procurementrecord.utils.StockUtils;
 import com.ruoyi.purchase.dto.PurchaseReturnOrderDto;
+import com.ruoyi.purchase.dto.PurchaseReturnOrderHasAllInfoDto;
 import com.ruoyi.purchase.dto.PurchaseReturnOrderProductsDto;
 import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
 import com.ruoyi.purchase.mapper.PurchaseReturnOrderProductsMapper;
 import com.ruoyi.purchase.mapper.PurchaseReturnOrdersMapper;
-import com.ruoyi.purchase.pojo.PurchaseLedger;
 import com.ruoyi.purchase.pojo.PurchaseReturnOrderProducts;
 import com.ruoyi.purchase.pojo.PurchaseReturnOrders;
 import com.ruoyi.purchase.service.PurchaseReturnOrdersService;
 import com.ruoyi.purchase.vo.PurchaseReturnDetailsVo;
+import com.ruoyi.purchase.vo.PurchaseReturnOrderProductsDetailVo;
+import com.ruoyi.purchase.vo.PurchaseStockInProductVo;
 import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
-import com.ruoyi.purchase.dto.PurchaseReturnOrderHasAllInfoDto;
 import com.ruoyi.sales.pojo.SalesLedgerProduct;
 import com.ruoyi.sales.service.ISalesLedgerService;
 import com.ruoyi.stock.mapper.StockOutRecordMapper;
@@ -36,8 +35,6 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
-import java.util.Map;
-import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -76,13 +73,13 @@
                 purchaseReturnOrderProductsDto.setSalesLedgerProductId(purchaseReturnOrderProductsDto.getSalesLedgerProductId());
                 purchaseReturnOrderProductsDto.setPurchaseReturnOrderId(purchaseReturnOrderDto.getId());
                 purchaseReturnOrderProductsDto.setReturnQuantity(purchaseReturnOrderProductsDto.getReturnQuantity());
+                purchaseReturnOrderProductsDto.setStockInRecordId(purchaseReturnOrderProductsDto.getStockInRecordId());
                 // 杩欓噷涓烘柊澧炲洜姝d涓簄ull
                 purchaseReturnOrderProductsDto.setId(null);
                 purchaseReturnOrderProductsMapper.insert(purchaseReturnOrderProductsDto);
-                //搴撳瓨闇�瑕佸嚭搴�(閲囪喘閫�璐�)
-                PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectById(purchaseReturnOrderDto.getPurchaseLedgerId());
+                //搴撳瓨闇�瑕佸嚭搴�(閲囪喘閫�璐�,甯︽壒娆″彿)
                 SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(purchaseReturnOrderProductsDto.getSalesLedgerProductId());
-                stockUtils.substractStock(salesLedgerProduct.getProductModelId(), purchaseReturnOrderProductsDto.getReturnQuantity(), StockOutQualifiedRecordTypeEnum.PURCHASE_RETURN_STOCK_OUT.getCode(), purchaseReturnOrderDto.getId(), purchaseLedger.getPurchaseContractNumber()+"-"+salesLedgerProduct.getId());
+                stockUtils.substractStock(salesLedgerProduct.getProductModelId(), purchaseReturnOrderProductsDto.getReturnQuantity(), StockOutQualifiedRecordTypeEnum.PURCHASE_RETURN_STOCK_OUT.getCode(), purchaseReturnOrderProductsDto.getId(), purchaseReturnOrderProductsDto.getBatchNo());
             }
         }else {
             throw new RuntimeException("璇烽�夋嫨閫�璐у晢鍝�");
@@ -107,25 +104,12 @@
 
     @Override
     public PurchaseReturnDetailsVo getPurchaseReturnOrderDtoById(Long id) {
+        //鏌ヤ富浣�
         PurchaseReturnOrderHasAllInfoDto purchaseReturnOrders = purchaseReturnOrdersMapper.getPurchaseReturnOrderHasAllInfoById(id);
         PurchaseReturnDetailsVo purchaseReturnOrderDto = BeanUtil.copyProperties(purchaseReturnOrders, PurchaseReturnDetailsVo.class);
-        // 鏌ヨ鍑轰粬鍏蜂綋瀵瑰簲鐨勯��璐�
-        LambdaQueryWrapper<PurchaseReturnOrderProducts> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(PurchaseReturnOrderProducts::getPurchaseReturnOrderId, purchaseReturnOrders.getId());
-
-        List<PurchaseReturnOrderProducts> purchaseReturnOrderProducts = purchaseReturnOrderProductsMapper.selectList(queryWrapper);
-        List<PurchaseReturnDetailsVo.PurchaseReturnOrderProductsDetailVo> purchaseReturnOrderProductsDetailVos = BeanUtil.copyToList(purchaseReturnOrderProducts, PurchaseReturnDetailsVo.PurchaseReturnOrderProductsDetailVo.class);
-        // 鏌ヨ鍑哄搴旂殑鍟嗗搧淇℃伅
-        List<Long> productIds = purchaseReturnOrderProductsDetailVos.stream().map(PurchaseReturnDetailsVo.PurchaseReturnOrderProductsDetailVo::getSalesLedgerProductId).distinct().filter(Objects::nonNull).collect(Collectors.toList());
-        List<SalesLedgerProduct> salesLedgerProducts = salesLedgerService.getSalesLedgerProductListByIds(productIds, SaleEnum.PURCHASE);
-        Map<Long, SalesLedgerProduct> productmap = salesLedgerProducts.stream().collect(Collectors.toMap(SalesLedgerProduct::getId, product -> product));
-        purchaseReturnOrderProductsDetailVos.forEach(purchaseReturnOrderProductsDetailVo -> {
-            purchaseReturnOrderProductsDetailVo.setSalesLedgerProduct(productmap.get(purchaseReturnOrderProductsDetailVo.getSalesLedgerProductId()));
-        });
-
+        //鏌ユ槑缁�
+        List<PurchaseReturnOrderProductsDetailVo> purchaseReturnOrderProductsDetailVos = purchaseReturnOrdersMapper.getPurchaseReturnOrderProductsDetailById(id);
         purchaseReturnOrderDto.setPurchaseReturnOrderProductsDetailVoList(purchaseReturnOrderProductsDetailVos);
-
-
         return purchaseReturnOrderDto;
     }
 
@@ -133,13 +117,14 @@
     @Transactional
     public void deleteById(Long id) {
         purchaseReturnOrdersMapper.deleteById(id);
+        List<PurchaseReturnOrderProducts> purchaseReturnOrderProducts = purchaseReturnOrderProductsMapper.selectList(Wrappers.<PurchaseReturnOrderProducts>lambdaQuery().eq(PurchaseReturnOrderProducts::getPurchaseReturnOrderId, id));
         LambdaUpdateWrapper<PurchaseReturnOrderProducts> updateWrapper = new LambdaUpdateWrapper<>();
         updateWrapper.eq(PurchaseReturnOrderProducts::getPurchaseReturnOrderId, id);
         purchaseReturnOrderProductsMapper.delete(updateWrapper);
         //(閲囪喘閫�璐х殑鏁版嵁闇�瑕佸垹鎺�)
         stockOutRecordMapper.delete(Wrappers.<StockOutRecord>lambdaQuery()
                 .eq(StockOutRecord::getRecordType,StockOutQualifiedRecordTypeEnum.PURCHASE_RETURN_STOCK_OUT.getCode())
-                .eq(StockOutRecord::getRecordId, id));
+                .in(StockOutRecord::getRecordId, purchaseReturnOrderProducts.stream().map(PurchaseReturnOrderProducts::getId).collect(Collectors.toList())));
         // 璐㈠姟
         LambdaUpdateWrapper<AccountIncome> updateWrapperAccountIncome = new LambdaUpdateWrapper<>();
         updateWrapperAccountIncome.eq(AccountIncome::getBusinessId, id);
@@ -147,4 +132,9 @@
         updateWrapperAccountIncome.eq(AccountIncome::getIncomeType, 4);
         accountIncomeService.remove(updateWrapperAccountIncome);
     }
+
+    @Override
+    public List<PurchaseStockInProductVo> getByPurchaseLedgerId(Long purchaseLedgerId) {
+        return purchaseReturnOrdersMapper.getByPurchaseLedgerId(purchaseLedgerId);
+    }
 }
diff --git a/src/main/java/com/ruoyi/purchase/vo/PurchaseReturnDetailsVo.java b/src/main/java/com/ruoyi/purchase/vo/PurchaseReturnDetailsVo.java
index 975cd5c..6496b4a 100644
--- a/src/main/java/com/ruoyi/purchase/vo/PurchaseReturnDetailsVo.java
+++ b/src/main/java/com/ruoyi/purchase/vo/PurchaseReturnDetailsVo.java
@@ -1,14 +1,12 @@
 package com.ruoyi.purchase.vo;
 
 import com.ruoyi.purchase.dto.PurchaseReturnOrderHasAllInfoDto;
-import com.ruoyi.sales.pojo.SalesLedgerProduct;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 
 import java.io.Serializable;
-import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -24,15 +22,4 @@
 
     private List<PurchaseReturnOrderProductsDetailVo> purchaseReturnOrderProductsDetailVoList;
 
-    @Data
-    @AllArgsConstructor
-    @NoArgsConstructor
-    public static class PurchaseReturnOrderProductsDetailVo implements Serializable {
-        private Long id;
-        private BigDecimal returnQuantity;
-        private Long salesLedgerProductId;
-        private Long purchaseReturnOrderId;
-
-        private SalesLedgerProduct salesLedgerProduct;
-    }
 }
diff --git a/src/main/java/com/ruoyi/purchase/vo/PurchaseReturnOrderProductsDetailVo.java b/src/main/java/com/ruoyi/purchase/vo/PurchaseReturnOrderProductsDetailVo.java
new file mode 100644
index 0000000..dcd58b5
--- /dev/null
+++ b/src/main/java/com/ruoyi/purchase/vo/PurchaseReturnOrderProductsDetailVo.java
@@ -0,0 +1,62 @@
+package com.ruoyi.purchase.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class PurchaseReturnOrderProductsDetailVo  {
+
+    @Schema(description = "閫�璐ф槑缁唅d")
+    private Long id;
+
+    @Schema(description = "閿�鍞彴璐︾殑浜у搧id")
+    private Long salesLedgerProductId;
+
+    @Schema(description = "浜у搧瑙勬牸id")
+    private Long productModelId;
+
+    @Schema(description = "浜у搧澶х被")
+    private String productCategory;
+
+    @Schema(description = "瑙勬牸鍨嬪彿")
+    private String specificationModel;
+
+    @Schema(description = "鍗曚綅")
+    private String unit;
+
+    @Schema(description = "鍏ュ簱鍗曞彿")
+    private String inboundBatches;
+
+    @Schema(description = "鍏ュ簱鏁伴噺")
+    private BigDecimal stockInNum;
+
+    @Schema(description = "鎵规鍙�")
+    private String batchNo;
+
+    @Schema(description = "鏈��璐ф暟")
+    private BigDecimal unQuantity;
+
+    @Schema(description = "宸查��璐ф暟閲�")
+    private BigDecimal totalReturnNum;
+
+    @Schema(description = "鍚◣鍗曚环")
+    private BigDecimal taxInclusiveUnitPrice;
+
+    @Schema(description = "閫�璐ф暟閲�")
+    private BigDecimal returnQuantity;
+
+    @Schema(description = "閫�璐у崟id")
+    private Long purchaseReturnOrderId;
+
+    @Schema(description = "鏄惁璐ㄦ")
+    private Boolean isChecked;
+
+}
diff --git a/src/main/java/com/ruoyi/purchase/vo/PurchaseStockInProductVo.java b/src/main/java/com/ruoyi/purchase/vo/PurchaseStockInProductVo.java
new file mode 100644
index 0000000..3f8e0ec
--- /dev/null
+++ b/src/main/java/com/ruoyi/purchase/vo/PurchaseStockInProductVo.java
@@ -0,0 +1,50 @@
+package com.ruoyi.purchase.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@Schema(name = "PurchaseStockInProductVo", description = "閲囪喘绠$悊--閲囪喘璁㈠崟涓嬪叆搴撲骇鍝佸垪琛�")
+public class PurchaseStockInProductVo {
+
+    @Schema(description = "鍏ュ簱鍗昳d")
+    private Long id;
+
+    @Schema(description = "閿�鍞彴璐︾殑浜у搧id")
+    private Long salesLedgerProductId;
+
+    @Schema(description = "浜у搧瑙勬牸id")
+    private Long productModelId;
+
+    @Schema(description = "浜у搧澶х被")
+    private String productCategory;
+
+    @Schema(description = "瑙勬牸鍨嬪彿")
+    private String specificationModel;
+
+    @Schema(description = "鍗曚綅")
+    private String unit;
+
+    @Schema(description = "鍏ュ簱鍗曞彿")
+    private String inboundBatches;
+
+    @Schema(description = "鍏ュ簱鏁伴噺")
+    private BigDecimal stockInNum;
+
+    @Schema(description = "鎵规鍙�")
+    private String batchNo;
+
+    @Schema(description = "鍙��璐ф暟")
+    private BigDecimal unQuantity;
+
+    @Schema(description = "閫�璐ф�绘暟")
+    private BigDecimal totalReturnNum;
+
+    @Schema(description = "鍚◣鍗曚环")
+    private BigDecimal taxInclusiveUnitPrice;
+
+    @Schema(description = "鏄惁璐ㄦ")
+    private Boolean isChecked;
+}
diff --git a/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java b/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
index a4c1106..9485919 100644
--- a/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
+++ b/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
@@ -71,9 +71,9 @@
         if (CollUtil.isEmpty(list)) {
             return AjaxResult.success(list);
         }
-        List<Long> productIds = list.stream().map(SalesLedgerProduct::getId).collect(Collectors.toList());
+        List<Long> productIds = list.stream().map(SalesLedgerProduct::getProductModelId).collect(Collectors.toList());
         List<SimpleReturnOrderGroupDto> groupListByProductIds = purchaseReturnOrderProductsMapper.getReturnOrderGroupListByProductIds(productIds);
-        Map<Long, BigDecimal> returnOrderGroupDtoMap = groupListByProductIds.stream().collect(Collectors.toMap(SimpleReturnOrderGroupDto::getSalesLedgerProductId, item -> item.getSumReturnQuantity()));
+        Map<Long, BigDecimal> returnOrderGroupDtoMap = groupListByProductIds.stream().collect(Collectors.toMap(SimpleReturnOrderGroupDto::getProductModelId, item -> item.getSumReturnQuantity()));
 
         list.forEach(item -> {
             if (item.getFutureTickets().compareTo(BigDecimal.ZERO) == 0) {
@@ -90,7 +90,7 @@
                 }
             }
             // 缁熻閫�璐ф暟閲�
-            BigDecimal returnQuality = returnOrderGroupDtoMap.getOrDefault(item.getId(), BigDecimal.ZERO);
+            BigDecimal returnQuality = returnOrderGroupDtoMap.getOrDefault(item.getProductModelId(), BigDecimal.ZERO);
             item.setReturnQuality(returnQuality);
             item.setAvailableQuality(item.getQuantity().subtract(returnQuality));
         });
diff --git a/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java b/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
index 0257f2a..f707b5b 100644
--- a/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
+++ b/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
@@ -116,7 +116,7 @@
 
 
     @GetMapping("/getByCustomerName")
-    @Operation(summary = "閫氳繃瀹㈡埛鍚嶇О鏌ヨ")
+    @Operation(summary = "閫氳繃瀹㈡埛鍚嶇О鏌ヨ鍏宠仈鐨勫彂璐у崟鍙�")
     public AjaxResult getByCustomerName(String customerName) {
         return AjaxResult.success(shippingInfoService.getShippingInfoByCustomerName(customerName));
     }
diff --git a/src/main/java/com/ruoyi/sales/dto/ShippingInfoDto.java b/src/main/java/com/ruoyi/sales/dto/ShippingInfoDto.java
index e12149f..43409bc 100644
--- a/src/main/java/com/ruoyi/sales/dto/ShippingInfoDto.java
+++ b/src/main/java/com/ruoyi/sales/dto/ShippingInfoDto.java
@@ -8,6 +8,7 @@
 import com.ruoyi.sales.pojo.ShippingProductDetail;
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -40,6 +41,11 @@
     private List<Long> batchNo;
     private List<ShippingProductDetail> batchNoDetailList;
 
+    //鍏宠仈鐨勫嚭搴撳崟鍙�
+    private String outboundBatches;
+
+    //鍙戣揣鏁伴噺
+    private BigDecimal totalQuantity;
 
 
 }
diff --git a/src/main/java/com/ruoyi/sales/mapper/ShippingInfoMapper.java b/src/main/java/com/ruoyi/sales/mapper/ShippingInfoMapper.java
index 7f3c701..07bddbb 100644
--- a/src/main/java/com/ruoyi/sales/mapper/ShippingInfoMapper.java
+++ b/src/main/java/com/ruoyi/sales/mapper/ShippingInfoMapper.java
@@ -3,7 +3,7 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.sales.dto.SalesLedgerProductDto;
+import com.ruoyi.procurementrecord.bean.vo.ShippingProductVo;
 import com.ruoyi.sales.dto.ShippingInfoDto;
 import com.ruoyi.sales.pojo.ShippingInfo;
 import org.apache.ibatis.annotations.Param;
@@ -19,7 +19,7 @@
 
     List<ShippingInfo> listAll();
 
-    List<SalesLedgerProductDto> getReturnManagementDtoById(@Param("shippingId")Long shippingId);
+    List<ShippingProductVo> 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 69e8245..aa7bad5 100644
--- a/src/main/java/com/ruoyi/sales/service/ShippingInfoService.java
+++ b/src/main/java/com/ruoyi/sales/service/ShippingInfoService.java
@@ -3,7 +3,7 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.sales.dto.SalesLedgerProductDto;
+import com.ruoyi.procurementrecord.bean.vo.ShippingProductVo;
 import com.ruoyi.sales.dto.ShippingApproveDto;
 import com.ruoyi.sales.dto.ShippingInfoDto;
 import com.ruoyi.sales.dto.ShippingProductDetailDto;
@@ -22,7 +22,7 @@
 
     boolean delete(List<Long> ids);
 
-    List<SalesLedgerProductDto> getReturnManagementDtoById( Long shippingId);
+    List<ShippingProductVo> getReturnManagementDtoById(Long shippingId);
 
     List<ShippingInfo> getShippingInfoByCustomerName(String customerName);
 
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
index 31cc19a..a2f918b 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -147,14 +147,14 @@
         List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(productWrapper);
         if (type.equals(SaleEnum.PURCHASE)) {
             // 鏌ヨ閫�璐т俊鎭�
-            List<Long> productIds = salesLedgerProducts.stream().map(SalesLedgerProduct::getId).collect(Collectors.toList());
+            List<Long> productIds = salesLedgerProducts.stream().map(SalesLedgerProduct::getProductModelId).collect(Collectors.toList());
             List<SimpleReturnOrderGroupDto> groupListByProductIds = new ArrayList<>();
             if(CollectionUtils.isNotEmpty(productIds)){
                 groupListByProductIds = purchaseReturnOrderProductsMapper.getReturnOrderGroupListByProductIds(productIds);
             }
-            Map<Long, BigDecimal> returnOrderGroupDtoMap = groupListByProductIds.stream().collect(Collectors.toMap(SimpleReturnOrderGroupDto::getSalesLedgerProductId, SimpleReturnOrderGroupDto::getSumReturnQuantity));
+            Map<Long, BigDecimal> returnOrderGroupDtoMap = groupListByProductIds.stream().collect(Collectors.toMap(SimpleReturnOrderGroupDto::getProductModelId, SimpleReturnOrderGroupDto::getSumReturnQuantity));
             salesLedgerProducts.forEach(item -> {
-                BigDecimal returnQuality = returnOrderGroupDtoMap.getOrDefault(item.getId(), BigDecimal.ZERO);
+                BigDecimal returnQuality = returnOrderGroupDtoMap.getOrDefault(item.getProductModelId(), BigDecimal.ZERO);
                 item.setReturnQuality(returnQuality);
                 item.setAvailableQuality(item.getQuantity().subtract(returnQuality));
             });
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 5f8788d..b112549 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
@@ -11,6 +11,7 @@
 import com.ruoyi.basic.utils.FileUtil;
 import com.ruoyi.common.enums.FileNameType;
 import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
+import com.ruoyi.procurementrecord.bean.vo.ShippingProductVo;
 import com.ruoyi.procurementrecord.utils.StockUtils;
 import com.ruoyi.sales.dto.SalesLedgerProductDto;
 import com.ruoyi.sales.dto.ShippingApproveDto;
@@ -119,7 +120,7 @@
     }
 
     @Override
-    public List<SalesLedgerProductDto> getReturnManagementDtoById(Long shippingId) {
+    public List<ShippingProductVo> getReturnManagementDtoById(Long shippingId) {
         return shippingInfoMapper.getReturnManagementDtoById(shippingId);
 
     }
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
index 4835b09..4c7d157 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
@@ -4,8 +4,12 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.mapper.ProductModelMapper;
+import com.ruoyi.basic.pojo.ProductModel;
+import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
@@ -14,21 +18,22 @@
 import com.ruoyi.stock.dto.StockOutRecordDto;
 import com.ruoyi.stock.dto.StockUninventoryDto;
 import com.ruoyi.stock.execl.StockUnInventoryExportData;
+import com.ruoyi.stock.mapper.StockInventoryMapper;
 import com.ruoyi.stock.mapper.StockUninventoryMapper;
+import com.ruoyi.stock.pojo.StockInRecord;
 import com.ruoyi.stock.pojo.StockInventory;
 import com.ruoyi.stock.pojo.StockUninventory;
 import com.ruoyi.stock.service.StockInRecordService;
 import com.ruoyi.stock.service.StockOutRecordService;
 import com.ruoyi.stock.service.StockUninventoryService;
-import lombok.AllArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
 import lombok.RequiredArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import jakarta.servlet.http.HttpServletResponse;
-
 import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
@@ -47,6 +52,8 @@
     private final StockUninventoryMapper stockUninventoryMapper;
     private final StockOutRecordService stockOutRecordService;
     private final StockInRecordService stockInRecordService;
+    private final ProductModelMapper productModelMapper;
+    private final StockInventoryMapper stockInventoryMapper;
 
     @Override
     public IPage<StockUninventoryDto> pageStockUninventory(Page page, StockUninventoryDto stockUninventoryDto) {
@@ -120,7 +127,11 @@
         stockInRecordDto.setRecordId(stockUninventoryDto.getRecordId());
         stockInRecordDto.setRecordType(stockUninventoryDto.getRecordType());
         stockInRecordDto.setStockInNum(stockUninventoryDto.getQualitity());
-        stockInRecordDto.setBatchNo(stockUninventoryDto.getBatchNo());
+        String batchNo = StringUtils.trim(stockUninventoryDto.getBatchNo());
+        if (StringUtils.isEmpty(batchNo)) {
+            batchNo = generateAutoBatchNo(stockUninventoryDto.getProductModelId());
+        }
+        stockInRecordDto.setBatchNo(batchNo);
         stockInRecordDto.setProductModelId(stockUninventoryDto.getProductModelId());
         stockInRecordDto.setType("1");
         stockInRecordDto.setRemark(stockUninventoryDto.getRemark());
@@ -200,4 +211,80 @@
         stockUninventory.setLockedQuantity(stockUninventory.getLockedQuantity().subtract(stockInventoryDto.getLockedQuantity()));
         return this.updateById(stockUninventory);
     }
+
+    //瑙勫垯鐢熸垚锛�20260424-浜у搧缂栧彿-001
+    private String generateAutoBatchNo(Long productModelId) {
+        if (productModelId == null) {
+            throw new ServiceException("浜у搧瑙勬牸ID涓嶈兘涓虹┖");
+        }
+        ProductModel productModel = productModelMapper.selectById(productModelId);
+        if (productModel == null) {
+            throw new ServiceException("浜у搧瑙勬牸涓嶅瓨鍦紝ID=" + productModelId);
+        }
+        String productCode = StringUtils.trim(productModel.getProductCode());
+        if (StringUtils.isEmpty(productCode)) {
+            throw new ServiceException("浜у搧瑙勬牸鏈淮鎶や骇鍝佺紪鐮侊紝ID=" + productModelId);
+        }
+
+        String dateText = LocalDate.now().format(DateTimeFormatter.BASIC_ISO_DATE);
+        String prefix = dateText + "-" + productCode + "-";
+        int maxSequence = resolveMaxSequence(prefix);
+        int sequence = maxSequence + 1;
+        while (sequence < 1_000_000) {
+            String batchNo = prefix + String.format("%03d", sequence);
+            if (!isBatchNoExists(batchNo)) {
+                return batchNo;
+            }
+            sequence++;
+        }
+        throw new ServiceException("鎵瑰彿搴忓彿瓒呭嚭鑼冨洿锛岃妫�鏌ユ壒鍙锋暟鎹�");
+    }
+
+    private int resolveMaxSequence(String prefix) {
+        int maxSequence = 0;
+        List<StockInventory> stockInventoryList = stockInventoryMapper.selectList(
+                Wrappers.<StockInventory>lambdaQuery()
+                        .select(StockInventory::getBatchNo)
+                        .likeRight(StockInventory::getBatchNo, prefix));
+        for (StockInventory stockInventory : stockInventoryList) {
+            maxSequence = Math.max(maxSequence, parseSequence(stockInventory.getBatchNo(), prefix));
+        }
+
+        List<StockInRecord> stockInRecordList = stockInRecordService.list(
+                Wrappers.<StockInRecord>lambdaQuery()
+                        .select(StockInRecord::getBatchNo)
+                        .likeRight(StockInRecord::getBatchNo, prefix));
+        for (StockInRecord stockInRecord : stockInRecordList) {
+            maxSequence = Math.max(maxSequence, parseSequence(stockInRecord.getBatchNo(), prefix));
+        }
+        return maxSequence;
+    }
+
+    private int parseSequence(String batchNo, String prefix) {
+        if (StringUtils.isEmpty(batchNo) || StringUtils.isEmpty(prefix) || !batchNo.startsWith(prefix)) {
+            return 0;
+        }
+        String sequenceText = batchNo.substring(prefix.length());
+        if (StringUtils.isEmpty(sequenceText) || !sequenceText.matches("\\d+")) {
+            return 0;
+        }
+        try {
+            return Integer.parseInt(sequenceText);
+        } catch (NumberFormatException ignored) {
+            return 0;
+        }
+    }
+
+    private boolean isBatchNoExists(String batchNo) {
+        if (StringUtils.isEmpty(batchNo)) {
+            return false;
+        }
+        Long inventoryCount = stockInventoryMapper.selectCount(
+                Wrappers.<StockInventory>lambdaQuery().eq(StockInventory::getBatchNo, batchNo));
+        if (inventoryCount != null && inventoryCount > 0) {
+            return true;
+        }
+        return stockInRecordService.count(
+                Wrappers.<StockInRecord>lambdaQuery().eq(StockInRecord::getBatchNo, batchNo)) > 0;
+    }
 }
diff --git a/src/main/java/com/ruoyi/warehouse/mapper/DocumentationMapper.java b/src/main/java/com/ruoyi/warehouse/mapper/DocumentationMapper.java
index 33278bf..85cceec 100644
--- a/src/main/java/com/ruoyi/warehouse/mapper/DocumentationMapper.java
+++ b/src/main/java/com/ruoyi/warehouse/mapper/DocumentationMapper.java
@@ -2,7 +2,6 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto;
 import com.ruoyi.warehouse.dto.DocumentationDto;
 import com.ruoyi.warehouse.pojo.Documentation;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
diff --git a/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml b/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
index b0166ca..f1a87ca 100644
--- a/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
+++ b/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
@@ -2,7 +2,7 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.procurementrecord.mapper.ProcurementRecordMapper">
 
-    <select id="listProcurementBySalesLedgerId" resultType="com.ruoyi.procurementrecord.dto.ProcurementDto">
+    <select id="listProcurementBySalesLedgerId" resultType="com.ruoyi.procurementrecord.bean.dto.ProcurementDto">
         select
             t1.supplier_name,
             t2.product_category,
@@ -28,7 +28,7 @@
         </if>
         group by t2.id
     </select>
-    <select id="listPage" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDto">
+    <select id="listPage" resultType="com.ruoyi.procurementrecord.bean.dto.ProcurementPageDto">
         select
         t3.supplier_name,
         t3.purchase_contract_number,
@@ -68,7 +68,7 @@
         </where>
         order by t1.create_time desc
     </select>
-    <select id="list" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDto">
+    <select id="list" resultType="com.ruoyi.procurementrecord.bean.dto.ProcurementPageDto">
         select
             t3.supplier_name,
             t3.purchase_contract_number,
@@ -92,7 +92,7 @@
                   left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
                 where t1.type = 1
     </select>
-    <select id="listOne" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDto">
+    <select id="listOne" resultType="com.ruoyi.procurementrecord.bean.dto.ProcurementPageDto">
         select
             t3.customer_contract_no,
             t3.sales_contract_no,
@@ -117,7 +117,7 @@
             left join sales_ledger t3 on t3.id = t2.sales_ledger_id
         where t1.type = 2
     </select>
-    <select id="listPageCopy" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDtoCopy">
+    <select id="listPageCopy" resultType="com.ruoyi.procurementrecord.bean.dto.ProcurementPageDtoCopy">
         select
         t3.supplier_name,
         t3.purchase_contract_number,
@@ -175,7 +175,7 @@
         group by t3.supplier_name,t2.product_category,t2.specification_model,t1.unit_price
         order by t1.create_time desc
     </select>
-    <select id="listCopy" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDtoCopy">
+    <select id="listCopy" resultType="com.ruoyi.procurementrecord.bean.dto.ProcurementPageDtoCopy">
         select
             t3.supplier_name,
             t3.purchase_contract_number,
@@ -203,7 +203,7 @@
         where t1.type = 1
         group by t3.supplier_name,t2.product_category,t2.specification_model
     </select>
-    <select id="listCopyOne" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDtoCopy">
+    <select id="listCopyOne" resultType="com.ruoyi.procurementrecord.bean.dto.ProcurementPageDtoCopy">
         select
             t3.customer_contract_no,
             t3.sales_contract_no,
@@ -232,7 +232,7 @@
         where t1.type = 2
         group by t3.customer_name,t2.product_category,t2.specification_model
     </select>
-    <select id="listPageByProduction" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDto">
+    <select id="listPageByProduction" resultType="com.ruoyi.procurementrecord.bean.dto.ProcurementPageDto">
         select
         t3.customer_contract_no,
         t3.sales_contract_no,
@@ -274,7 +274,7 @@
         </where>
         order by t1.create_time desc
     </select>
-    <select id="listPageCopyByProduction" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDtoCopy">
+    <select id="listPageCopyByProduction" resultType="com.ruoyi.procurementrecord.bean.dto.ProcurementPageDtoCopy">
         select
         t3.customer_contract_no,
         t3.sales_contract_no,
@@ -336,7 +336,7 @@
         group by t2.product_category,t2.specification_model,t1.unit_price
         order by t1.create_time desc
     </select>
-    <select id="listPagePRS" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDtoCopy">
+    <select id="listPagePRS" resultType="com.ruoyi.procurementrecord.bean.dto.ProcurementPageDtoCopy">
         select *
         from  procurement_record_storage t1
         left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id
@@ -358,7 +358,7 @@
         from procurement_record_storage
         where product_model_id = #{productModelId}
     </select>
-    <select id="listPageByProductProduction" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDto">
+    <select id="listPageByProductProduction" resultType="com.ruoyi.procurementrecord.bean.dto.ProcurementPageDto">
         select
         t1.*,
         t1.inbound_num as inboundNum0,
@@ -380,4 +380,4 @@
         </where>
         order by t1.create_time desc
     </select>
-</mapper>
\ No newline at end of file
+</mapper>
diff --git a/src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml b/src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml
index adc64dd..46925aa 100644
--- a/src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml
+++ b/src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml
@@ -2,7 +2,7 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper">
 
-    <select id="listPage" resultType="com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto">
+    <select id="listPage" resultType="com.ruoyi.procurementrecord.bean.dto.ProcurementRecordOutPageDto">
         select
         t3.supplier_name,
         t2.product_category,
@@ -38,7 +38,7 @@
         </where>
         order by t1.create_time desc
     </select>
-    <select id="list" resultType="com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto">
+    <select id="list" resultType="com.ruoyi.procurementrecord.bean.dto.ProcurementRecordOutPageDto">
         select t3.supplier_name,
                t2.product_category,
                t1.id,
@@ -58,7 +58,7 @@
         where t1.type = 1
     </select>
 
-    <select id="listOne" resultType="com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto">
+    <select id="listOne" resultType="com.ruoyi.procurementrecord.bean.dto.ProcurementRecordOutPageDto">
         select t3.customer_contract_no,
                t3.sales_contract_no,
                t3.customer_name,
@@ -80,7 +80,7 @@
         where t1.type = 2
     </select>
 
-    <select id="listTwo" resultType="com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto">
+    <select id="listTwo" resultType="com.ruoyi.procurementrecord.bean.dto.ProcurementRecordOutPageDto">
         select t1.supplier_name,
                t1.product_category,
                t1.id,
@@ -97,7 +97,7 @@
         from procurement_record_out t1
         where t1.type = 3
     </select>
-    <select id="listPageByProduct" resultType="com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto">
+    <select id="listPageByProduct" resultType="com.ruoyi.procurementrecord.bean.dto.ProcurementRecordOutPageDto">
         select
         t3.customer_contract_no,
         t3.sales_contract_no,
@@ -134,7 +134,7 @@
         </where>
         order by t1.create_time desc
     </select>
-    <select id="listPageByCustom" resultType="com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto">
+    <select id="listPageByCustom" resultType="com.ruoyi.procurementrecord.bean.dto.ProcurementRecordOutPageDto">
         select
         t2.supplier_name,
         t2.product_category,
@@ -180,7 +180,7 @@
         order by id desc
         limit 1
     </select>
-    <select id="listPageBySemiProduct" resultType="com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto">
+    <select id="listPageBySemiProduct" resultType="com.ruoyi.procurementrecord.bean.dto.ProcurementRecordOutPageDto">
         select
         t1.id,
         t1.code,
@@ -206,4 +206,4 @@
         order by t1.create_time desc
     </select>
 
-</mapper>
\ No newline at end of file
+</mapper>
diff --git a/src/main/resources/mapper/procurementrecord/ReturnManagementMapper.xml b/src/main/resources/mapper/procurementrecord/ReturnManagementMapper.xml
index a06b4f0..d348a6b 100644
--- a/src/main/resources/mapper/procurementrecord/ReturnManagementMapper.xml
+++ b/src/main/resources/mapper/procurementrecord/ReturnManagementMapper.xml
@@ -2,7 +2,7 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.procurementrecord.mapper.ReturnManagementMapper">
 
-    <select id="listPage" resultType="com.ruoyi.procurementrecord.dto.ReturnManagementDto">
+    <select id="listPage" resultType="com.ruoyi.procurementrecord.bean.dto.ReturnManagementDto">
         select rm.*,
                c.customer_name,
                si.shipping_no,
@@ -40,7 +40,7 @@
             </if>
         </where>
     </select>
-    <select id="getReturnManagementDtoById" resultType="com.ruoyi.procurementrecord.dto.ReturnManagementDto">
+    <select id="getReturnManagementDtoById" resultType="com.ruoyi.procurementrecord.bean.dto.ReturnManagementDto">
      select rm.*,
                c.customer_name,
                si.shipping_no,
@@ -53,7 +53,7 @@
                  left join sales_ledger sl on si.sales_ledger_id = sl.id
         where rm.id = #{id}
     </select>
-    <select id="listPageBySalesReturn" resultType="com.ruoyi.account.bean.vo.SalesReturnVo">
+    <select id="listPageAccountSalesReturn" resultType="com.ruoyi.account.bean.vo.SalesReturnVo">
          select rm.id,
                 rm.return_no,
                 c.customer_name,
@@ -75,7 +75,7 @@
                 and c.customer_name like concat('%',#{req.customerName},'%')
             </if>
             <if test="req.startDate != null and req.endDate != null">
-                AND DATE_FORMAT(rm.make_time, '%Y-%m-%d') BETWEEN #{startDate} AND #{endDate}
+                AND DATE_FORMAT(rm.make_time, '%Y-%m-%d') BETWEEN #{req.startDate} AND #{req.endDate}
             </if>
          order by rm.id DESC
     </select>
diff --git a/src/main/resources/mapper/procurementrecord/ReturnSaleProductMapper.xml b/src/main/resources/mapper/procurementrecord/ReturnSaleProductMapper.xml
index 52345e3..93bd879 100644
--- a/src/main/resources/mapper/procurementrecord/ReturnSaleProductMapper.xml
+++ b/src/main/resources/mapper/procurementrecord/ReturnSaleProductMapper.xml
@@ -6,35 +6,46 @@
     <resultMap id="BaseResultMap" type="com.ruoyi.procurementrecord.pojo.ReturnSaleProduct">
         <id column="id" property="id" />
         <result column="return_management_id" property="returnManagementId" />
-        <result column="return_sales_ledger_product_id" property="returnsalesLedgerProductId" />
+        <result column="stock_out_record_id" property="stockOutRecordId" />
         <result column="num" property="num" />
         <result column="status" property="status" />
     </resultMap>
-    <select id="listReturnSaleProductDto" resultType="com.ruoyi.procurementrecord.dto.ReturnSaleProductDto">
-        SELECT p.product_name                                         as product_name,
+    <select id="listReturnSaleProductDto" resultType="com.ruoyi.procurementrecord.bean.dto.ReturnSaleProductDto">
+        SELECT distinct
+            p.product_name                                         as product_name,
                pm.model                                     as model,
                pm.unit                                      as unit,
                rsp.*,
-               GREATEST(slp.quantity - COALESCE(rs.total_return_num, 0), 0) AS un_quantity,
+            sor.outbound_batches,
+            sor.stock_out_num,
+            sor.batch_no,
+               GREATEST(sor.stock_out_num - COALESCE(rsp.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 shipping_product_detail spd ON spd.shipping_info_id = si.id
+                 LEFT JOIN stock_out_record sor ON rsp.stock_out_record_id = sor.id and sor.record_type = '13'
                  LEFT JOIN sales_ledger_product slp ON si.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
-                 LEFT JOIN (SELECT return_sales_ledger_product_id,
-
+                 LEFT JOIN (SELECT stock_out_record_id,
                                    SUM(num) AS total_return_num
                             FROM return_sale_product
-                            WHERE 1 = 1 and return_management_id != #{returnManagementId}
-                            GROUP BY return_sales_ledger_product_id) rs ON rs.return_sales_ledger_product_id = slp.id
+                            WHERE 1 = 1 and return_management_id = #{returnManagementId}
+                            GROUP BY stock_out_record_id) rs ON rs.stock_out_record_id = sor.id
         where rm.id =#{returnManagementId}
     </select>
-    <select id="listReturnSaleProduct" resultType="com.ruoyi.procurementrecord.dto.ReturnSaleProductDto">
-        select rsp.*,slp.tax_inclusive_unit_price ,slp.tax_inclusive_total_price*rsp.num as price
+    <select id="listReturnSaleProduct" resultType="com.ruoyi.procurementrecord.bean.dto.ReturnSaleProductDto">
+        select rsp.*,
+               sor.batch_no,
+               slp.tax_inclusive_unit_price ,
+               slp.tax_inclusive_total_price*rsp.num as price
         from return_sale_product rsp
-                 left join sales_ledger_product slp on slp.id = rsp.return_sales_ledger_product_id
+                 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 stock_out_record sor ON rsp.stock_out_record_id = sor.id
         where rsp.return_management_id = #{returnManagementId}
     </select>
 
diff --git a/src/main/resources/mapper/purchase/PurchaseReturnOrderProductsMapper.xml b/src/main/resources/mapper/purchase/PurchaseReturnOrderProductsMapper.xml
index cd13f3c..ec1efe1 100644
--- a/src/main/resources/mapper/purchase/PurchaseReturnOrderProductsMapper.xml
+++ b/src/main/resources/mapper/purchase/PurchaseReturnOrderProductsMapper.xml
@@ -13,7 +13,9 @@
     </resultMap>
     <select id="getReturnOrderGroupListByProductIds" resultType="com.ruoyi.purchase.dto.SimpleReturnOrderGroupDto"
             parameterType="java.util.List">
-        select t1.sales_ledger_product_id,sum(t1.return_quantity) as sum_return_quantity from purchase_return_order_products as t1
+        select t1.sales_ledger_product_id,
+               sum(t1.return_quantity) as sum_return_quantity
+        from purchase_return_order_products as t1
         inner join purchase_return_orders as t2 on t1.purchase_return_order_id = t2.id
         WHERE t1.sales_ledger_product_id IN
         <foreach item="id" collection="productIds" separator="," open="(" close=")">
diff --git a/src/main/resources/mapper/purchase/PurchaseReturnOrdersMapper.xml b/src/main/resources/mapper/purchase/PurchaseReturnOrdersMapper.xml
index dca2c47..a001e9a 100644
--- a/src/main/resources/mapper/purchase/PurchaseReturnOrdersMapper.xml
+++ b/src/main/resources/mapper/purchase/PurchaseReturnOrdersMapper.xml
@@ -57,16 +57,22 @@
             resultType="com.ruoyi.account.bean.vo.PurchaseReturnVo">
          select pro.id,
                 pro.no returnNo,
+                t.inboundBatches,
                 sm.supplier_name,
-
                 pro.prepared_at,
                 pro.total_amount,
                 CASE pro.return_type WHEN 0 THEN '閫�璐ч��娆�' WHEN 1 THEN '鎷掓敹' END AS returnType,
                 pl.purchase_contract_number
         from purchase_return_orders pro
-                 left join supplier_manage sm on pro.supplier_id = sm.id
-                 left join purchase_ledger pl on pro.purchase_ledger_id = pl.id
-        where rm.status=1
+        left join
+            (select prop.purchase_return_order_id,
+                    GROUP_CONCAT(sir.inbound_batches SEPARATOR ',') AS inboundBatches
+            from purchase_return_order_products prop
+            left join stock_in_record sir on prop.stock_in_record_id = sir.id
+            GROUP BY prop.purchase_return_order_id) t on t.purchase_return_order_id = pro.id
+        left join supplier_manage sm on pro.supplier_id = sm.id
+        left join purchase_ledger pl on pro.purchase_ledger_id = pl.id
+        where 1=1
             <if test="req.returnNo != null and req.returnNo != ''">
                 and pro.no like concat('%',#{req.returnNo},'%')
             </if>
@@ -74,8 +80,69 @@
                 and sm.supplier_name like concat('%',#{req.supplierName},'%')
             </if>
             <if test="req.startDate != null and req.endDate != null">
-                AND DATE_FORMAT(pro.prepared_at, '%Y-%m-%d') BETWEEN #{startDate} AND #{endDate}
+                AND DATE_FORMAT(pro.prepared_at, '%Y-%m-%d') BETWEEN #{req.startDate} AND #{req.endDate}
             </if>
          order by pro.id DESC
     </select>
+    <select id="getByPurchaseLedgerId" resultType="com.ruoyi.purchase.vo.PurchaseStockInProductVo">
+         SELECT
+            sir.id,
+            sir.product_model_id,
+            slp.id salesLedgerProductId,
+            slp.product_category,
+            slp.specification_model,
+            slp.unit,
+            slp.is_checked,
+            sir.inbound_batches,
+            sir.stock_in_num,
+            sir.batch_no,
+            slp.tax_inclusive_unit_price,
+            GREATEST(sir.stock_in_num - COALESCE(rs.total_return_num, 0), 0) AS un_quantity,
+            COALESCE(rs.total_return_num, 0) AS total_return_num
+            FROM stock_in_record sir
+            LEFT JOIN quality_inspect qi ON sir.record_type = 10 AND sir.record_id = qi.id
+            LEFT JOIN purchase_ledger pl
+            ON pl.id = IF(sir.record_type = 7, sir.record_id, qi.purchase_ledger_id)
+            LEFT JOIN sales_ledger_product slp ON pl.id = slp.sales_ledger_id
+            LEFT JOIN (
+                SELECT
+                    stock_in_record_id,
+                    SUM(return_quantity) AS total_return_num
+                FROM purchase_return_order_products prop
+                         left join purchase_return_orders pro on pro.id = prop.purchase_return_order_id
+                WHERE 1=1
+                GROUP BY stock_in_record_id
+            ) rs ON rs.stock_in_record_id = sir.id
+        WHERE sir.approval_status = 1 AND slp.type = 2
+        AND sir.record_type IN ('7','10')
+         and pl.id = #{purchaseLedgerId}
+    </select>
+    <select id="getPurchaseReturnOrderProductsDetailById"
+            resultType="com.ruoyi.purchase.vo.PurchaseReturnOrderProductsDetailVo">
+    select prop.id,
+           prop.sales_ledger_product_id,
+           slp.product_model_id,
+           slp.product_category,
+           slp.specification_model,
+           slp.is_checked,
+           slp.unit,
+           sir.inbound_batches,
+           sir.stock_in_num,
+           sir.batch_no,
+           slp.tax_inclusive_unit_price,
+           prop.return_quantity,
+           prop.purchase_return_order_id,
+           GREATEST(sir.stock_in_num - COALESCE(prop.return_quantity, 0), 0) AS un_quantity,
+           COALESCE(rs.total_return_num, 0)                             AS total_return_num
+    from purchase_return_order_products prop
+    left join purchase_return_orders pro on prop.purchase_return_order_id = pro.id
+    LEFT JOIN stock_in_record sir ON prop.stock_in_record_id = sir.id and sir.record_type in ('7','10')
+    LEFT JOIN sales_ledger_product slp ON prop.sales_ledger_product_id = slp.id  and slp.type = 2
+    LEFT JOIN (SELECT stock_in_record_id,
+                      SUM(return_quantity) AS total_return_num
+               FROM purchase_return_order_products
+               WHERE 1 = 1 and purchase_return_order_id = #{id}
+               GROUP BY stock_in_record_id) rs ON rs.stock_in_record_id = sir.id
+    where pro.id = #{id}
+    </select>
 </mapper>
diff --git a/src/main/resources/mapper/sales/ShippingInfoMapper.xml b/src/main/resources/mapper/sales/ShippingInfoMapper.xml
index ee384ed..762c2d4 100644
--- a/src/main/resources/mapper/sales/ShippingInfoMapper.xml
+++ b/src/main/resources/mapper/sales/ShippingInfoMapper.xml
@@ -22,12 +22,19 @@
         pm.model as specification_model,
         pm.unit,
         p.product_name,
-        sl.customer_name
+        sl.customer_name,
+        spd.totalQuantity,
+        sor.outboundBatches
         FROM shipping_info s
+        LEFT JOIN (select shipping_info_id,sum(quantity) totalQuantity from shipping_product_detail GROUP BY shipping_info_id) spd ON spd.shipping_info_id = s.id
         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 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
+        left join (select record_id,GROUP_CONCAT(outbound_batches SEPARATOR ',') AS outboundBatches
+                   from stock_out_record
+                   where record_type='13'and approval_status=1
+                   group by record_id)sor on sor.record_id= s.id
         WHERE 1=1
         <if test="req.salesContractNo != null and req.salesContractNo != ''">
             AND sl.sales_contract_no LIKE CONCAT('%',#{req.salesContractNo},'%')
@@ -59,33 +66,43 @@
         FROM shipping_info s
                  LEFT JOIN sales_ledger sl ON s.sales_ledger_id = sl.id
     </select>
-    <select id="getReturnManagementDtoById" resultType="com.ruoyi.sales.dto.SalesLedgerProductDto">
-        SELECT
-        slp.*,
-        si.shipping_no,
-        GREATEST(slp.quantity - COALESCE(rs.total_return_num, 0), 0) AS un_quantity,
-        COALESCE(rs.total_return_num, 0) AS total_return_num
+    <select id="getReturnManagementDtoById" resultType="com.ruoyi.procurementrecord.bean.vo.ShippingProductVo">
+        SELECT distinct
+            sor.id,
+            slp.product_category,
+            slp.specification_model,
+            slp.unit,
+            slp.product_model_id,
+            sor.outbound_batches,
+            sor.stock_out_num,
+            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
         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'
         LEFT JOIN sales_ledger_product slp ON si.sales_ledger_product_id = slp.id and slp.type = 1
         LEFT JOIN (
         SELECT
-        return_sales_ledger_product_id,
+        stock_out_record_id,
         SUM(num) 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
         WHERE 1=1
-        GROUP BY return_sales_ledger_product_id
-        ) rs ON rs.return_sales_ledger_product_id = slp.id
+        GROUP BY stock_out_record_id
+        ) rs ON rs.stock_out_record_id = sor.id
         <where>
             <if test="shippingId != null">
                 si.id = #{shippingId}
             </if>
         </where>
+        order by sor.id
     </select>
     <select id="getShippingInfoByCustomerName" resultType="com.ruoyi.sales.pojo.ShippingInfo">
         select * from shipping_info si
         left join sales_ledger sl on si.sales_ledger_id = sl.id
-        where si.status = '宸插彂璐�' and sl.customer_name = #{customerName}
+        where  sl.customer_name = #{customerName}
     </select>
 </mapper>
diff --git a/src/main/resources/mapper/stock/StockInRecordMapper.xml b/src/main/resources/mapper/stock/StockInRecordMapper.xml
index 05f8c89..579a464 100644
--- a/src/main/resources/mapper/stock/StockInRecordMapper.xml
+++ b/src/main/resources/mapper/stock/StockInRecordMapper.xml
@@ -78,7 +78,7 @@
             DATE(sir.create_time) AS inboundDate,
             p.product_name,
             pm.model as specification_model,
-            sor.stock_in_num * slp.tax_inclusive_unit_price AS InboundAmount,
+            sir.stock_in_num * slp.tax_inclusive_unit_price AS InboundAmount,
             pl.purchase_contract_number
             FROM stock_in_record sir
             -- 10 绫诲瀷鎵嶅叧鑱旇川妫�琛�
@@ -87,11 +87,11 @@
             LEFT JOIN purchase_ledger pl
             ON pl.id = IF(sir.record_type = 7, sir.record_id, qi.purchase_ledger_id)
             -- 浜у搧鍏宠仈涓嶅姩
-            LEFT JOIN sales_ledger_product slp ON slp.type = 2 AND pl.id = slp.product_id
-            LEFT JOIN product_model pm ON slp.product_model_id = pm.id
+            LEFT JOIN sales_ledger_product slp ON pl.id = slp.product_id
+            LEFT JOIN product_model pm ON sir.product_model_id = pm.id
             LEFT JOIN product p ON pm.product_id = p.id
             -- 鏉′欢
-        WHERE sir.approval_status = 1
+        WHERE sir.approval_status = 1 AND slp.type = 2
         AND sir.record_type IN ('7','10')
         <if test="req.inboundBatches != null and req.inboundBatches != ''">
             AND sir.inbound_batches LIKE CONCAT('%',#{req.inboundBatches},'%')
@@ -100,7 +100,7 @@
             AND pl.supplier_name LIKE CONCAT('%',#{req.supplierName},'%')
         </if>
         <if test="req.startDate != null and req.endDate != null">
-            AND DATE(sir.create_time) BETWEEN #{startDate} AND #{endDate}
+            AND DATE(sir.create_time) BETWEEN #{req.startDate} AND #{req.endDate}
         </if>
         order by sir.id DESC
     </select>
diff --git a/src/main/resources/mapper/stock/StockOutRecordMapper.xml b/src/main/resources/mapper/stock/StockOutRecordMapper.xml
index 9e32e21..35421c9 100644
--- a/src/main/resources/mapper/stock/StockOutRecordMapper.xml
+++ b/src/main/resources/mapper/stock/StockOutRecordMapper.xml
@@ -91,7 +91,7 @@
         sor.id,
         sor.outbound_batches,
         sl.customer_name,
-        s.shipping_date,
+        sor.create_time as shippingDate,
         p.product_name,
         pm.model as specification_model,
         sor.stock_out_num * slp.tax_inclusive_unit_price as outboundAmount,
@@ -103,7 +103,7 @@
         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 s.status='宸插彂璐�' and sor.record_type='13'
+        WHERE sor.record_type='13' and sor.approval_status=1
         <if test="req.outboundBatches != null and req.outboundBatches != ''">
             AND sor.outbound_batches LIKE CONCAT('%',#{req.outboundBatches},'%')
         </if>
@@ -111,7 +111,7 @@
             AND sl.customer_name LIKE CONCAT('%',#{req.customerName},'%')
         </if>
         <if test="req.startDate != null and req.endDate != null">
-            AND s.shipping_date BETWEEN #{startDate} AND #{endDate}
+            AND s.shipping_date BETWEEN #{req.startDate} AND #{req.endDate}
         </if>
         order by sor.id DESC
     </select>

--
Gitblit v1.9.3