贴标申请,仓储转运
This commit is contained in:
@@ -44,7 +44,8 @@ public final class RelabelResponses {
|
||||
String sourceType, Long returnCartonId, String cartonMark,
|
||||
List<SkuItem> skuItems, long relabelledPackages, String relabelStatus,
|
||||
long relabelledQuantity, long relabelReservedQuantity, Long stockQuantity, String inventoryStatus, String occupiedRelabelNo, List<String> mergedIntoCartonMarks, boolean hasOutbound,
|
||||
List<com.baiyue.lastleg.returnreceipt.dto.ReturnInventoryResponses.SkuConversion> skuConversions) {
|
||||
List<com.baiyue.lastleg.returnreceipt.dto.ReturnInventoryResponses.SkuConversion> skuConversions,
|
||||
List<SkuItem> cartonSkuItems, long cartonAvailablePackages) {
|
||||
public InventoryCandidate(Long inventoryBalanceId, Long inboundOrderId, String inboundOrderNo, String inboundCode,
|
||||
String overseasWarehouseId, String overseasWarehouseCode, String overseasWarehouseName,
|
||||
String destinationFbaWarehouseCode, String destinationFbaWarehouseName, String skuCode, String productNameZh,
|
||||
@@ -53,7 +54,7 @@ public final class RelabelResponses {
|
||||
this(inventoryBalanceId, inboundOrderId, inboundOrderNo, inboundCode, overseasWarehouseId,
|
||||
overseasWarehouseCode, overseasWarehouseName, destinationFbaWarehouseCode, destinationFbaWarehouseName,
|
||||
skuCode, productNameZh, availablePackages, version, positions, sourceType, returnCartonId, cartonMark,
|
||||
skuItems, relabelledPackages, null, relabelledPackages, 0, null, null, null, List.of(), false, List.of());
|
||||
skuItems, relabelledPackages, null, relabelledPackages, 0, null, null, null, List.of(), false, List.of(), List.of(), 0);
|
||||
}
|
||||
}
|
||||
public record HistoricalOrder(Long id, String orderNo, String sourceOrderNo, String outboundOrderNo,
|
||||
|
||||
+10
-3
@@ -284,7 +284,13 @@ public class RelabelApplicationService implements WalletResultHandler {
|
||||
return new RelabelResponses.SkuItem(item.getSkuCode(), null,
|
||||
Math.toIntExact(Math.max(remaining, 0)), null);
|
||||
}).filter(item -> !"AVAILABLE".equals(carton.getStatus()) || item.quantity() > 0).toList();
|
||||
if (cartonSkus.isEmpty() && !java.util.Set.of("MERGED", "OUTBOUNDED").contains(carton.getStatus())) continue;
|
||||
List<RelabelResponses.SkuItem> physicalSkus = cartonLines.stream()
|
||||
.filter(line -> value(line.getQuantity()) > 0)
|
||||
.map(line -> new RelabelResponses.SkuItem(line.getSkuCode(), null, Math.toIntExact(value(line.getQuantity())), null)).toList();
|
||||
long cartonAvailable = "AVAILABLE".equals(carton.getStatus()) && carton.getRelabelApplicationId() == null
|
||||
&& cartonLines.stream().noneMatch(line -> value(line.getPackingReservedQuantity()) > 0)
|
||||
&& !physicalSkus.isEmpty() ? 1 : 0;
|
||||
if (cartonSkus.isEmpty() && cartonAvailable == 0 && !java.util.Set.of("MERGED", "OUTBOUNDED").contains(carton.getStatus())) continue;
|
||||
String skuCodes = cartonSkus.stream().map(RelabelResponses.SkuItem::skuCode)
|
||||
.collect(Collectors.joining(","));
|
||||
long availablePackages = cartonSkus.stream().mapToLong(RelabelResponses.SkuItem::quantity).sum();
|
||||
@@ -301,7 +307,7 @@ public class RelabelApplicationService implements WalletResultHandler {
|
||||
.filter(history -> carton.getCartonMark().equals(history.sourceCartonMark()))
|
||||
.map(history -> history.targetCartonMark()).distinct().toList(), returnCartons.hasOutbound(carton.getId()),
|
||||
skuConversionRows.listCarton(customerId, carton.getId()).stream()
|
||||
.map(com.baiyue.lastleg.returnreceipt.dto.ReturnInventoryResponses.SkuConversion::from).toList()));
|
||||
.map(com.baiyue.lastleg.returnreceipt.dto.ReturnInventoryResponses.SkuConversion::from).toList(), physicalSkus, cartonAvailable));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@@ -414,7 +420,8 @@ public class RelabelApplicationService implements WalletResultHandler {
|
||||
final long sourceReturnCartonId = carton.getId();
|
||||
Map<String, Long> availableSku = returnCartonItems.lockCarton(sourceReturnCartonId).stream()
|
||||
.collect(Collectors.toMap(line -> line.getSkuCode().toUpperCase(java.util.Locale.ROOT),
|
||||
line -> remainingRelabelQuantity(sourceReturnCartonId, line), Long::sum));
|
||||
line -> "CARTON_LABEL".equals(operationType(item)) ? value(line.getQuantity())
|
||||
: remainingRelabelQuantity(sourceReturnCartonId, line), Long::sum));
|
||||
if (availableSku.values().stream().noneMatch(quantity -> quantity > 0))
|
||||
throw conflict("来源箱 SKU 已全部换标,没有剩余可换标数量");
|
||||
Map<String, Long> requestedSku = selectedReturnSkus.computeIfAbsent(carton.getId(), ignored -> new java.util.HashMap<>());
|
||||
|
||||
Reference in New Issue
Block a user