Commit e74752eb6477e030e6e9ff01872897260bdba49b
1 parent
84cc513a
✨ feat(mes): 更新虚拟仓库及库区操作校验逻辑
优化虚拟仓库和库区的操作校验,确保在新增、修改和删除时,虚拟仓库和库区不被误操作。通过引入 validateNotVirtual 方法,提升代码可读性和维护性。
Showing
4 changed files
with
39 additions
and
15 deletions
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
| @@ -335,7 +335,7 @@ public interface ErrorCodeConstants { | @@ -335,7 +335,7 @@ public interface ErrorCodeConstants { | ||
| 335 | ErrorCode WM_WAREHOUSE_HAS_LOCATION = new ErrorCode(1_040_700_003, "仓库下存在库区,无法删除"); | 335 | ErrorCode WM_WAREHOUSE_HAS_LOCATION = new ErrorCode(1_040_700_003, "仓库下存在库区,无法删除"); |
| 336 | ErrorCode WM_WAREHOUSE_HAS_WORKSTATION = new ErrorCode(1_040_700_004, "仓库已被工作站引用,无法删除"); | 336 | ErrorCode WM_WAREHOUSE_HAS_WORKSTATION = new ErrorCode(1_040_700_004, "仓库已被工作站引用,无法删除"); |
| 337 | ErrorCode WM_WAREHOUSE_HAS_MATERIAL_STOCK = new ErrorCode(1_040_700_005, "仓库下有库存记录,无法删除"); | 337 | ErrorCode WM_WAREHOUSE_HAS_MATERIAL_STOCK = new ErrorCode(1_040_700_005, "仓库下有库存记录,无法删除"); |
| 338 | - ErrorCode WM_WAREHOUSE_IS_VIRTUAL = new ErrorCode(1_040_700_006, "虚拟仓库不允许删除"); | 338 | + ErrorCode WM_WAREHOUSE_IS_VIRTUAL = new ErrorCode(1_040_700_006, "虚拟仓库不允许操作"); |
| 339 | 339 | ||
| 340 | // ========== MES 仓库管理-库区(1-040-701-000) ========== | 340 | // ========== MES 仓库管理-库区(1-040-701-000) ========== |
| 341 | ErrorCode WM_WAREHOUSE_LOCATION_NOT_EXISTS = new ErrorCode(1_040_701_000, "库区不存在"); | 341 | ErrorCode WM_WAREHOUSE_LOCATION_NOT_EXISTS = new ErrorCode(1_040_701_000, "库区不存在"); |
| @@ -346,7 +346,7 @@ public interface ErrorCodeConstants { | @@ -346,7 +346,7 @@ public interface ErrorCodeConstants { | ||
| 346 | ErrorCode WM_WAREHOUSE_REQUIRED = new ErrorCode(1_040_701_005, "选择库区时,仓库不能为空"); | 346 | ErrorCode WM_WAREHOUSE_REQUIRED = new ErrorCode(1_040_701_005, "选择库区时,仓库不能为空"); |
| 347 | ErrorCode WM_WAREHOUSE_LOCATION_RELATION_INVALID = new ErrorCode(1_040_701_006, "库区不属于所选仓库"); | 347 | ErrorCode WM_WAREHOUSE_LOCATION_RELATION_INVALID = new ErrorCode(1_040_701_006, "库区不属于所选仓库"); |
| 348 | ErrorCode WM_WAREHOUSE_LOCATION_HAS_MATERIAL_STOCK = new ErrorCode(1_040_701_007, "库区下有库存记录,无法删除"); | 348 | ErrorCode WM_WAREHOUSE_LOCATION_HAS_MATERIAL_STOCK = new ErrorCode(1_040_701_007, "库区下有库存记录,无法删除"); |
| 349 | - ErrorCode WM_WAREHOUSE_LOCATION_IS_VIRTUAL = new ErrorCode(1_040_701_008, "虚拟库区不允许删除"); | 349 | + ErrorCode WM_WAREHOUSE_LOCATION_IS_VIRTUAL = new ErrorCode(1_040_701_008, "虚拟库区不允许操作"); |
| 350 | 350 | ||
| 351 | // ========== MES 仓库管理-库位(1-040-702-000) ========== | 351 | // ========== MES 仓库管理-库位(1-040-702-000) ========== |
| 352 | ErrorCode WM_WAREHOUSE_AREA_NOT_EXISTS = new ErrorCode(1_040_702_000, "库位不存在"); | 352 | ErrorCode WM_WAREHOUSE_AREA_NOT_EXISTS = new ErrorCode(1_040_702_000, "库位不存在"); |
| @@ -357,7 +357,7 @@ public interface ErrorCodeConstants { | @@ -357,7 +357,7 @@ public interface ErrorCodeConstants { | ||
| 357 | ErrorCode WM_WAREHOUSE_AREA_RELATION_INVALID = new ErrorCode(1_040_702_005, "库位不属于所选库区"); | 357 | ErrorCode WM_WAREHOUSE_AREA_RELATION_INVALID = new ErrorCode(1_040_702_005, "库位不属于所选库区"); |
| 358 | ErrorCode WM_WAREHOUSE_AREA_HAS_MATERIAL_STOCK = new ErrorCode(1_040_702_006, "库位下有库存记录,无法删除"); | 358 | ErrorCode WM_WAREHOUSE_AREA_HAS_MATERIAL_STOCK = new ErrorCode(1_040_702_006, "库位下有库存记录,无法删除"); |
| 359 | ErrorCode WM_WAREHOUSE_AREA_WAREHOUSE_MISMATCH = new ErrorCode(1_040_702_007, "库位不属于所选仓库"); | 359 | ErrorCode WM_WAREHOUSE_AREA_WAREHOUSE_MISMATCH = new ErrorCode(1_040_702_007, "库位不属于所选仓库"); |
| 360 | - ErrorCode WM_WAREHOUSE_AREA_IS_VIRTUAL = new ErrorCode(1_040_702_008, "虚拟库位不允许删除"); | 360 | + ErrorCode WM_WAREHOUSE_AREA_IS_VIRTUAL = new ErrorCode(1_040_702_008, "虚拟库位不允许操作"); |
| 361 | 361 | ||
| 362 | // ========== MES 仓库管理-库存(1-040-703-000) ========== | 362 | // ========== MES 仓库管理-库存(1-040-703-000) ========== |
| 363 | ErrorCode WM_MATERIAL_STOCK_NOT_EXISTS = new ErrorCode(1_040_703_000, "库存记录不存在"); | 363 | ErrorCode WM_MATERIAL_STOCK_NOT_EXISTS = new ErrorCode(1_040_703_000, "库存记录不存在"); |
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 | @@ -51,6 +51,8 @@ public class MesWmWarehouseAreaServiceImpl implements MesWmWarehouseAreaService | ||
| 51 | 51 | ||
| 52 | @Override | 52 | @Override |
| 53 | public Long createWarehouseArea(MesWmWarehouseAreaSaveReqVO createReqVO) { | 53 | public Long createWarehouseArea(MesWmWarehouseAreaSaveReqVO createReqVO) { |
| 54 | + // 校验虚拟库位不允许新增 | ||
| 55 | + validateNotVirtual(createReqVO.getCode()); | ||
| 54 | // 校验数据 | 56 | // 校验数据 |
| 55 | validateWarehouseAreaSaveData(createReqVO); | 57 | validateWarehouseAreaSaveData(createReqVO); |
| 56 | 58 | ||
| @@ -67,7 +69,9 @@ public class MesWmWarehouseAreaServiceImpl implements MesWmWarehouseAreaService | @@ -67,7 +69,9 @@ public class MesWmWarehouseAreaServiceImpl implements MesWmWarehouseAreaService | ||
| 67 | @Override | 69 | @Override |
| 68 | public void updateWarehouseArea(MesWmWarehouseAreaSaveReqVO updateReqVO) { | 70 | public void updateWarehouseArea(MesWmWarehouseAreaSaveReqVO updateReqVO) { |
| 69 | // 校验存在 | 71 | // 校验存在 |
| 70 | - validateWarehouseAreaExists(updateReqVO.getId()); | 72 | + MesWmWarehouseAreaDO area = validateWarehouseAreaExists(updateReqVO.getId()); |
| 73 | + // 校验虚拟库位不允许修改 | ||
| 74 | + validateNotVirtual(area.getCode()); | ||
| 71 | // 校验数据 | 75 | // 校验数据 |
| 72 | validateWarehouseAreaSaveData(updateReqVO); | 76 | validateWarehouseAreaSaveData(updateReqVO); |
| 73 | 77 | ||
| @@ -85,14 +89,18 @@ public class MesWmWarehouseAreaServiceImpl implements MesWmWarehouseAreaService | @@ -85,14 +89,18 @@ public class MesWmWarehouseAreaServiceImpl implements MesWmWarehouseAreaService | ||
| 85 | validateWarehouseAreaNameUnique(reqVO.getId(), reqVO.getLocationId(), reqVO.getName()); | 89 | validateWarehouseAreaNameUnique(reqVO.getId(), reqVO.getLocationId(), reqVO.getName()); |
| 86 | } | 90 | } |
| 87 | 91 | ||
| 92 | + private void validateNotVirtual(String code) { | ||
| 93 | + if (MesWmWarehouseAreaDO.WIP_VIRTUAL_AREA.equals(code)) { | ||
| 94 | + throw exception(WM_WAREHOUSE_AREA_IS_VIRTUAL); | ||
| 95 | + } | ||
| 96 | + } | ||
| 97 | + | ||
| 88 | @Override | 98 | @Override |
| 89 | public void deleteWarehouseArea(Long id) { | 99 | public void deleteWarehouseArea(Long id) { |
| 90 | // 校验存在 | 100 | // 校验存在 |
| 91 | MesWmWarehouseAreaDO area = validateWarehouseAreaExists(id); | 101 | MesWmWarehouseAreaDO area = validateWarehouseAreaExists(id); |
| 92 | // 校验虚拟库位不允许删除 | 102 | // 校验虚拟库位不允许删除 |
| 93 | - if (MesWmWarehouseAreaDO.WIP_VIRTUAL_AREA.equals(area.getCode())) { | ||
| 94 | - throw exception(WM_WAREHOUSE_AREA_IS_VIRTUAL); | ||
| 95 | - } | 103 | + validateNotVirtual(area.getCode()); |
| 96 | // 校验是否被工作站引用 | 104 | // 校验是否被工作站引用 |
| 97 | if (workstationService.getWorkstationCountByAreaId(id) > 0) { | 105 | if (workstationService.getWorkstationCountByAreaId(id) > 0) { |
| 98 | throw exception(WM_WAREHOUSE_AREA_HAS_WORKSTATION); | 106 | throw exception(WM_WAREHOUSE_AREA_HAS_WORKSTATION); |
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 | @@ -50,6 +50,8 @@ public class MesWmWarehouseLocationServiceImpl implements MesWmWarehouseLocation | ||
| 50 | 50 | ||
| 51 | @Override | 51 | @Override |
| 52 | public Long createWarehouseLocation(MesWmWarehouseLocationSaveReqVO createReqVO) { | 52 | public Long createWarehouseLocation(MesWmWarehouseLocationSaveReqVO createReqVO) { |
| 53 | + // 校验虚拟库区不允许新增 | ||
| 54 | + validateNotVirtual(createReqVO.getCode()); | ||
| 53 | // 校验数据 | 55 | // 校验数据 |
| 54 | validateWarehouseLocationSaveData(createReqVO); | 56 | validateWarehouseLocationSaveData(createReqVO); |
| 55 | 57 | ||
| @@ -66,7 +68,9 @@ public class MesWmWarehouseLocationServiceImpl implements MesWmWarehouseLocation | @@ -66,7 +68,9 @@ public class MesWmWarehouseLocationServiceImpl implements MesWmWarehouseLocation | ||
| 66 | @Override | 68 | @Override |
| 67 | public void updateWarehouseLocation(MesWmWarehouseLocationSaveReqVO updateReqVO) { | 69 | public void updateWarehouseLocation(MesWmWarehouseLocationSaveReqVO updateReqVO) { |
| 68 | // 校验存在 | 70 | // 校验存在 |
| 69 | - validateWarehouseLocationExists(updateReqVO.getId()); | 71 | + MesWmWarehouseLocationDO location = validateWarehouseLocationExists(updateReqVO.getId()); |
| 72 | + // 校验虚拟库区不允许修改 | ||
| 73 | + validateNotVirtual(location.getCode()); | ||
| 70 | // 校验数据 | 74 | // 校验数据 |
| 71 | validateWarehouseLocationSaveData(updateReqVO); | 75 | validateWarehouseLocationSaveData(updateReqVO); |
| 72 | 76 | ||
| @@ -84,14 +88,18 @@ public class MesWmWarehouseLocationServiceImpl implements MesWmWarehouseLocation | @@ -84,14 +88,18 @@ public class MesWmWarehouseLocationServiceImpl implements MesWmWarehouseLocation | ||
| 84 | validateWarehouseLocationNameUnique(reqVO.getId(), reqVO.getWarehouseId(), reqVO.getName()); | 88 | validateWarehouseLocationNameUnique(reqVO.getId(), reqVO.getWarehouseId(), reqVO.getName()); |
| 85 | } | 89 | } |
| 86 | 90 | ||
| 91 | + private void validateNotVirtual(String code) { | ||
| 92 | + if (MesWmWarehouseLocationDO.WIP_VIRTUAL_LOCATION.equals(code)) { | ||
| 93 | + throw exception(WM_WAREHOUSE_LOCATION_IS_VIRTUAL); | ||
| 94 | + } | ||
| 95 | + } | ||
| 96 | + | ||
| 87 | @Override | 97 | @Override |
| 88 | public void deleteWarehouseLocation(Long id) { | 98 | public void deleteWarehouseLocation(Long id) { |
| 89 | // 校验存在 | 99 | // 校验存在 |
| 90 | MesWmWarehouseLocationDO location = validateWarehouseLocationExists(id); | 100 | MesWmWarehouseLocationDO location = validateWarehouseLocationExists(id); |
| 91 | // 校验虚拟库区不允许删除 | 101 | // 校验虚拟库区不允许删除 |
| 92 | - if (MesWmWarehouseLocationDO.WIP_VIRTUAL_LOCATION.equals(location.getCode())) { | ||
| 93 | - throw exception(WM_WAREHOUSE_LOCATION_IS_VIRTUAL); | ||
| 94 | - } | 102 | + validateNotVirtual(location.getCode()); |
| 95 | // 校验是否有库位 | 103 | // 校验是否有库位 |
| 96 | if (areaService.getWarehouseAreaCountByLocationId(id) > 0) { | 104 | if (areaService.getWarehouseAreaCountByLocationId(id) > 0) { |
| 97 | throw exception(WM_WAREHOUSE_LOCATION_HAS_AREA); | 105 | throw exception(WM_WAREHOUSE_LOCATION_HAS_AREA); |
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 { | @@ -46,6 +46,8 @@ public class MesWmWarehouseServiceImpl implements MesWmWarehouseService { | ||
| 46 | 46 | ||
| 47 | @Override | 47 | @Override |
| 48 | public Long createWarehouse(MesWmWarehouseSaveReqVO createReqVO) { | 48 | public Long createWarehouse(MesWmWarehouseSaveReqVO createReqVO) { |
| 49 | + // 校验虚拟仓库不允许新增 | ||
| 50 | + validateNotVirtual(createReqVO.getCode()); | ||
| 49 | // 校验数据 | 51 | // 校验数据 |
| 50 | validateWarehouseSaveData(createReqVO); | 52 | validateWarehouseSaveData(createReqVO); |
| 51 | 53 | ||
| @@ -62,7 +64,9 @@ public class MesWmWarehouseServiceImpl implements MesWmWarehouseService { | @@ -62,7 +64,9 @@ public class MesWmWarehouseServiceImpl implements MesWmWarehouseService { | ||
| 62 | @Override | 64 | @Override |
| 63 | public void updateWarehouse(MesWmWarehouseSaveReqVO updateReqVO) { | 65 | public void updateWarehouse(MesWmWarehouseSaveReqVO updateReqVO) { |
| 64 | // 校验存在 | 66 | // 校验存在 |
| 65 | - validateWarehouseExists(updateReqVO.getId()); | 67 | + MesWmWarehouseDO warehouse = validateWarehouseExists(updateReqVO.getId()); |
| 68 | + // 校验虚拟仓库不允许修改 | ||
| 69 | + validateNotVirtual(warehouse.getCode()); | ||
| 66 | // 校验数据 | 70 | // 校验数据 |
| 67 | validateWarehouseSaveData(updateReqVO); | 71 | validateWarehouseSaveData(updateReqVO); |
| 68 | 72 | ||
| @@ -78,14 +82,18 @@ public class MesWmWarehouseServiceImpl implements MesWmWarehouseService { | @@ -78,14 +82,18 @@ public class MesWmWarehouseServiceImpl implements MesWmWarehouseService { | ||
| 78 | validateWarehouseNameUnique(reqVO.getId(), reqVO.getName()); | 82 | validateWarehouseNameUnique(reqVO.getId(), reqVO.getName()); |
| 79 | } | 83 | } |
| 80 | 84 | ||
| 85 | + private void validateNotVirtual(String code) { | ||
| 86 | + if (MesWmWarehouseDO.WIP_VIRTUAL_WAREHOUSE.equals(code)) { | ||
| 87 | + throw exception(WM_WAREHOUSE_IS_VIRTUAL); | ||
| 88 | + } | ||
| 89 | + } | ||
| 90 | + | ||
| 81 | @Override | 91 | @Override |
| 82 | public void deleteWarehouse(Long id) { | 92 | public void deleteWarehouse(Long id) { |
| 83 | // 校验存在 | 93 | // 校验存在 |
| 84 | MesWmWarehouseDO warehouse = validateWarehouseExists(id); | 94 | MesWmWarehouseDO warehouse = validateWarehouseExists(id); |
| 85 | // 校验虚拟仓库不允许删除 | 95 | // 校验虚拟仓库不允许删除 |
| 86 | - if (MesWmWarehouseDO.WIP_VIRTUAL_WAREHOUSE.equals(warehouse.getCode())) { | ||
| 87 | - throw exception(WM_WAREHOUSE_IS_VIRTUAL); | ||
| 88 | - } | 96 | + validateNotVirtual(warehouse.getCode()); |
| 89 | // 校验是否有库区 | 97 | // 校验是否有库区 |
| 90 | if (locationService.getWarehouseLocationCountByWarehouseId(id) > 0) { | 98 | if (locationService.getWarehouseLocationCountByWarehouseId(id) > 0) { |
| 91 | throw exception(WM_WAREHOUSE_HAS_LOCATION); | 99 | throw exception(WM_WAREHOUSE_HAS_LOCATION); |