diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsActualWarehouseServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsActualWarehouseServiceImpl.java index 3c9e5b9c..192b7c59 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsActualWarehouseServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsActualWarehouseServiceImpl.java @@ -455,15 +455,34 @@ public class WmsActualWarehouseServiceImpl implements IWmsActualWarehouseService throw new ServiceException("未找到列标识为 " + columnFlag + " 的库位"); } + // 1. 筛选出待拆分的父库位(只校验需要拆分的库位,非拆分库位不限制) + List toSplitParents = columnLocations.stream() + .filter(loc -> splitIds.contains(loc.getActualWarehouseId())) + .collect(Collectors.toList()); + + // 2. 批量校验占用状态 + List occupiedCodes = new ArrayList<>(); + for (WmsActualWarehouse parent : toSplitParents) { + // 锁定状态=0 → 被占用 + boolean isOccupied = parent.getIsEnabled() != null && parent.getIsEnabled() == 0; + if (isOccupied) { + occupiedCodes.add(parent.getActualWarehouseCode()); + } + } + + // 3. 存在被占用的父库位,抛出异常提示 + if (!occupiedCodes.isEmpty()) { + throw new ServiceException("以下父库位被占用,无法拆分:" + String.join(",", occupiedCodes)); + } // 批量查询所有子库位(一次性查询,避免循环查询) List parentIds = columnLocations.stream() .map(WmsActualWarehouse::getActualWarehouseId) .collect(Collectors.toList()); - + List allChildren = baseMapper.selectList(Wrappers.lambdaQuery() .in(WmsActualWarehouse::getParentId, parentIds) .eq(WmsActualWarehouse::getActualWarehouseType, 4)); // 四级子库位 - + boolean hasExistingChildren = CollUtil.isNotEmpty(allChildren); if (hasExistingChildren) { @@ -498,11 +517,11 @@ public class WmsActualWarehouseServiceImpl implements IWmsActualWarehouseService .collect(Collectors.groupingBy(WmsActualWarehouse::getParentId, LinkedHashMap::new, Collectors.toList())); List toUpdate = new ArrayList<>(); - + for (WmsActualWarehouse location : columnLocations) { boolean isSplitLocation = splitIds.contains(location.getActualWarehouseId()); List children = childrenByParent.get(location.getActualWarehouseId()); - + if (CollUtil.isEmpty(children)) { continue; } @@ -536,7 +555,7 @@ public class WmsActualWarehouseServiceImpl implements IWmsActualWarehouseService } } } - + // 批量更新 if (!toUpdate.isEmpty()) { baseMapper.updateBatchById(toUpdate); @@ -693,7 +712,7 @@ public class WmsActualWarehouseServiceImpl implements IWmsActualWarehouseService List parentIds = locationsToMerge.stream() .map(WmsActualWarehouse::getActualWarehouseId) .collect(Collectors.toList()); - + List allChildren = baseMapper.selectList(Wrappers.lambdaQuery() .in(WmsActualWarehouse::getParentId, parentIds) .eq(WmsActualWarehouse::getActualWarehouseType, 4)); // 四级子库位 @@ -721,7 +740,7 @@ public class WmsActualWarehouseServiceImpl implements IWmsActualWarehouseService for (WmsActualWarehouse location : locationsToMerge) { List children = childrenByParent.get(location.getActualWarehouseId()); - + // 隐藏所有子库位 if (CollUtil.isNotEmpty(children)) { for (WmsActualWarehouse child : children) {