From 4e7af79f63681ac6b0e4e0561886cb15cd923147 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Fri, 12 Sep 2025 15:53:34 +0800 Subject: [PATCH] =?UTF-8?q?refactor(wms):=20=E4=BC=98=E5=8C=96=E5=BA=93?= =?UTF-8?q?=E5=AD=98=E7=AE=A1=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改 XXL-JOB 配置,禁用执行器 - 优化库存变更逻辑,简化代码结构 -调整库存查询方式,按创建时间排序取第一个 - 移除不必要的条件判断,简化业务逻辑 - 增加库存变更日志的备注信息 --- .../src/main/resources/application-prod.yml | 2 +- .../service/impl/WmsStockIoServiceImpl.java | 33 +++++-------------- 2 files changed, 9 insertions(+), 26 deletions(-) diff --git a/klp-admin/src/main/resources/application-prod.yml b/klp-admin/src/main/resources/application-prod.yml index 531309ff..4f75fe79 100644 --- a/klp-admin/src/main/resources/application-prod.yml +++ b/klp-admin/src/main/resources/application-prod.yml @@ -20,7 +20,7 @@ spring.boot.admin.client: --- # xxl-job 配置 xxl.job: # 执行器开关 - enabled: true + enabled: false # 调度中心地址:如调度中心集群部署存在多个地址则用逗号分隔。 admin-addresses: http://localhost:9100/xxl-job-admin # 执行器通讯TOKEN:非空时启用 diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsStockIoServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsStockIoServiceImpl.java index 77c2c360..ca8c56be 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsStockIoServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsStockIoServiceImpl.java @@ -435,24 +435,24 @@ public class WmsStockIoServiceImpl implements IWmsStockIoService { */ private void changeStock(Long warehouseId, String itemType, Long itemId, String batchNo, BigDecimal quantity, boolean isAdd, String unit) { WmsStock stock = null; - + if (StringUtils.isNotBlank(batchNo)) { - // 如果指定了批次号,按批次号查找 + // 如果指定了批次号,按批次号查找(应该是唯一的) stock = stockMapper.selectOne(Wrappers.lambdaQuery() .eq(WmsStock::getWarehouseId, warehouseId) .eq(WmsStock::getItemType, itemType) .eq(WmsStock::getItemId, itemId) - .eq(WmsStock::getBatchNo, batchNo) - .last("limit 1")); + .eq(WmsStock::getBatchNo, batchNo)); } else { - // 如果没有指定批次号,查找任意一个批次 + // 如果没有指定批次号,查找任意一个批次(按创建时间排序取第一个) stock = stockMapper.selectOne(Wrappers.lambdaQuery() .eq(WmsStock::getWarehouseId, warehouseId) .eq(WmsStock::getItemType, itemType) .eq(WmsStock::getItemId, itemId) + .orderByAsc(WmsStock::getCreateTime) .last("limit 1")); } - + if (stock == null) { if (!isAdd) { throw new RuntimeException("库存不足,无法出库/移库"); @@ -466,23 +466,7 @@ public class WmsStockIoServiceImpl implements IWmsStockIoService { stock.setQuantity(quantity); stock.setUnit(unit); stockMapper.insert(stock); - } else { - // 如果指定了批次号且与现有库存批次号不同,需要新建记录 - if (StringUtils.isNotBlank(batchNo) && !batchNo.equals(stock.getBatchNo())) { - if (!isAdd) { - throw new RuntimeException("指定批次号库存不足,无法出库/移库"); - } - // 新建不同批次号的库存记录 - WmsStock newStock = new WmsStock(); - newStock.setWarehouseId(warehouseId); - newStock.setItemType(itemType); - newStock.setItemId(itemId); - newStock.setBatchNo(batchNo); - newStock.setQuantity(quantity); - newStock.setUnit(unit); - stockMapper.insert(newStock); - stock = newStock; // 更新stock引用用于日志记录 - } else { + } else { // 更新现有库存 BigDecimal newQty = isAdd ? stock.getQuantity().add(quantity) : stock.getQuantity().subtract(quantity); if (newQty.compareTo(BigDecimal.ZERO) < 0) { @@ -491,8 +475,6 @@ public class WmsStockIoServiceImpl implements IWmsStockIoService { stock.setQuantity(newQty); stockMapper.updateById(stock); } - } - // 记录库存变更日志 WmsStockLog log = new WmsStockLog(); log.setWarehouseId(warehouseId); @@ -505,6 +487,7 @@ public class WmsStockIoServiceImpl implements IWmsStockIoService { // 变动类型(入库/出库等) log.setChangeType(isAdd ? "入库" : "出库"); log.setChangeTime(new Date()); + log.setRemark(stock.getBatchNo()); stockLogMapper.insert(log); } }