From 02047d917004c8f7dc44627c847583e54c297226 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期五, 29 五月 2026 15:16:18 +0800
Subject: [PATCH] 入库管理的审批,支持修改入库数量

---
 src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java |   30 +++++++++++++++++++++++-------
 1 files changed, 23 insertions(+), 7 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 7facfcf..2436940 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
@@ -207,14 +207,18 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int batchApprove(List<Long> ids, Integer approvalStatus) {
-        if (CollectionUtils.isEmpty(ids)) {
+    public int batchApprove(Integer approvalStatus, List<StockInRecordDto.StockInRecordApproveItemDto> items) {
+        if (CollectionUtils.isEmpty(items)) {
             throw new BaseException("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
         }
         if (approvalStatus == null || (!ReviewStatusEnum.APPROVED.getCode().equals(approvalStatus) && !ReviewStatusEnum.REJECTED.getCode().equals(approvalStatus))) {
             throw new BaseException("瀹℃壒鐘舵�佸�兼棤鏁�");
         }
-        for (Long id : ids) {
+        for (StockInRecordDto.StockInRecordApproveItemDto item : items) {
+            Long id = item.getId();
+            if (id == null) {
+                throw new BaseException("鍏ュ簱璁板綍ID涓嶈兘涓虹┖");
+            }
             StockInRecord stockInRecord = stockInRecordMapper.selectById(id);
             if (stockInRecord == null) {
                 throw new BaseException("鍏ュ簱璁板綍涓嶅瓨鍦�,鏃犳硶瀹℃壒!!!");
@@ -222,6 +226,17 @@
             if (stockInRecord.getApprovalStatus() != null && !ReviewStatusEnum.PENDING_REVIEW.getCode().equals(stockInRecord.getApprovalStatus())) {
                 throw new BaseException("鍙湁寰呭鎵圭姸鎬佺殑璁板綍鎵嶈兘瀹℃壒,鍏ュ簱鎵规:" + stockInRecord.getInboundBatches());
             }
+
+            // 鑾峰彇瀹℃壒鏃朵慨鏀圭殑鍏ュ簱鏁伴噺锛屽鏋滄病鏈変慨鏀瑰垯浣跨敤鍘熸暟閲�
+            final BigDecimal finalStockInNum;
+            if (item.getStockInNum() != null && item.getStockInNum().compareTo(BigDecimal.ZERO) > 0) {
+                finalStockInNum = item.getStockInNum();
+                // 鏇存柊鍏ュ簱璁板綍鐨勫叆搴撴暟閲�
+                stockInRecord.setStockInNum(finalStockInNum);
+            } else {
+                finalStockInNum = stockInRecord.getStockInNum();
+            }
+
             stockInRecord.setApprovalStatus(approvalStatus);
             stockInRecordMapper.updateById(stockInRecord);
 
@@ -237,10 +252,11 @@
                     // 鍚堟牸鍏ュ簱 -> 鍏堟煡搴撳瓨锛屽瓨鍦ㄥ垯鏇存柊锛屼笉瀛樺湪鍒欐柊澧�
                     StockInventory stockInventory = getStockInventory(stockInRecord.getProductModelId(), stockInRecord.getBatchNo());
                     StockInventoryDto stockInventoryDto = getStockInventoryDto(stockInRecord);
+                    stockInventoryDto.setQualitity(finalStockInNum);
                     if (stockInventory == null) {
                         stockInventoryMapper.insert(new StockInventory() {{
                             setProductModelId(stockInRecord.getProductModelId());
-                            setQualitity(stockInRecord.getStockInNum());
+                            setQualitity(finalStockInNum);
                             setBatchNo(stockInRecord.getBatchNo());
                             setRemark(stockInRecord.getRemark());
                             setWarnNum(stockInRecord.getWarnNum());
@@ -257,14 +273,14 @@
                     StockUninventoryDto stockUninventoryDto = new StockUninventoryDto();
                     stockUninventoryDto.setProductModelId(stockInRecord.getProductModelId());
                     stockUninventoryDto.setBatchNo(stockInRecord.getBatchNo());
-                    stockUninventoryDto.setQualitity(stockInRecord.getStockInNum());
+                    stockUninventoryDto.setQualitity(finalStockInNum);
                     stockUninventoryDto.setRemark(stockInRecord.getRemark());
                     stockUninventoryDto.setManufacturerId(stockInRecord.getManufacturerId());
                     stockUninventoryDto.setSource(stockInRecord.getSource());
                     if (stockUninventory == null) {
                         stockUninventoryMapper.insert(new StockUninventory() {{
                             setProductModelId(stockInRecord.getProductModelId());
-                            setQualitity(stockInRecord.getStockInNum());
+                            setQualitity(finalStockInNum);
                             setBatchNo(stockInRecord.getBatchNo());
                             setRemark(stockInRecord.getRemark());
                             setManufacturerId(stockInRecord.getManufacturerId());
@@ -277,7 +293,7 @@
                 }
             }
         }
-        return ids.size();
+        return items.size();
     }
 
     private static @NonNull StockInventoryDto getStockInventoryDto(StockInRecord stockInRecord) {

--
Gitblit v1.9.3