fix: merge multi-pallet dropship handover fragments

This commit is contained in:
2026-09-14 15:44:51 +08:00
parent fe888f9278
commit 13d2fe8e3a
4 changed files with 141 additions and 16 deletions
@@ -147,6 +147,32 @@ class LoadingCompletedConsumerTest {
verify(cartons,never()).insert(any(com.baiyue.lastleg.inboundplan.entity.InboundPlanCarton.class));
verify(orders,never()).insert(any(LastlegOrder.class));
}
@Test void consumesOneDropshipSourceDetailSplitAcrossTwoPallets() {
EventEnvelope original=overseasDropshipEvent(false);
var node=(com.fasterxml.jackson.databind.node.ObjectNode)original.payload().deepCopy();
var order=(com.fasterxml.jackson.databind.node.ObjectNode)node.path("orders").get(0);
var secondItem=(com.fasterxml.jackson.databind.node.ObjectNode)order.path("items").get(0).deepCopy();
((com.fasterxml.jackson.databind.node.ArrayNode)order.path("items")).add(secondItem);
order.put("packageCount",10).put("productQuantity",100).put("palletCount",2);
var secondPallet=(com.fasterxml.jackson.databind.node.ObjectNode)order.path("pallets").get(0).deepCopy();
secondPallet.put("palletNo","DP-260914-0022");
var secondSku=(com.fasterxml.jackson.databind.node.ObjectNode)secondPallet.path("skuPackages").get(0);
var marks=secondSku.putArray("cartonMarks"); for(int n=6;n<=10;n++)marks.add("RK1#10-"+n);
((com.fasterxml.jackson.databind.node.ArrayNode)order.path("pallets")).add(secondPallet);
service.consume(rehash(original,node));
var detailCaptor=ArgumentCaptor.forClass(LastlegOrderDetail.class);
verify(details).insert(detailCaptor.capture());
assertEquals("d-1",detailCaptor.getValue().getSourceInboundDetailId());
assertEquals(10,detailCaptor.getValue().getPackageCount());
assertEquals(100,detailCaptor.getValue().getProductQuantity());
verify(cartons,times(10)).insert(any(com.baiyue.lastleg.inboundplan.entity.InboundPlanCarton.class));
var received=ArgumentCaptor.forClass(DropshipRequests.Receive.class);
verify(dropshipOrders).receive(received.capture());
assertEquals(List.of("DP-260909-0143","DP-260914-0022"),
received.getValue().pallets().stream().map(DropshipRequests.Pallet::palletNo).toList());
}
@Test void mapsSameSkuDifferentSourceDetailsWithoutGuessing() {
EventEnvelope original=overseasDropshipEvent(false);
var node=(com.fasterxml.jackson.databind.node.ObjectNode)original.payload().deepCopy();