From 7979226b829e6df76b66b25a6d709832af338e2e Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期五, 03 七月 2026 15:39:15 +0800
Subject: [PATCH] 新增采购退货后,如果对应的采购退货审批也通过,采购退货记录不能删除,删除按钮置灰

---
 src/main/java/com/ruoyi/purchase/dto/PurchaseReturnOrderHasAllInfoDto.java      |    5 +++++
 src/main/java/com/ruoyi/purchase/controller/PurchaseReturnOrdersController.java |   10 ++++++++++
 src/main/resources/mapper/purchase/PurchaseReturnOrdersMapper.xml               |   13 ++++++++++++-
 3 files changed, 27 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/ruoyi/purchase/controller/PurchaseReturnOrdersController.java b/src/main/java/com/ruoyi/purchase/controller/PurchaseReturnOrdersController.java
index 6e73ee1..579d62d 100644
--- a/src/main/java/com/ruoyi/purchase/controller/PurchaseReturnOrdersController.java
+++ b/src/main/java/com/ruoyi/purchase/controller/PurchaseReturnOrdersController.java
@@ -13,6 +13,8 @@
 import com.ruoyi.purchase.dto.PurchaseReturnOrderDto;
 import com.ruoyi.purchase.mapper.PurchaseReturnOrdersMapper;
 import com.ruoyi.purchase.pojo.PurchaseReturnOrders;
+import com.ruoyi.stock.mapper.StockOutRecordMapper;
+import com.ruoyi.stock.pojo.StockOutRecord;
 
 import java.time.LocalDateTime;
 import com.ruoyi.purchase.service.PurchaseReturnOrdersService;
@@ -40,6 +42,7 @@
     private PurchaseReturnOrdersService purchaseReturnOrdersService;
     private PurchaseReturnOrdersMapper purchaseReturnOrdersMapper;
     private AccountStatementDetailsService accountStatementDetailsService;
+    private StockOutRecordMapper stockOutRecordMapper;
 
 
     @GetMapping("/listPage")
@@ -72,6 +75,13 @@
         if (CollectionUtils.isNotEmpty(accountStatementDetails)){
             throw new ServiceException("璇ラ噰璐��璐у崟宸茬粡鐢熸垚瀵硅处鍗曪紝鏃犳硶鍒犻櫎");
         }
+        List<StockOutRecord> approvedStockOutRecords = stockOutRecordMapper.selectList(Wrappers.<StockOutRecord>lambdaQuery()
+                .eq(StockOutRecord::getRecordType, "9")
+                .eq(StockOutRecord::getApprovalStatus, 1)
+                .inSql(StockOutRecord::getRecordId, "select id from purchase_return_order_products where purchase_return_order_id = " + id));
+        if (CollectionUtils.isNotEmpty(approvedStockOutRecords)) {
+            throw new ServiceException("璇ラ噰璐��璐у崟瀵瑰簲鍑哄簱宸插鏍搁�氳繃锛屾棤娉曞垹闄�");
+        }
         purchaseReturnOrdersService.deleteById(id);
         return AjaxResult.success();
     }
diff --git a/src/main/java/com/ruoyi/purchase/dto/PurchaseReturnOrderHasAllInfoDto.java b/src/main/java/com/ruoyi/purchase/dto/PurchaseReturnOrderHasAllInfoDto.java
index 6736072..67c98dd 100644
--- a/src/main/java/com/ruoyi/purchase/dto/PurchaseReturnOrderHasAllInfoDto.java
+++ b/src/main/java/com/ruoyi/purchase/dto/PurchaseReturnOrderHasAllInfoDto.java
@@ -17,6 +17,11 @@
 
     private String shippingTypeText;
 
+    /**
+     * 瀵瑰簲鍑哄簱鏄惁宸插鏍搁�氳繃
+     */
+    private Boolean stockOutApproved;
+
     //閫�鏂欎汉濮撳悕
     private String returnUserName;
 
diff --git a/src/main/resources/mapper/purchase/PurchaseReturnOrdersMapper.xml b/src/main/resources/mapper/purchase/PurchaseReturnOrdersMapper.xml
index 4b09890..8ca4903 100644
--- a/src/main/resources/mapper/purchase/PurchaseReturnOrdersMapper.xml
+++ b/src/main/resources/mapper/purchase/PurchaseReturnOrdersMapper.xml
@@ -26,7 +26,18 @@
         SELECT
             pro.*,
             sm.supplier_name as supplier_name,
-            pl.purchase_contract_number as purchase_contract_number
+            pl.purchase_contract_number as purchase_contract_number,
+            CASE
+                WHEN EXISTS (
+                    SELECT 1
+                    FROM purchase_return_order_products prop
+                    INNER JOIN stock_out_record sor ON sor.record_id = prop.id
+                        AND sor.record_type = '9'
+                        AND sor.approval_status = 1
+                    WHERE prop.purchase_return_order_id = pro.id
+                ) THEN 1
+                ELSE 0
+            END AS stock_out_approved
         FROM purchase_return_orders pro
                  LEFT JOIN supplier_manage sm ON pro.supplier_id = sm.id
                  LEFT JOIN purchase_ledger pl ON pl.id = pro.purchase_ledger_id

--
Gitblit v1.9.3