fix: reserve pallet block from declared volume
This commit is contained in:
+9
-4
@@ -40,7 +40,7 @@ public class MeasurementLocationOccupationService {
|
||||
long weightResultId, int weightVersion) {
|
||||
InboundOrderEntity order = requireOrder(tenantId, inboundId);
|
||||
long warehouseId = requireWarehouse(order);
|
||||
BigDecimal volume = requireVolume(order);
|
||||
BigDecimal volume = requireVolume(tenantId, inboundId, order);
|
||||
var confirmedWeights = confirmedWeights(tenantId, inboundId);
|
||||
int requiredSlotCount = requiredSlotCount(volume, confirmedWeights.size());
|
||||
int packageCount = requirePackageCount(order);
|
||||
@@ -95,7 +95,7 @@ public class MeasurementLocationOccupationService {
|
||||
InboundOrderEntity order = requireOrder(tenantId, inboundId);
|
||||
long warehouseId = requireWarehouse(order);
|
||||
var confirmedWeights = confirmedWeights(tenantId, inboundId);
|
||||
int requiredSlotCount = requiredSlotCount(requireVolume(order), confirmedWeights.size());
|
||||
int requiredSlotCount = requiredSlotCount(requireVolume(tenantId, inboundId, order), confirmedWeights.size());
|
||||
var current = allocations.list(tenantId, inboundId);
|
||||
requireActiveBlock(current, warehouseId);
|
||||
if (current.size() < requiredSlotCount) {
|
||||
@@ -166,9 +166,14 @@ public class MeasurementLocationOccupationService {
|
||||
return order.getWarehouseId();
|
||||
}
|
||||
|
||||
private static BigDecimal requireVolume(InboundOrderEntity order) {
|
||||
private BigDecimal requireVolume(long tenantId, long inboundId, InboundOrderEntity order) {
|
||||
var measurement = measurements.findLatestMeasurement(tenantId, inboundId);
|
||||
if (measurement != null && measurement.getOriginalVolumeCbm() != null
|
||||
&& measurement.getOriginalVolumeCbm().signum() > 0) {
|
||||
return measurement.getOriginalVolumeCbm();
|
||||
}
|
||||
if (order.getActualVolumeCbm() == null || order.getActualVolumeCbm().signum() <= 0) {
|
||||
throw new BizException(ResultCode.CONFLICT, "入库单缺少有效实测体积");
|
||||
throw new BizException(ResultCode.CONFLICT, "入库单缺少有效客户申报体积");
|
||||
}
|
||||
return order.getActualVolumeCbm();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user