Przeglądaj źródła

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

优化虚拟仓库和库区的操作校验,确保在新增、修改和删除时,虚拟仓库和库区不被误操作。通过引入 validateNotVirtual 方法,提升代码可读性和维护性。
YunaiV 4 miesięcy temu
rodzic
commit
e74752eb64

+ 3 - 3
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, "库存记录不存在");

+ 12 - 4
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);

+ 12 - 4
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);

+ 12 - 4
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);