Commit e74752eb6477e030e6e9ff01872897260bdba49b

Authored by YunaiV
1 parent 84cc513a

✨ feat(mes): 更新虚拟仓库及库区操作校验逻辑

优化虚拟仓库和库区的操作校验,确保在新增、修改和删除时,虚拟仓库和库区不被误操作。通过引入 validateNotVirtual 方法,提升代码可读性和维护性。
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);