fix(overseas): preserve shared overflow locations during pallet moves
This commit is contained in:
+7
-7
@@ -157,7 +157,7 @@ public class WarehousePalletTransitionService {
|
||||
}
|
||||
|
||||
private void requireAvailableTarget(WarehouseLocationEntity location, String targetStatus) {
|
||||
String expected = isVirtual(location) ? "ACTIVE" : "IDLE";
|
||||
String expected = isNonExclusive(location) ? "ACTIVE" : "IDLE";
|
||||
if (!expected.equals(location.getStatus())) {
|
||||
throw new BizException(ResultCode.CONFLICT, "目标库位不可用");
|
||||
}
|
||||
@@ -168,18 +168,18 @@ public class WarehousePalletTransitionService {
|
||||
|
||||
private void transitionSameLocation(long warehouseId, WarehouseLocationEntity location,
|
||||
String beforeStatus, String afterStatus) {
|
||||
if (beforeStatus.equals(afterStatus) || isVirtual(location)) return;
|
||||
if (beforeStatus.equals(afterStatus) || isNonExclusive(location)) return;
|
||||
changeLocationStatus(warehouseId, location.getId(), expectedLocationStatus(location, beforeStatus),
|
||||
expectedLocationStatus(location, afterStatus));
|
||||
}
|
||||
|
||||
private void releaseSourceLocation(long warehouseId, WarehouseLocationEntity source, String palletStatus) {
|
||||
if (isVirtual(source) || "IDLE".equals(palletStatus)) return;
|
||||
if (isNonExclusive(source) || "IDLE".equals(palletStatus)) return;
|
||||
changeLocationStatus(warehouseId, source.getId(), "OCCUPIED", "IDLE");
|
||||
}
|
||||
|
||||
private void occupyTargetLocation(long warehouseId, WarehouseLocationEntity target, String palletStatus) {
|
||||
if (isVirtual(target) || "IDLE".equals(palletStatus)) return;
|
||||
if (isNonExclusive(target) || "IDLE".equals(palletStatus)) return;
|
||||
changeLocationStatus(warehouseId, target.getId(), "IDLE", "OCCUPIED");
|
||||
}
|
||||
|
||||
@@ -191,11 +191,11 @@ public class WarehousePalletTransitionService {
|
||||
}
|
||||
|
||||
private static String expectedLocationStatus(WarehouseLocationEntity location, String palletStatus) {
|
||||
return isVirtual(location) ? "ACTIVE" : palletStatus;
|
||||
return isNonExclusive(location) ? "ACTIVE" : palletStatus;
|
||||
}
|
||||
|
||||
private static boolean isVirtual(WarehouseLocationEntity location) {
|
||||
return "VIRTUAL".equals(location.getLocationType());
|
||||
private static boolean isNonExclusive(WarehouseLocationEntity location) {
|
||||
return "VIRTUAL".equals(location.getLocationType()) || WarehouseResourceService.isSharedOverflow(location);
|
||||
}
|
||||
|
||||
private PalletTransitionResponse replay(WarehousePalletOperationEntity operation, String hash) {
|
||||
|
||||
Reference in New Issue
Block a user