贴标申请,仓储转运
This commit is contained in:
@@ -136,8 +136,8 @@ class RelabelContractTest {
|
||||
void returnCartonConstraintsAllowRelabelReservationWithPositiveInventory() throws Exception {
|
||||
String baseline = Files.readString(Path.of("src/main/resources/db/lastleg.sql"), StandardCharsets.UTF_8)
|
||||
.replaceAll("\\s+", "").toUpperCase();
|
||||
assertTrue(baseline.contains("STATUSIN('AVAILABLE','RELABEL_PENDING','OUTBOUNDED','DISCARD_PENDING')ANDSKU_TYPES>0ANDTOTAL_QUANTITY>0"));
|
||||
assertTrue(baseline.contains("STATUSIN('AVAILABLE','PACKING_RESERVED','RELABEL_PENDING','OUTBOUND_PENDING','OUTBOUNDED','DISCARD_PENDING')ANDSKU_TYPES>0ANDTOTAL_QUANTITY>0"));
|
||||
assertTrue(baseline.contains("STATUSIN('MERGED','DISCARDED')ANDSKU_TYPES=0ANDTOTAL_QUANTITY=0"));
|
||||
assertTrue(baseline.contains("STATUSIN('AVAILABLE','RELABEL_PENDING','MERGED','OUTBOUNDED','DISCARD_PENDING','DISCARDED')"));
|
||||
assertTrue(baseline.contains("STATUSIN('AVAILABLE','PACKING_RESERVED','RELABEL_PENDING','OUTBOUND_PENDING','MERGED','OUTBOUNDED','DISCARD_PENDING','DISCARDED')"));
|
||||
}
|
||||
}
|
||||
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
package com.baiyue.lastleg.relabel.service;
|
||||
|
||||
import com.baiyue.lastleg.delivery.entity.DeliveryOrder;
|
||||
import com.baiyue.lastleg.delivery.mapper.*;
|
||||
import com.baiyue.lastleg.relabel.entity.*;
|
||||
import com.baiyue.lastleg.relabel.mapper.RelabelItemMapper;
|
||||
import com.baiyue.lastleg.returnreceipt.entity.ReturnInventoryCarton;
|
||||
import com.baiyue.lastleg.returnreceipt.mapper.ReturnInventoryCartonMapper;
|
||||
import com.baiyue.lastleg.service.LastlegOrderNoGenerator;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.test.util.ReflectionTestUtils;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import static org.mockito.Mockito.*;
|
||||
import static org.mockito.ArgumentMatchers.*;
|
||||
|
||||
class ReturnRelabelDeliveryTest {
|
||||
@Test void directNativeRelabelCreatesTwoPhysicalBoxesAndOneDeliveryPerDestination() {
|
||||
var service = new RelabelApplicationService();
|
||||
var items = mock(RelabelItemMapper.class);
|
||||
var cartons = mock(ReturnInventoryCartonMapper.class);
|
||||
var deliveries = mock(DeliveryOrderMapper.class);
|
||||
ReflectionTestUtils.setField(service, "items", items);
|
||||
ReflectionTestUtils.setField(service, "returnCartons", cartons);
|
||||
ReflectionTestUtils.setField(service, "deliveryOrders", deliveries);
|
||||
ReflectionTestUtils.setField(service, "outboundOrders", mock(OutboundOrderMapper.class));
|
||||
ReflectionTestUtils.setField(service, "outboundItems", mock(OutboundPalletItemMapper.class));
|
||||
ReflectionTestUtils.setField(service, "outboundTasks", mock(OutboundPdaTaskMapper.class));
|
||||
ReflectionTestUtils.setField(service, "orderNoGenerator", new LastlegOrderNoGenerator());
|
||||
ReflectionTestUtils.setField(service, "objectMapper", new ObjectMapper());
|
||||
var application = new RelabelApplication(); application.setId(1L); application.setCustomerId("C1");
|
||||
application.setRelabelNo("REL1"); application.setOverseasWarehouseId("WH1"); application.setDeliveryMethod("EXPRESS");
|
||||
var a = source(10L, "A"); var b = source(11L, "B");
|
||||
when(items.selectList(any())).thenReturn(List.of(a, b));
|
||||
for (var item : List.of(a, b)) {
|
||||
var carton = new ReturnInventoryCarton(); carton.setId(item.getReturnCartonId());
|
||||
carton.setCustomerId("C1"); carton.setRelabelApplicationId(1L); carton.setStatus("RELABEL_PENDING");
|
||||
when(cartons.lockId(carton.getId())).thenReturn(carton);
|
||||
}
|
||||
ReflectionTestUtils.invokeMethod(service, "createDirectOutbound", application, "OP1", LocalDateTime.now());
|
||||
verify(deliveries, times(2)).insert(any(DeliveryOrder.class));
|
||||
verify(deliveries).insert(argThat((DeliveryOrder d) -> "A".equals(d.getDestinationWarehouseCode())
|
||||
&& d.getPackageCount() == 1 && "WAIT_DELIVERY".equals(d.getStatus())
|
||||
&& application.getOutboundOrderNo().equals(d.getOutboundNo())));
|
||||
verify(deliveries).insert(argThat((DeliveryOrder d) -> "B".equals(d.getDestinationWarehouseCode()) && d.getPackageCount() == 1));
|
||||
}
|
||||
private RelabelItem source(long id, String destination) {
|
||||
var item = new RelabelItem(); item.setId(id); item.setReturnCartonId(id);
|
||||
item.setNotifiedPackageCount(1); item.setSourceCartonMark("RC" + id + "#1-1");
|
||||
item.setDestinationFbaWarehouseCode(destination); return item;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user