From 03403ba333c3c0b7e6b0ae6895a5481edbfb5d08 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期四, 02 七月 2026 14:40:39 +0800
Subject: [PATCH] 采购台账,可用数量为实际入库数量。存在采购质检部分合格入库情况。只有可用数量大于0进行采购退货操作

---
 src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java |   38 +++++++++++++++++++++++++++++++++-----
 1 files changed, 33 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
index 777438f..4f08f69 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -129,7 +129,15 @@
         if (purchaseLedger.getApprovalStatus() != null) {
             queryWrapper.eq(PurchaseLedger::getApprovalStatus, purchaseLedger.getApprovalStatus());
         }
+        // 鍙煡璇㈠叆搴撳凡瀹℃壒閫氳繃鐨勯噰璐彴璐�
+        queryWrapper.inSql(PurchaseLedger::getId,
+                "SELECT DISTINCT record_id FROM stock_in_record WHERE approval_status = 1");
         return purchaseLedgerMapper.selectList(queryWrapper);
+    }
+
+    @Override
+    public List<PurchaseLedger> selectReturnablePurchaseLedgerList(PurchaseLedger purchaseLedger) {
+        return purchaseLedgerMapper.selectReturnablePurchaseLedgerList(purchaseLedger);
     }
 
     @Override
@@ -162,6 +170,8 @@
         purchaseLedger.setRecorderId(purchaseLedgerDto.getRecorderId());
 
         purchaseLedger.setApprovalStatus(1);
+        // 瀹為檯鍚堝悓閲戦濮嬬粓绛変簬鍚堝悓閲戦
+        purchaseLedger.setNetContractAmount(purchaseLedger.getContractAmount());
         // 3. 鏂板鎴栨洿鏂颁富琛�
         if (purchaseLedger.getId() == null) {
             if (!StringUtils.hasText(purchaseLedger.getPurchaseContractNumber())) {
@@ -754,13 +764,30 @@
         for (Long id : ids) {
             PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectById(id);
             if(purchaseLedger != null){
-                ApproveProcess one = approveProcessService.getOne(new LambdaQueryWrapper<ApproveProcess>()
+                List<ApprovalInstance> approvalInstances = approvalInstanceService.list(new LambdaQueryWrapper<ApprovalInstance>()
+                        .eq(ApprovalInstance::getBusinessId, purchaseLedger.getId())
+                        .eq(ApprovalInstance::getBusinessType, 5L)
+                        .eq(ApprovalInstance::getDeleted, 0));
+                if (CollectionUtils.isNotEmpty(approvalInstances)) {
+                    approvalInstanceService.delete(
+                            approvalInstances.stream()
+                                    .map(ApprovalInstance::getId)
+                                    .filter(Objects::nonNull)
+                                    .collect(Collectors.toList())
+                    );
+                }
+
+                List<ApproveProcess> approveProcesses = approveProcessService.list(new LambdaQueryWrapper<ApproveProcess>()
                         .eq(ApproveProcess::getApproveType, 5)
                         .eq(ApproveProcess::getApproveDelete, 0)
-                        .eq(ApproveProcess::getApproveReason, purchaseLedger.getPurchaseContractNumber())
-                        .last("limit 1"));
-                if (one != null) {
-                    approveProcessService.delByIds(Collections.singletonList(one.getId()));
+                        .eq(ApproveProcess::getApproveReason, purchaseLedger.getPurchaseContractNumber()));
+                if (CollectionUtils.isNotEmpty(approveProcesses)) {
+                    approveProcessService.delByIds(
+                            approveProcesses.stream()
+                                    .map(ApproveProcess::getId)
+                                    .filter(Objects::nonNull)
+                                    .collect(Collectors.toList())
+                    );
                 }
             }
         }
@@ -941,6 +968,7 @@
                 salesLedger.setContractAmount(salesLedgerProductImportDtos.stream()
                         .map(PurchaseLedgerProductImportDto::getTaxInclusiveTotalPrice)
                         .reduce(BigDecimal.ZERO,BigDecimal::add));
+                salesLedger.setNetContractAmount(salesLedger.getContractAmount());
                 // 閫氳繃閿�鍞崟鍙风粦瀹氶攢鍞�
                 SalesLedger salesLedger1 = salesLedgerMapper.selectOne(new LambdaQueryWrapper<SalesLedger>()
                         .eq(SalesLedger::getSalesContractNo, salesLedger.getSalesContractNo())

--
Gitblit v1.9.3