From 6bbac4845106ca8648900b1d9af758c84275ffee Mon Sep 17 00:00:00 2001
From: lishenao <3065849776@qq.com>
Date: 星期五, 04 七月 2025 18:09:49 +0800
Subject: [PATCH] 批量添加入库的方法

---
 src/main/java/com/ruoyi/inventory/service/impl/StockInServiceImpl.java |  170 ++++++++++++++++++++++++--------------------------------
 1 files changed, 74 insertions(+), 96 deletions(-)

diff --git a/src/main/java/com/ruoyi/inventory/service/impl/StockInServiceImpl.java b/src/main/java/com/ruoyi/inventory/service/impl/StockInServiceImpl.java
index 371dad2..2dd9605 100644
--- a/src/main/java/com/ruoyi/inventory/service/impl/StockInServiceImpl.java
+++ b/src/main/java/com/ruoyi/inventory/service/impl/StockInServiceImpl.java
@@ -14,6 +14,7 @@
 import com.ruoyi.inventory.mapper.StockInMapper;
 import com.ruoyi.inventory.pojo.StockManagement;
 import com.ruoyi.inventory.service.StockInService;
+import com.ruoyi.purchase.dto.ProductRecordDto;
 import com.ruoyi.purchase.dto.PurchaseLedgerDto;
 import com.ruoyi.purchase.mapper.ProductRecordMapper;
 import com.ruoyi.purchase.pojo.ProductRecord;
@@ -45,42 +46,66 @@
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
+//
     public void saveStockin(StockIn stockIn) {
-//闇�瑕佸厛鍒ゆ柇浜у搧璁板綍琛ㄤ腑鏄惁鏈夎浜у搧
-        ProductRecord productRecord = productRecordMapper.selectById(stockIn.getProductRecordid());
-        if (productRecord == null) {
-            throw new RuntimeException("浜у搧璁板綍琛ㄤ腑娌℃湁璇ヤ骇鍝�");
-        }
-//        闇�瑕佸厛鍒ゆ柇渚涘簲鍟嗚〃涓槸鍚︽湁璇ヤ緵搴斿晢
-        SupplierManage supplierManage = supplierManageMapper.selectById(stockIn.getSupplierId());
-        if (supplierManage == null) {
-            throw new RuntimeException("渚涘簲鍟嗚〃涓病鏈夎渚涘簲鍟�");
-        }
-//        闇�瑕佸厛鍒ゆ柇搴撳瓨绠$悊琛ㄤ腑鏄惁鏈夎浜у搧
-        LambdaQueryWrapper<StockManagement> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(StockManagement::getProductRecordid, stockIn.getProductRecordid());
-        queryWrapper.eq(StockManagement::getSupplierId, stockIn.getSupplierId());
-        queryWrapper.eq(StockManagement::getUserId, stockIn.getUserId());
-        StockManagement stockManagement = stockManagementMapper.selectOne(queryWrapper);
-        if (stockManagement == null) {
-//            濡傛灉娌℃湁璇ヤ骇鍝侊紝闇�瑕佸厛鏂板搴撳瓨绠$悊琛�
-            stockManagement = new StockManagement();
-            stockManagement.setProductRecordid(stockIn.getProductRecordid());
-            stockManagement.setSupplierId(stockIn.getSupplierId());
+//闇�瑕佸厛鍒ゆ柇閲囪喘璁板綍琛ㄤ腑鏄惁鏈夎浜у搧鐨勯噰璐褰�
+//        鏍规嵁浜у搧id鏌ヨ閲囪喘璁板綍琛�
+        ProductRecordDto productRecordDto = productRecordMapper.selectProductRecordById(stockIn.getProductrecordId());
+        if (productRecordDto != null) {
+//            娣诲姞鍏ュ簱璁板綍鍜屽簱瀛樼鐞嗚褰�
+            stockIn.setInboundTime(new Date());
+//            鑷姩鐢熸垚鎵规鐮�
+            String batchCode = "RK" + System.currentTimeMillis();
+            stockIn.setInboundBatch(batchCode);
+            stockIn.setSupplierId(productRecordDto.getSupplierId());
+
+            stockInMapper.insert(stockIn);
+//          鍦ㄥ簱瀛樼鐞嗚〃涓坊鍔犲簱瀛樼鐞嗚褰�
+            StockManagement stockManagement = new StockManagement();
+            stockManagement.setProductrecordId(productRecordDto.getId());
             stockManagement.setStockQuantity(stockIn.getInboundQuantity());
             stockManagement.setInboundTime(stockIn.getInboundTime());
-            stockManagement.setBoundTime(new Date());
+            stockManagement.setInboundBatch(stockIn.getInboundBatch());
             stockManagement.setUserId(stockIn.getUserId());
+            stockManagement.setSupplierId(productRecordDto.getSupplierId());
+            stockManagement.setBoundTime(stockIn.getInboundTime());
+            stockManagementMapper.insert(stockManagement);
+        }else {
+            throw new RuntimeException("閲囪喘璁板綍琛ㄤ腑娌℃湁璇ヤ骇鍝佺殑閲囪喘璁板綍");
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void batchSaveStockin(List<StockIn> stockInList) {
+        if (stockInList == null || stockInList.isEmpty()) {
+            throw new RuntimeException("鍏ュ簱鍒楄〃涓嶈兘涓虹┖");
+        }
+        Date currentTime = new Date();
+        for (StockIn stockIn : stockInList) {
+            // 鏍规嵁浜у搧id鏌ヨ閲囪喘璁板綍琛�
+            ProductRecordDto productRecordDto = productRecordMapper.selectProductRecordById(stockIn.getProductrecordId());
+            if (productRecordDto == null) {
+                throw new RuntimeException("閲囪喘璁板綍琛ㄤ腑娌℃湁浜у搧ID涓�" + stockIn.getProductrecordId() + "鐨勯噰璐褰�");
+            }
+            // 璁剧疆鍏ュ簱鏃堕棿鍜屾壒娆$爜
+            stockIn.setInboundTime(currentTime);
+            String batchCode = "RK" + System.currentTimeMillis() + "-" + stockIn.getProductrecordId();
+            stockIn.setInboundBatch(batchCode);
+            stockIn.setSupplierId(productRecordDto.getSupplierId());
+            // 娣诲姞鍏ュ簱璁板綍
+            stockInMapper.insert(stockIn);
+            // 鍦ㄥ簱瀛樼鐞嗚〃涓坊鍔犲簱瀛樼鐞嗚褰�
+            StockManagement stockManagement = new StockManagement();
+            stockManagement.setProductrecordId(productRecordDto.getId());
+            stockManagement.setStockQuantity(stockIn.getInboundQuantity());
+            stockManagement.setInboundTime(stockIn.getInboundTime());
+            stockManagement.setInboundBatch(stockIn.getInboundBatch());
+            stockManagement.setUserId(stockIn.getUserId());
+            stockManagement.setSupplierId(productRecordDto.getSupplierId());
+            stockManagement.setBoundTime(stockIn.getInboundTime());
             stockManagementMapper.insert(stockManagement);
         }
-//        濡傛灉鏈夎浜у搧锛岄渶瑕佸厛鏇存柊搴撳瓨绠$悊琛�
-            stockManagement.setStockQuantity(stockManagement.getStockQuantity() + stockIn.getInboundQuantity());
-            stockManagement.setInboundTime(stockIn.getInboundTime());
-            stockManagement.setBoundTime(new Date());
-            stockManagement.setUserId(stockIn.getUserId());
-            stockManagementMapper.updateById(stockManagement);
-//            闇�瑕佸厛鏂板搴撳瓨鍏ュ簱琛�
-            stockInMapper.insert(stockIn);
     }
 
     @Override//鏍规嵁id鑾峰彇搴撳瓨鍏ュ簱淇℃伅
@@ -88,75 +113,20 @@
         StockIn stockIn = stockInMapper.selectById(id);
         return stockIn;
     }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public boolean updateStockIn(StockIn stockIn) {
-        // 1. 鍙傛暟鏍¢獙
-        if (stockIn == null || stockIn.getId() == null) {
-            throw new IllegalArgumentException("鍏ュ簱璁板綍ID涓嶈兘涓虹┖");
+    public void updateStockIn(StockIn stockIn) {
+//        闇�瑕佸厛鍒ゆ柇閲囪喘璁板綍琛ㄤ腑鏄惁鏈夎浜у搧鐨勯噰璐褰�
+        LambdaQueryWrapper<ProductRecord> queryWrapper1 = new LambdaQueryWrapper<>();
+        queryWrapper1.eq(ProductRecord::getId, stockIn.getProductrecordId());
+        ProductRecord productRecord = productRecordMapper.selectOne(queryWrapper1);
+        if (productRecord!= null) {
+            stockIn.setInboundTime(stockIn.getInboundTime());
+            stockInMapper.updateById(stockIn);
+        }    else {
+            throw new RuntimeException("閲囪喘璁板綍琛ㄤ腑娌℃湁璇ヤ骇鍝佺殑閲囪喘璁板綍");
         }
-
-        // 2. 鑾峰彇鍘熷璁板綍
-        StockIn original = stockInMapper.selectById(stockIn.getId());
-        if (original == null) {
-            throw new RuntimeException("瑕佷慨鏀圭殑鍏ュ簱璁板綍涓嶅瓨鍦紝ID: " + stockIn.getId());
-        }
-
-        // 3. 妫�鏌ュ叧鑱旀暟鎹�
-        // 3.1 妫�鏌ヤ骇鍝�
-        if (stockIn.getProductRecordid() != null &&
-                productRecordMapper.selectById(stockIn.getProductRecordid()) == null) {
-            throw new RuntimeException("浜у搧璁板綍涓嶅瓨鍦紝ID: " + stockIn.getProductRecordid());
-        }
-
-        // 3.2 妫�鏌ヤ緵搴斿晢
-        if (stockIn.getSupplierId() != null &&
-                supplierManageMapper.selectById(stockIn.getSupplierId()) == null) {
-            throw new RuntimeException("渚涘簲鍟嗕笉瀛樺湪锛孖D: " + stockIn.getSupplierId());
-        }
-
-        // 4. 纭畾鏈�缁堜娇鐢ㄧ殑鍚処D鍊�
-        Integer finalProductId = stockIn.getProductRecordid() != null ?
-                stockIn.getProductRecordid() : original.getProductRecordid();
-        Integer finalSupplierId = stockIn.getSupplierId() != null ?
-                stockIn.getSupplierId() : original.getSupplierId();
-        Long finalUserId = stockIn.getUserId() != null ?
-                stockIn.getUserId() : original.getUserId();
-
-        // 5. 澶勭悊搴撳瓨璁板綍锛堢‘淇濆瓨鍦ㄥ搴旇褰曪級
-        LambdaQueryWrapper<StockManagement> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(StockManagement::getProductRecordid, finalProductId)
-                .eq(StockManagement::getSupplierId, finalSupplierId)
-                .eq(StockManagement::getUserId, finalUserId);
-
-        StockManagement stock = stockManagementMapper.selectOne(wrapper);
-
-        // 璁$畻鏁伴噺鍙樺寲锛堝鏋滄湁淇敼锛�
-        Integer quantityChange = stockIn.getInboundQuantity() != null ?
-                stockIn.getInboundQuantity() - original.getInboundQuantity() : 0;
-
-        if (stock == null) {
-            // 5.1 涓嶅瓨鍦ㄥ垯鍒涘缓鏂拌褰�
-            stock = new StockManagement();
-            stock.setProductRecordid(finalProductId);
-            stock.setSupplierId(finalSupplierId);
-            stock.setUserId(finalUserId);
-            // 鍒濆搴撳瓨 = 鍘熷搴撳瓨 + 鍙樺寲閲忥紙鑰冭檻淇敼鍚庣殑鍊硷級
-            stock.setStockQuantity(original.getInboundQuantity() + quantityChange);
-            stockManagementMapper.insert(stock);
-        } else if (quantityChange != 0) {
-            // 5.2 瀛樺湪涓旀暟閲忔湁鍙樺寲鍒欐洿鏂�
-            stock.setStockQuantity(stock.getStockQuantity() + quantityChange);
-            stockManagementMapper.updateById(stock);
-        }
-
-        // 6. 鏇存柊鍏ュ簱璁板綍
-        int updateResult = stockInMapper.updateById(stockIn);
-        if (updateResult <= 0) {
-            throw new RuntimeException("鍏ュ簱璁板綍鏇存柊澶辫触");
-        }
-
-        return updateResult > 0;
     }
 
 
@@ -181,4 +151,12 @@
         ExcelUtil<StockInExcelDto> util = new ExcelUtil<StockInExcelDto>(StockInExcelDto.class);
         util.exportExcel(response, stockInExcelDtoList, "渚涘簲鍟嗗鍑�");
     }
+
+    @Override
+    public int addstockin(List<StockIn> stockIns) {
+        for (StockIn stockIn : stockIns) {
+            saveStockin(stockIn);
+        }
+        return 1;
+    }
 }

--
Gitblit v1.9.3