From 5a2b5ff2ff8316e71670566eed5df1455c7ed6f8 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Fri, 30 Jan 2026 17:17:15 +0800 Subject: [PATCH] =?UTF-8?q?fix(inventory):=20=E4=BF=AE=E5=A4=8D=E5=BA=93?= =?UTF-8?q?=E5=AD=98=E6=89=A3=E5=87=8F=E6=97=B6=E7=BC=BA=E5=B0=91=E9=AA=8C?= =?UTF-8?q?=E8=AF=81=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在reduceInventory方法中添加库存数量验证,防止扣减数量超过当前库存 - 在revertInventory方法中添加库存数量验证,防止减少数量超过当前库存 - 移除不必要的物料属性设置,简化库存更新逻辑 - 统一异常信息格式,提供更清晰的错误提示 --- .../mat/service/impl/MatMaterialOutServiceImpl.java | 12 ++++++------ .../service/impl/MatPurchaseInDetailServiceImpl.java | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/gear-mat/src/main/java/com/gear/mat/service/impl/MatMaterialOutServiceImpl.java b/gear-mat/src/main/java/com/gear/mat/service/impl/MatMaterialOutServiceImpl.java index 648dc16..f5bcb26 100644 --- a/gear-mat/src/main/java/com/gear/mat/service/impl/MatMaterialOutServiceImpl.java +++ b/gear-mat/src/main/java/com/gear/mat/service/impl/MatMaterialOutServiceImpl.java @@ -154,13 +154,13 @@ public class MatMaterialOutServiceImpl implements IMatMaterialOutService { private void reduceInventory(Long materialId, BigDecimal quantity) { MatMaterialVo material = matMaterialService.queryById(materialId); if (material != null) { + // 验证要扣减的数量不能大于当前库存 + if (quantity.compareTo(material.getCurrentStock()) > 0) { + throw new IllegalArgumentException("要扣减的数量不能大于当前库存数量,物料ID:" + materialId + ",当前库存:" + material.getCurrentStock() + ",请求扣减:" + quantity); + } + MatMaterialBo materialBo = new MatMaterialBo(); materialBo.setMaterialId(materialId); - materialBo.setMaterialName(material.getMaterialName()); - materialBo.setSpec(material.getSpec()); - materialBo.setModel(material.getModel()); - materialBo.setFactory(material.getFactory()); - materialBo.setUnit(material.getUnit()); // 计算扣减后的库存数量 BigDecimal newStock = material.getCurrentStock().subtract(quantity); @@ -169,11 +169,11 @@ public class MatMaterialOutServiceImpl implements IMatMaterialOutService { } materialBo.setCurrentStock(newStock); - materialBo.setRemark(material.getRemark()); matMaterialService.updateByBo(materialBo); } } + /** * 恢复库存数量(增加库存) */ diff --git a/gear-mat/src/main/java/com/gear/mat/service/impl/MatPurchaseInDetailServiceImpl.java b/gear-mat/src/main/java/com/gear/mat/service/impl/MatPurchaseInDetailServiceImpl.java index b06c046..29feb5e 100644 --- a/gear-mat/src/main/java/com/gear/mat/service/impl/MatPurchaseInDetailServiceImpl.java +++ b/gear-mat/src/main/java/com/gear/mat/service/impl/MatPurchaseInDetailServiceImpl.java @@ -275,13 +275,14 @@ public class MatPurchaseInDetailServiceImpl implements IMatPurchaseInDetailServi private void revertInventory(Long materialId, BigDecimal quantity) { MatMaterialVo material = matMaterialService.queryById(materialId); if (material != null) { + // 验证要减少的数量不能大于当前库存 + if (quantity.compareTo(material.getCurrentStock()) > 0) { + throw new IllegalArgumentException("要减少的数量不能大于当前库存数量,物料ID:" + materialId + ",当前库存:" + material.getCurrentStock() + ",请求减少:" + quantity); + } + + MatMaterialBo materialBo = new MatMaterialBo(); materialBo.setMaterialId(materialId); - materialBo.setMaterialName(material.getMaterialName()); - materialBo.setSpec(material.getSpec()); - materialBo.setModel(material.getModel()); - materialBo.setFactory(material.getFactory()); - materialBo.setUnit(material.getUnit()); // 计算还原后的库存数量(减去本次入库的数量) BigDecimal newStock = material.getCurrentStock().subtract(quantity); @@ -290,7 +291,6 @@ public class MatPurchaseInDetailServiceImpl implements IMatPurchaseInDetailServi } materialBo.setCurrentStock(newStock); - materialBo.setRemark(material.getRemark()); matMaterialService.updateByBo(materialBo); } }