From d05d46076c62c744cdbd84c84d6e19b42cda9259 Mon Sep 17 00:00:00 2001 From: lishenao <3065849776@qq.com> Date: 星期三, 02 七月 2025 09:30:15 +0800 Subject: [PATCH] 入库管理,出库管理,库存管理后端接口修改 --- src/main/java/com/ruoyi/inventory/service/impl/StockInServiceImpl.java | 156 +++++++++++++++++++++++++++++++++++---------------- 1 files changed, 106 insertions(+), 50 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 8c035f8..371dad2 100644 --- a/src/main/java/com/ruoyi/inventory/service/impl/StockInServiceImpl.java +++ b/src/main/java/com/ruoyi/inventory/service/impl/StockInServiceImpl.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.basic.mapper.SupplierManageMapper; +import com.ruoyi.basic.pojo.SupplierManage; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.inventory.dto.StockinDto; import com.ruoyi.inventory.excel.StockInExcelDto; @@ -13,6 +15,8 @@ import com.ruoyi.inventory.pojo.StockManagement; import com.ruoyi.inventory.service.StockInService; import com.ruoyi.purchase.dto.PurchaseLedgerDto; +import com.ruoyi.purchase.mapper.ProductRecordMapper; +import com.ruoyi.purchase.pojo.ProductRecord; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -28,6 +32,10 @@ private StockInMapper stockInMapper; @Autowired private StockManagementMapper stockManagementMapper; + @Autowired + private ProductRecordMapper productRecordMapper; + @Autowired + private SupplierManageMapper supplierManageMapper; // 鏂板鏂规硶 @@ -38,32 +46,41 @@ @Override @Transactional(rollbackFor = Exception.class) public void saveStockin(StockIn stockIn) { - stockInMapper.insert(stockIn); - StockManagement stockManagement = new StockManagement(); -// 杩涜鍒ゆ柇鏄惁瀛樺湪鐩稿悓鐨勪骇鍝乮d鍜屼緵搴斿晢id - LambdaQueryWrapper<StockManagement> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(StockManagement::getProductId, stockIn.getProductId()); - queryWrapper.eq(StockManagement::getSupplierId, stockIn.getSupplierId()); - StockManagement stockManagement1 = stockManagementMapper.selectOne(queryWrapper); - if (stockManagement1!= null) { - stockManagement1.setStockQuantity(stockManagement1.getStockQuantity() + stockIn.getInboundQuantity()); - stockManagement1.setInboundTime(stockIn.getInboundTime()); - stockManagement1.setBoundTime(new Date()); - stockManagement1.setInboundPerson(stockIn.getInboundPerson()); - System.out.println(stockManagement1+"22"); - stockManagementMapper.updateById(stockManagement1); +//闇�瑕佸厛鍒ゆ柇浜у搧璁板綍琛ㄤ腑鏄惁鏈夎浜у搧 + ProductRecord productRecord = productRecordMapper.selectById(stockIn.getProductRecordid()); + if (productRecord == null) { + throw new RuntimeException("浜у搧璁板綍琛ㄤ腑娌℃湁璇ヤ骇鍝�"); } - else { - stockManagement.setProductId(stockIn.getProductId()); - stockManagement.setStockQuantity(stockIn.getInboundQuantity()); - stockManagement.setBoundTime(stockIn.getInboundTime()); - stockManagement.setStockQuantity(stockIn.getInboundQuantity()); - stockManagement.setInboundPerson(stockIn.getInboundPerson()); +// 闇�瑕佸厛鍒ゆ柇渚涘簲鍟嗚〃涓槸鍚︽湁璇ヤ緵搴斿晢 + 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()); - stockManagement.setTenantId(stockIn.getTenantId()); + stockManagement.setStockQuantity(stockIn.getInboundQuantity()); + stockManagement.setInboundTime(stockIn.getInboundTime()); stockManagement.setBoundTime(new Date()); + stockManagement.setUserId(stockIn.getUserId()); 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鑾峰彇搴撳瓨鍏ュ簱淇℃伅 @@ -71,39 +88,78 @@ StockIn stockIn = stockInMapper.selectById(id); return stockIn; } - - @Override//鏇存柊搴撳瓨鍏ュ簱淇℃伅 + @Override @Transactional(rollbackFor = Exception.class) - public int updateStockIn(StockIn stockIn) { - StockIn stockIn1 = stockInMapper.selectById(stockIn.getId()); -// 杩涜鍒ゆ柇鏄惁瀛樺湪鐩稿悓鐨勪骇鍝乮d鍜屼緵搴斿晢id - LambdaQueryWrapper<StockManagement> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(StockManagement::getProductId, stockIn.getProductId()); - queryWrapper.eq(StockManagement::getSupplierId, stockIn.getSupplierId()); - StockManagement stockManagement1 = stockManagementMapper.selectOne(queryWrapper); - if (stockManagement1!= null) { - stockManagement1.setStockQuantity(stockManagement1.getStockQuantity() - stockIn1.getInboundQuantity() + stockIn.getInboundQuantity()); - stockManagement1.setInboundTime(stockIn.getInboundTime()); - stockManagement1.setBoundTime(new Date()); - stockManagement1.setInboundPerson(stockIn.getInboundPerson()); - System.out.println(stockManagement1 + "22"); - stockManagementMapper.updateById(stockManagement1); - } else { - StockManagement stockManagement = new StockManagement(); - stockManagement.setProductId(stockIn.getProductId()); - stockManagement.setStockQuantity(stockIn.getInboundQuantity()); - stockManagement.setBoundTime(stockIn.getInboundTime()); - stockManagement.setStockQuantity(stockIn.getInboundQuantity()); - stockManagement.setInboundPerson(stockIn.getInboundPerson()); - stockManagement.setSupplierId(stockIn.getSupplierId()); - stockManagement.setTenantId(stockIn.getTenantId()); - stockManagement.setBoundTime(new Date()); - System.out.println(stockManagement + "33"); - stockManagementMapper.insert(stockManagement); + public boolean updateStockIn(StockIn stockIn) { + // 1. 鍙傛暟鏍¢獙 + if (stockIn == null || stockIn.getId() == null) { + throw new IllegalArgumentException("鍏ュ簱璁板綍ID涓嶈兘涓虹┖"); } - return stockInMapper.updateById(stockIn); + + // 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; } + @Override public int delStockin(List<Integer> ids) { LambdaQueryWrapper<StockIn> delWrapper = new LambdaQueryWrapper<>(); -- Gitblit v1.9.3