From bb302afba7c479d313d513370ea7dd6ac4da3c21 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期五, 03 七月 2026 15:39:46 +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/stock/service/impl/StockInRecordServiceImpl.java |   57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 57 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
index 9ac5410..00161b5 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
@@ -21,6 +21,14 @@
 import com.ruoyi.stock.execl.StockInRecordExportData;
 import com.ruoyi.production.mapper.ProductionOrderPickMapper;
 import com.ruoyi.production.pojo.ProductionOrderPick;
+import com.ruoyi.procurementrecord.mapper.ReturnManagementMapper;
+import com.ruoyi.procurementrecord.mapper.ReturnSaleProductMapper;
+import com.ruoyi.procurementrecord.pojo.ReturnManagement;
+import com.ruoyi.procurementrecord.pojo.ReturnSaleProduct;
+import com.ruoyi.sales.mapper.SalesLedgerMapper;
+import com.ruoyi.sales.mapper.ShippingInfoMapper;
+import com.ruoyi.sales.pojo.SalesLedger;
+import com.ruoyi.sales.pojo.ShippingInfo;
 import com.ruoyi.stock.mapper.StockInRecordMapper;
 import com.ruoyi.stock.mapper.StockInventoryMapper;
 import com.ruoyi.stock.mapper.StockUninventoryMapper;
@@ -45,6 +53,10 @@
     private StockInventoryMapper stockInventoryMapper;
     private StockUninventoryMapper stockUninventoryMapper;
     private ProductionOrderPickMapper productionOrderPickMapper;
+    private ReturnSaleProductMapper returnSaleProductMapper;
+    private ReturnManagementMapper returnManagementMapper;
+    private ShippingInfoMapper shippingInfoMapper;
+    private SalesLedgerMapper salesLedgerMapper;
 
     @Override
     public IPage<StockInRecordDto> listPage(Page page, StockInRecordDto stockInRecordDto) {
@@ -285,6 +297,8 @@
                         stockUninventoryMapper.updateAddStockUnInventory(stockUninventoryDto);
                     }
                 }
+                // 閿�鍞��璐у叆搴�:鎵e噺閿�鍞彴璐﹀疄闄呭悎鍚岄噾棰�(閫�璐х敓鏁�)
+                handleSalesReturnRefund(stockInRecord);
             }
         }
         return ids.size();
@@ -335,4 +349,47 @@
 
         return ids.size();
     }
+
+    /**
+     * 閿�鍞��璐у叆搴撳鎵归�氳繃鏃�,鎵e噺瀵瑰簲閿�鍞彴璐︾殑瀹為檯鍚堝悓閲戦銆�
+     * 鍏宠仈閾�:stock_in_record.record_id = return_sale_product.id
+     *        鈫� return_management.shipping_id = shipping_info.id
+     *        鈫� shipping_info.sales_ledger_id = sales_ledger.id
+     * 鍙鐞� record_type 涓� 14(鍚堟牸)鎴� 15(涓嶅悎鏍�)鐨勯攢鍞��璐у叆搴撱��
+     */
+    private void handleSalesReturnRefund(StockInRecord stockInRecord) {
+        String recordType = stockInRecord.getRecordType();
+        if (!StockInQualifiedRecordTypeEnum.RETURN_HE_IN.getCode().equals(recordType)
+                && !StockInQualifiedRecordTypeEnum.RETURN_UNSTOCK_IN.getCode().equals(recordType)) {
+            return;
+        }
+        if (stockInRecord.getRecordId() == null) {
+            return;
+        }
+        ReturnSaleProduct rsp = returnSaleProductMapper.selectById(stockInRecord.getRecordId());
+        if (rsp == null || rsp.getReturnManagementId() == null) {
+            return;
+        }
+        ReturnManagement rm = returnManagementMapper.selectById(rsp.getReturnManagementId());
+        if (rm == null || rm.getShippingId() == null) {
+            return;
+        }
+        ShippingInfo shippingInfo = shippingInfoMapper.selectById(rm.getShippingId());
+        if (shippingInfo == null || shippingInfo.getSalesLedgerId() == null) {
+            return;
+        }
+        SalesLedger salesLedger = salesLedgerMapper.selectById(shippingInfo.getSalesLedgerId());
+        if (salesLedger == null || salesLedger.getContractAmount() == null) {
+            return;
+        }
+        BigDecimal refund = rsp.getAmount() != null ? rsp.getAmount() : BigDecimal.ZERO;
+        if (refund.compareTo(BigDecimal.ZERO) == 0) {
+            return;
+        }
+        BigDecimal baseAmount = salesLedger.getNetContractAmount() != null
+                ? salesLedger.getNetContractAmount()
+                : salesLedger.getContractAmount();
+        salesLedger.setNetContractAmount(baseAmount.subtract(refund));
+        salesLedgerMapper.updateById(salesLedger);
+    }
 }

--
Gitblit v1.9.3