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); } }