贴标申请,仓储转运
This commit is contained in:
+2
-1
@@ -36,7 +36,8 @@ public final class WarehouseTransferResponses {
|
||||
String destinationType, String destinationWarehouseCode, String destinationWarehouseName,
|
||||
int packageCount, String deliveryMethod, boolean needRelabel, String relabelNo,
|
||||
String relabelStatus, String relabelFulfillmentStatus,
|
||||
String status, LocalDateTime estimatedArrivalAt, LocalDateTime createdAt) {}
|
||||
String status, LocalDateTime estimatedArrivalAt, LocalDateTime createdAt,
|
||||
LocalDateTime reviewedAt, LocalDateTime measuredAt, LocalDateTime outboundAt) {}
|
||||
public record Detail(Long id, String transferNo, Long inboundOrderId, String inboundCode,
|
||||
Long lastlegOrderId, String lastlegOrderNo, String orderType, String orderStatus,
|
||||
String status,
|
||||
|
||||
+9
@@ -10,6 +10,15 @@ import java.util.List;
|
||||
|
||||
@Mapper
|
||||
public interface WarehouseTransferPalletMapper extends BaseMapper<WarehouseTransferPallet> {
|
||||
record MeasurementTime(Long transferOrderId, java.time.LocalDateTime measuredAt) {}
|
||||
|
||||
@Select("<script>SELECT p.transfer_order_id AS transferOrderId,MAX(p.completed_at) AS measuredAt " +
|
||||
"FROM ll_warehouse_transfer_pallet p JOIN ll_warehouse_transfer_order t " +
|
||||
"ON t.id=p.transfer_order_id AND t.customer_id=p.customer_id " +
|
||||
"WHERE t.id IN <foreach collection='orderIds' item='id' open='(' separator=',' close=')'>#{id}</foreach> " +
|
||||
"AND p.completed_at IS NOT NULL GROUP BY p.transfer_order_id</script>")
|
||||
List<MeasurementTime> measurementTimes(@Param("orderIds") List<Long> orderIds);
|
||||
|
||||
@Select("SELECT * FROM ll_warehouse_transfer_pallet WHERE customer_id=#{customerId} AND transfer_order_id=#{transferOrderId} ORDER BY sequence_no")
|
||||
List<WarehouseTransferPallet> listOrder(@Param("customerId") String customerId,
|
||||
@Param("transferOrderId") Long transferOrderId);
|
||||
|
||||
+11
-2
@@ -428,6 +428,7 @@ public class WarehouseTransferService {
|
||||
.orderByDesc(WarehouseTransferOrder::getCreatedAt).orderByDesc(WarehouseTransferOrder::getId);
|
||||
Page<WarehouseTransferOrder> result = transfers.selectPage(Page.of(query.page(), query.size()), wrapper);
|
||||
Map<String, RelabelApplication> relabelApplicationsByNo = relabelApplications(result.getRecords());
|
||||
Map<Long, LocalDateTime> measurementTimes = measurementTimes(result.getRecords());
|
||||
List<WarehouseTransferResponses.Summary> records = result.getRecords().stream().map(value ->
|
||||
new WarehouseTransferResponses.Summary(value.getId(), value.getTransferNo(), value.getInboundCode(),
|
||||
value.getLastlegOrderId(), value.getLastlegOrderNo(), value.getOperatingWarehouseId(),
|
||||
@@ -439,7 +440,8 @@ public class WarehouseTransferService {
|
||||
value.getRelabelNo() == null || relabelApplicationsByNo.get(value.getRelabelNo()) == null
|
||||
? null : relabelApplicationsByNo.get(value.getRelabelNo()).getFulfillmentStatus(),
|
||||
value.getStatus(),
|
||||
value.getEstimatedArrivalAt(), value.getCreatedAt())).toList();
|
||||
value.getEstimatedArrivalAt(), value.getCreatedAt(), value.getReviewedAt(),
|
||||
measurementTimes.get(value.getId()), value.getOutboundAt())).toList();
|
||||
return new PageResult<>(records, result.getCurrent(), result.getSize(), result.getTotal(), result.getPages());
|
||||
}
|
||||
|
||||
@@ -1320,10 +1322,17 @@ public class WarehouseTransferService {
|
||||
relabel == null ? null : relabel.getStatus(),
|
||||
relabel == null ? null : relabel.getFulfillmentStatus(),
|
||||
value.getStatus(),
|
||||
value.getEstimatedArrivalAt(), value.getCreatedAt());
|
||||
value.getEstimatedArrivalAt(), value.getCreatedAt(), value.getReviewedAt(), null, value.getOutboundAt());
|
||||
}).toList();
|
||||
}
|
||||
|
||||
private Map<Long, LocalDateTime> measurementTimes(List<WarehouseTransferOrder> transferOrders) {
|
||||
if (transferOrders.isEmpty()) return Map.of();
|
||||
return transferPallets.measurementTimes(transferOrders.stream().map(WarehouseTransferOrder::getId).toList())
|
||||
.stream().collect(Collectors.toMap(WarehouseTransferPalletMapper.MeasurementTime::transferOrderId,
|
||||
WarehouseTransferPalletMapper.MeasurementTime::measuredAt));
|
||||
}
|
||||
|
||||
private Map<String, RelabelApplication> relabelApplications(List<WarehouseTransferOrder> transferOrders) {
|
||||
Set<String> relabelNos = transferOrders.stream().map(WarehouseTransferOrder::getRelabelNo)
|
||||
.filter(StringUtils::hasText).collect(Collectors.toSet());
|
||||
|
||||
+12
@@ -126,6 +126,12 @@ class WarehouseTransferServiceTest {
|
||||
WarehouseTransferOrder transfer = transfer(WarehouseTransferService.WAIT_RELABEL);
|
||||
transfer.setNeedRelabel(true);
|
||||
transfer.setRelabelNo("RL-20260923-000001");
|
||||
var reviewedAt = LocalDateTime.of(2026, 10, 9, 15, 36, 14);
|
||||
var measuredAt = reviewedAt.plusNanos(300_000_000);
|
||||
var outboundAt = reviewedAt.plusSeconds(2);
|
||||
transfer.setReviewedAt(reviewedAt); transfer.setOutboundAt(outboundAt);
|
||||
when(transferPallets.measurementTimes(List.of(transfer.getId()))).thenReturn(List.of(
|
||||
new WarehouseTransferPalletMapper.MeasurementTime(transfer.getId(), measuredAt)));
|
||||
Page<WarehouseTransferOrder> resultPage = new Page<>(1, 20, 1);
|
||||
resultPage.setRecords(List.of(transfer));
|
||||
RelabelApplication relabel = new RelabelApplication();
|
||||
@@ -141,6 +147,9 @@ class WarehouseTransferServiceTest {
|
||||
assertEquals("RL-20260923-000001", result.records().get(0).relabelNo());
|
||||
assertEquals("COMPLETED", result.records().get(0).relabelStatus());
|
||||
assertEquals("READY_FOR_DISPATCH", result.records().get(0).relabelFulfillmentStatus());
|
||||
assertEquals(reviewedAt, result.records().get(0).reviewedAt());
|
||||
assertEquals(measuredAt, result.records().get(0).measuredAt());
|
||||
assertEquals(outboundAt, result.records().get(0).outboundAt());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -157,6 +166,9 @@ class WarehouseTransferServiceTest {
|
||||
assertEquals(1, result.records().size());
|
||||
assertNull(result.records().get(0).relabelStatus());
|
||||
assertNull(result.records().get(0).relabelFulfillmentStatus());
|
||||
assertNull(result.records().get(0).reviewedAt());
|
||||
assertNull(result.records().get(0).measuredAt());
|
||||
assertNull(result.records().get(0).outboundAt());
|
||||
verify(relabelApplications, never()).selectList(any());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user