From 6d3a76f894052209cad136ec9bff6ddcd43fc4e7 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期一, 20 四月 2026 17:55:48 +0800
Subject: [PATCH] feat: 扫码时做限制,若采购台账已全部质检入库,APP扫码 入库时提示已入库。并且联动质检

---
 src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java |   27 ++++++++++++++++++---------
 1 files changed, 18 insertions(+), 9 deletions(-)

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 cee9249..f9b6d0f 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
@@ -13,7 +13,6 @@
 import com.ruoyi.approve.service.IApproveNodeService;
 import com.ruoyi.common.enums.FileNameType;
 import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
-import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.device.mapper.DeviceRepairMapper;
 import com.ruoyi.device.pojo.DeviceRepair;
@@ -39,6 +38,7 @@
 import org.springframework.util.CollectionUtils;
 
 import java.io.IOException;
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.Arrays;
 import java.util.Comparator;
@@ -208,15 +208,26 @@
                     purchaseLedger.setApprovalStatus(3);
                     List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(new QueryWrapper<SalesLedgerProduct>()
                             .lambda().eq(SalesLedgerProduct::getSalesLedgerId, purchaseLedger.getId()).eq(SalesLedgerProduct::getType, 2));
+                    boolean hasCheckedProduct = false;
                     for (SalesLedgerProduct salesLedgerProduct : salesLedgerProducts) {
                         // 璐ㄦ
                         if (salesLedgerProduct.getIsChecked()) {
+                            hasCheckedProduct = true;
                             purchaseLedgerServiceImpl.addQualityInspect(purchaseLedger, salesLedgerProduct);
                         }else {
                             //鐩存帴鍏ュ簱
-                            stockUtils.addStock(salesLedgerProduct.getProductModelId(), salesLedgerProduct.getQuantity(), StockInQualifiedRecordTypeEnum.PURCHASE_STOCK_IN.getCode(), purchaseLedger.getId());
+                            stockUtils.addStock(null, salesLedgerProduct.getId(), salesLedgerProduct.getProductModelId(),
+                                    salesLedgerProduct.getQuantity(), StockInQualifiedRecordTypeEnum.PURCHASE_STOCK_IN.getCode(), salesLedgerProduct.getId());
+                            BigDecimal oldStocked = salesLedgerProduct.getStockedQuantity() == null ? BigDecimal.ZERO : salesLedgerProduct.getStockedQuantity();
+                            BigDecimal orderQty = salesLedgerProduct.getQuantity() == null ? BigDecimal.ZERO : salesLedgerProduct.getQuantity();
+                            BigDecimal newStocked = oldStocked.add(orderQty);
+                            salesLedgerProduct.setStockedQuantity(newStocked);
+                            salesLedgerProduct.setProductStockStatus(2);
+                            salesLedgerProduct.fillRemainingQuantity();
+                            salesLedgerProductMapper.updateById(salesLedgerProduct);
                         }
                     }
+                    purchaseLedger.setStockStatus(hasCheckedProduct ? 0 : 2);
                 } else if (status.equals(3)) {
                     // 鎷掔粷
                     purchaseLedger.setApprovalStatus(4);
@@ -251,15 +262,12 @@
                 SalesLedger salesLedger = salesLedgerMapper.selectOne(new LambdaQueryWrapper<SalesLedger>()
                         .eq(SalesLedger::getSalesContractNo, identifier)
                         .last("limit 1"));
-                
+
                 if (salesLedger != null) {
                     if(status.equals(2)){
-                        // 瀹℃壒瀹屾垚 -> 鑷姩鎵i櫎搴撳瓨
-                        try {
-                            shippingInfoService.deductStockByOrder(salesLedger.getId(), null);
-                        } catch (IOException e) {
-                            throw new RuntimeException("鑷姩鎵i櫎搴撳瓨澶辫触: " + e.getMessage());
-                        }
+                        // 瀹℃壒瀹屾垚 -> 淇敼鐘舵�佷负瀹℃牳閫氳繃锛屼笉鎵i櫎搴撳瓨 (鎵i櫎搴撳瓨绉昏嚦鍙戣揣鍙拌处琛ュ厖淇℃伅闃舵)
+                        updateSalesLedgerDeliveryStatus(salesLedger.getId(), 4);
+                        updateShippingInfoStatusByOrder(salesLedger.getId(), "瀹℃牳閫氳繃");
                     } else if(status.equals(3)){
                         updateSalesLedgerDeliveryStatus(salesLedger.getId(), 3);
                         // 鏇存柊鍏宠仈鐨勫彂璐ц褰曚负瀹℃牳鎷掔粷
@@ -271,6 +279,7 @@
                 }
             }
         }
+
         // 缁戝畾闄勪欢
         if(!CollectionUtils.isEmpty(approveNode.getTempFileIds()) && approveNode.getApproveNodeStatus() == 1){
             tempFileService.migrateTempFilesToFormal(approveNode.getId(), approveNode.getTempFileIds(), FileNameType.ApproveNode.getValue());

--
Gitblit v1.9.3