From 47806d9e390ee00e1d29ad1da8c1aa908882a758 Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期二, 11 八月 2026 14:43:59 +0800
Subject: [PATCH] 用河南鹤壁代码覆盖山西长治

---
 src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java |  106 +++++++++++++++++++++++++++++++++++------------------
 1 files changed, 70 insertions(+), 36 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..5fbc6b3 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
@@ -13,8 +13,6 @@
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
-
-import java.time.LocalDateTime;
 import com.ruoyi.stock.dto.StockInRecordDto;
 import com.ruoyi.stock.dto.StockInventoryDto;
 import com.ruoyi.stock.dto.StockUninventoryDto;
@@ -54,17 +52,13 @@
     // 鏂板鍏ュ簱
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int add(StockInRecordDto stockInRecordDto) {
-        LocalDateTime createTime = stockInRecordDto.getCreateTime();
-        if (createTime == null) {
-            createTime = LocalDateTime.now();
-        }
-        String no = OrderUtils.countTodayByCreateTime(stockInRecordMapper, "RK","inbound_batches", createTime);
+    public StockInRecord add(StockInRecordDto stockInRecordDto) {
+        String no = OrderUtils.countTodayByCreateTime(stockInRecordMapper, "RK","inbound_batches");
         stockInRecordDto.setInboundBatches(no);
-        stockInRecordDto.setCreateTime(createTime);
         StockInRecord stockInRecord = new StockInRecord();
         BeanUtils.copyProperties(stockInRecordDto, stockInRecord);
-        return stockInRecordMapper.insert(stockInRecord);
+        stockInRecordMapper.insert(stockInRecord);
+        return stockInRecord;
     }
 
     @Override
@@ -76,9 +70,56 @@
             throw new BaseException("璇ュ叆搴撹褰曚笉瀛樺湪,鏃犳硶鏇存柊!!!");
         }
 
+        // 璁板綍淇敼鍓嶇殑 batch_no
+        String oldBatchNo = stockInRecord.getBatchNo();
+        String newBatchNo = stockInRecordDto.getBatchNo();
+
         String[] ignoreProperties = {"id", "inbound_batches"};//鎺掗櫎id灞炴��
         BeanUtils.copyProperties(stockInRecordDto, stockInRecord, ignoreProperties);
-        return stockInRecordMapper.updateById(stockInRecord);
+        int result = stockInRecordMapper.updateById(stockInRecord);
+
+        // 濡傛灉 batch_no 鍙戠敓鍙樺寲锛岄渶瑕佸悓姝ユ洿鏂板叧鑱旇〃
+        if (newBatchNo != null && !newBatchNo.equals(oldBatchNo)) {
+            updateRelatedBatchNo(stockInRecord, oldBatchNo, newBatchNo);
+        }
+
+        return result;
+    }
+
+    /**
+     * 鍚屾鏇存柊鍏宠仈琛ㄧ殑 batch_no
+     * @param stockInRecord 鍏ュ簱璁板綍
+     * @param oldBatchNo 淇敼鍓嶇殑鎵瑰彿
+     * @param newBatchNo 淇敼鍚庣殑鎵瑰彿
+     */
+    private void updateRelatedBatchNo(StockInRecord stockInRecord, String oldBatchNo, String newBatchNo) {
+        // 1. 鏇存柊 stock_inventory 琛紙鍚堟牸搴撳瓨锛�
+        LambdaQueryWrapper<StockInventory> inventoryEq = new LambdaQueryWrapper<StockInventory>()
+                .eq(StockInventory::getProductModelId, stockInRecord.getProductModelId());
+        if (StringUtils.isEmpty(oldBatchNo)) {
+            inventoryEq.isNull(StockInventory::getBatchNo);
+        } else {
+            inventoryEq.eq(StockInventory::getBatchNo, oldBatchNo);
+        }
+        StockInventory stockInventory = stockInventoryMapper.selectOne(inventoryEq);
+        if (stockInventory != null) {
+            stockInventory.setBatchNo(newBatchNo);
+            stockInventoryMapper.updateById(stockInventory);
+        }
+
+        // 2. 鏇存柊 stock_uninventory 琛紙涓嶅悎鏍煎簱瀛橈級
+        LambdaQueryWrapper<StockUninventory> uninventoryEq = new LambdaQueryWrapper<StockUninventory>()
+                .eq(StockUninventory::getProductModelId, stockInRecord.getProductModelId());
+        if (StringUtils.isEmpty(oldBatchNo)) {
+            uninventoryEq.isNull(StockUninventory::getBatchNo);
+        } else {
+            uninventoryEq.eq(StockUninventory::getBatchNo, oldBatchNo);
+        }
+        StockUninventory stockUninventory = stockUninventoryMapper.selectOne(uninventoryEq);
+        if (stockUninventory != null) {
+            stockUninventory.setBatchNo(newBatchNo);
+            stockUninventoryMapper.updateById(stockUninventory);
+        }
     }
 
     @Override
@@ -223,9 +264,9 @@
             if (stockInRecord == null) {
                 throw new BaseException("鍏ュ簱璁板綍涓嶅瓨鍦�,鏃犳硶瀹℃壒!!!");
             }
-            if (stockInRecord.getApprovalStatus() != null && !ReviewStatusEnum.PENDING_REVIEW.getCode().equals(stockInRecord.getApprovalStatus())) {
+            /*if (stockInRecord.getApprovalStatus() != null && !ReviewStatusEnum.PENDING_REVIEW.getCode().equals(stockInRecord.getApprovalStatus())) {
                 throw new BaseException("鍙湁寰呭鎵圭姸鎬佺殑璁板綍鎵嶈兘瀹℃壒,鍏ュ簱鎵规:" + stockInRecord.getInboundBatches());
-            }
+            }*/
             stockInRecord.setApprovalStatus(approvalStatus);
             stockInRecordMapper.updateById(stockInRecord);
 
@@ -245,19 +286,16 @@
                     stockInventoryDto.setBatchNo(stockInRecord.getBatchNo());
                     stockInventoryDto.setQualitity(stockInRecord.getStockInNum());
                     stockInventoryDto.setRemark(stockInRecord.getRemark());
+                    stockInventoryDto.setWarnNum(stockInRecord.getWarnNum());
                     if (stockInventory == null) {
-                        try {
-                            stockInventoryMapper.insert(new StockInventory() {{
-                                setProductModelId(stockInRecord.getProductModelId());
-                                setQualitity(stockInRecord.getStockInNum());
-                                setBatchNo(stockInRecord.getBatchNo());
-                                setRemark(stockInRecord.getRemark());
-                                setWarnNum(stockInRecord.getWarnNum());
-                                setVersion(1);
-                            }});
-                        } catch (org.springframework.dao.DuplicateKeyException e) {
-                            stockInventoryMapper.updateAddStockInventory(stockInventoryDto);
-                        }
+                        stockInventoryMapper.insert(new StockInventory() {{
+                            setProductModelId(stockInRecord.getProductModelId());
+                            setQualitity(stockInRecord.getStockInNum());
+                            setWarnNum(stockInRecord.getWarnNum());
+                            setBatchNo(stockInRecord.getBatchNo());
+                            setRemark(stockInRecord.getRemark());
+                            setVersion(1);
+                        }});
                     } else {
                         stockInventoryMapper.updateAddStockInventory(stockInventoryDto);
                     }
@@ -270,17 +308,13 @@
                     stockUninventoryDto.setQualitity(stockInRecord.getStockInNum());
                     stockUninventoryDto.setRemark(stockInRecord.getRemark());
                     if (stockUninventory == null) {
-                        try {
-                            stockUninventoryMapper.insert(new StockUninventory() {{
-                                setProductModelId(stockInRecord.getProductModelId());
-                                setQualitity(stockInRecord.getStockInNum());
-                                setBatchNo(stockInRecord.getBatchNo());
-                                setRemark(stockInRecord.getRemark());
-                                setVersion(1);
-                            }});
-                        } catch (org.springframework.dao.DuplicateKeyException e) {
-                            stockUninventoryMapper.updateAddStockUnInventory(stockUninventoryDto);
-                        }
+                        stockUninventoryMapper.insert(new StockUninventory() {{
+                            setProductModelId(stockInRecord.getProductModelId());
+                            setQualitity(stockInRecord.getStockInNum());
+                            setBatchNo(stockInRecord.getBatchNo());
+                            setRemark(stockInRecord.getRemark());
+                            setVersion(1);
+                        }});
                     } else {
                         stockUninventoryMapper.updateAddStockUnInventory(stockUninventoryDto);
                     }

--
Gitblit v1.9.3