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