From e74752eb6477e030e6e9ff01872897260bdba49b Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 28 Mar 2026 21:08:42 +0800 Subject: [PATCH] ✨ feat(mes): 更新虚拟仓库及库区操作校验逻辑 --- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java | 6 +++--- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseAreaServiceImpl.java | 16 ++++++++++++---- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseLocationServiceImpl.java | 16 ++++++++++++---- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseServiceImpl.java | 16 ++++++++++++---- 4 files changed, 39 insertions(+), 15 deletions(-) diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java index 0727502..636084d 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java @@ -335,7 +335,7 @@ public interface ErrorCodeConstants { ErrorCode WM_WAREHOUSE_HAS_LOCATION = new ErrorCode(1_040_700_003, "仓库下存在库区,无法删除"); ErrorCode WM_WAREHOUSE_HAS_WORKSTATION = new ErrorCode(1_040_700_004, "仓库已被工作站引用,无法删除"); ErrorCode WM_WAREHOUSE_HAS_MATERIAL_STOCK = new ErrorCode(1_040_700_005, "仓库下有库存记录,无法删除"); - ErrorCode WM_WAREHOUSE_IS_VIRTUAL = new ErrorCode(1_040_700_006, "虚拟仓库不允许删除"); + ErrorCode WM_WAREHOUSE_IS_VIRTUAL = new ErrorCode(1_040_700_006, "虚拟仓库不允许操作"); // ========== MES 仓库管理-库区(1-040-701-000) ========== ErrorCode WM_WAREHOUSE_LOCATION_NOT_EXISTS = new ErrorCode(1_040_701_000, "库区不存在"); @@ -346,7 +346,7 @@ public interface ErrorCodeConstants { ErrorCode WM_WAREHOUSE_REQUIRED = new ErrorCode(1_040_701_005, "选择库区时,仓库不能为空"); ErrorCode WM_WAREHOUSE_LOCATION_RELATION_INVALID = new ErrorCode(1_040_701_006, "库区不属于所选仓库"); ErrorCode WM_WAREHOUSE_LOCATION_HAS_MATERIAL_STOCK = new ErrorCode(1_040_701_007, "库区下有库存记录,无法删除"); - ErrorCode WM_WAREHOUSE_LOCATION_IS_VIRTUAL = new ErrorCode(1_040_701_008, "虚拟库区不允许删除"); + ErrorCode WM_WAREHOUSE_LOCATION_IS_VIRTUAL = new ErrorCode(1_040_701_008, "虚拟库区不允许操作"); // ========== MES 仓库管理-库位(1-040-702-000) ========== ErrorCode WM_WAREHOUSE_AREA_NOT_EXISTS = new ErrorCode(1_040_702_000, "库位不存在"); @@ -357,7 +357,7 @@ public interface ErrorCodeConstants { ErrorCode WM_WAREHOUSE_AREA_RELATION_INVALID = new ErrorCode(1_040_702_005, "库位不属于所选库区"); ErrorCode WM_WAREHOUSE_AREA_HAS_MATERIAL_STOCK = new ErrorCode(1_040_702_006, "库位下有库存记录,无法删除"); ErrorCode WM_WAREHOUSE_AREA_WAREHOUSE_MISMATCH = new ErrorCode(1_040_702_007, "库位不属于所选仓库"); - ErrorCode WM_WAREHOUSE_AREA_IS_VIRTUAL = new ErrorCode(1_040_702_008, "虚拟库位不允许删除"); + ErrorCode WM_WAREHOUSE_AREA_IS_VIRTUAL = new ErrorCode(1_040_702_008, "虚拟库位不允许操作"); // ========== MES 仓库管理-库存(1-040-703-000) ========== ErrorCode WM_MATERIAL_STOCK_NOT_EXISTS = new ErrorCode(1_040_703_000, "库存记录不存在"); diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseAreaServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseAreaServiceImpl.java index 5a02f1a..f5b8cd0 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseAreaServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseAreaServiceImpl.java @@ -51,6 +51,8 @@ public class MesWmWarehouseAreaServiceImpl implements MesWmWarehouseAreaService @Override public Long createWarehouseArea(MesWmWarehouseAreaSaveReqVO createReqVO) { + // 校验虚拟库位不允许新增 + validateNotVirtual(createReqVO.getCode()); // 校验数据 validateWarehouseAreaSaveData(createReqVO); @@ -67,7 +69,9 @@ public class MesWmWarehouseAreaServiceImpl implements MesWmWarehouseAreaService @Override public void updateWarehouseArea(MesWmWarehouseAreaSaveReqVO updateReqVO) { // 校验存在 - validateWarehouseAreaExists(updateReqVO.getId()); + MesWmWarehouseAreaDO area = validateWarehouseAreaExists(updateReqVO.getId()); + // 校验虚拟库位不允许修改 + validateNotVirtual(area.getCode()); // 校验数据 validateWarehouseAreaSaveData(updateReqVO); @@ -85,14 +89,18 @@ public class MesWmWarehouseAreaServiceImpl implements MesWmWarehouseAreaService validateWarehouseAreaNameUnique(reqVO.getId(), reqVO.getLocationId(), reqVO.getName()); } + private void validateNotVirtual(String code) { + if (MesWmWarehouseAreaDO.WIP_VIRTUAL_AREA.equals(code)) { + throw exception(WM_WAREHOUSE_AREA_IS_VIRTUAL); + } + } + @Override public void deleteWarehouseArea(Long id) { // 校验存在 MesWmWarehouseAreaDO area = validateWarehouseAreaExists(id); // 校验虚拟库位不允许删除 - if (MesWmWarehouseAreaDO.WIP_VIRTUAL_AREA.equals(area.getCode())) { - throw exception(WM_WAREHOUSE_AREA_IS_VIRTUAL); - } + validateNotVirtual(area.getCode()); // 校验是否被工作站引用 if (workstationService.getWorkstationCountByAreaId(id) > 0) { throw exception(WM_WAREHOUSE_AREA_HAS_WORKSTATION); diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseLocationServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseLocationServiceImpl.java index e3ca563..b09e50b 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseLocationServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseLocationServiceImpl.java @@ -50,6 +50,8 @@ public class MesWmWarehouseLocationServiceImpl implements MesWmWarehouseLocation @Override public Long createWarehouseLocation(MesWmWarehouseLocationSaveReqVO createReqVO) { + // 校验虚拟库区不允许新增 + validateNotVirtual(createReqVO.getCode()); // 校验数据 validateWarehouseLocationSaveData(createReqVO); @@ -66,7 +68,9 @@ public class MesWmWarehouseLocationServiceImpl implements MesWmWarehouseLocation @Override public void updateWarehouseLocation(MesWmWarehouseLocationSaveReqVO updateReqVO) { // 校验存在 - validateWarehouseLocationExists(updateReqVO.getId()); + MesWmWarehouseLocationDO location = validateWarehouseLocationExists(updateReqVO.getId()); + // 校验虚拟库区不允许修改 + validateNotVirtual(location.getCode()); // 校验数据 validateWarehouseLocationSaveData(updateReqVO); @@ -84,14 +88,18 @@ public class MesWmWarehouseLocationServiceImpl implements MesWmWarehouseLocation validateWarehouseLocationNameUnique(reqVO.getId(), reqVO.getWarehouseId(), reqVO.getName()); } + private void validateNotVirtual(String code) { + if (MesWmWarehouseLocationDO.WIP_VIRTUAL_LOCATION.equals(code)) { + throw exception(WM_WAREHOUSE_LOCATION_IS_VIRTUAL); + } + } + @Override public void deleteWarehouseLocation(Long id) { // 校验存在 MesWmWarehouseLocationDO location = validateWarehouseLocationExists(id); // 校验虚拟库区不允许删除 - if (MesWmWarehouseLocationDO.WIP_VIRTUAL_LOCATION.equals(location.getCode())) { - throw exception(WM_WAREHOUSE_LOCATION_IS_VIRTUAL); - } + validateNotVirtual(location.getCode()); // 校验是否有库位 if (areaService.getWarehouseAreaCountByLocationId(id) > 0) { throw exception(WM_WAREHOUSE_LOCATION_HAS_AREA); diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseServiceImpl.java index 79069b3..2ae337a 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseServiceImpl.java @@ -46,6 +46,8 @@ public class MesWmWarehouseServiceImpl implements MesWmWarehouseService { @Override public Long createWarehouse(MesWmWarehouseSaveReqVO createReqVO) { + // 校验虚拟仓库不允许新增 + validateNotVirtual(createReqVO.getCode()); // 校验数据 validateWarehouseSaveData(createReqVO); @@ -62,7 +64,9 @@ public class MesWmWarehouseServiceImpl implements MesWmWarehouseService { @Override public void updateWarehouse(MesWmWarehouseSaveReqVO updateReqVO) { // 校验存在 - validateWarehouseExists(updateReqVO.getId()); + MesWmWarehouseDO warehouse = validateWarehouseExists(updateReqVO.getId()); + // 校验虚拟仓库不允许修改 + validateNotVirtual(warehouse.getCode()); // 校验数据 validateWarehouseSaveData(updateReqVO); @@ -78,14 +82,18 @@ public class MesWmWarehouseServiceImpl implements MesWmWarehouseService { validateWarehouseNameUnique(reqVO.getId(), reqVO.getName()); } + private void validateNotVirtual(String code) { + if (MesWmWarehouseDO.WIP_VIRTUAL_WAREHOUSE.equals(code)) { + throw exception(WM_WAREHOUSE_IS_VIRTUAL); + } + } + @Override public void deleteWarehouse(Long id) { // 校验存在 MesWmWarehouseDO warehouse = validateWarehouseExists(id); // 校验虚拟仓库不允许删除 - if (MesWmWarehouseDO.WIP_VIRTUAL_WAREHOUSE.equals(warehouse.getCode())) { - throw exception(WM_WAREHOUSE_IS_VIRTUAL); - } + validateNotVirtual(warehouse.getCode()); // 校验是否有库区 if (locationService.getWarehouseLocationCountByWarehouseId(id) > 0) { throw exception(WM_WAREHOUSE_HAS_LOCATION); -- libgit2 0.21.4