diff --git a/lastleg-service/src/main/java/com/baiyue/lastleg/transfer/dto/WarehouseTransferResponses.java b/lastleg-service/src/main/java/com/baiyue/lastleg/transfer/dto/WarehouseTransferResponses.java index 7a3ece053..e8dfb55fb 100644 --- a/lastleg-service/src/main/java/com/baiyue/lastleg/transfer/dto/WarehouseTransferResponses.java +++ b/lastleg-service/src/main/java/com/baiyue/lastleg/transfer/dto/WarehouseTransferResponses.java @@ -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, diff --git a/lastleg-service/src/main/java/com/baiyue/lastleg/transfer/mapper/WarehouseTransferPalletMapper.java b/lastleg-service/src/main/java/com/baiyue/lastleg/transfer/mapper/WarehouseTransferPalletMapper.java index fb9361e0e..4f0454b43 100644 --- a/lastleg-service/src/main/java/com/baiyue/lastleg/transfer/mapper/WarehouseTransferPalletMapper.java +++ b/lastleg-service/src/main/java/com/baiyue/lastleg/transfer/mapper/WarehouseTransferPalletMapper.java @@ -10,6 +10,15 @@ import java.util.List; @Mapper public interface WarehouseTransferPalletMapper extends BaseMapper { + record MeasurementTime(Long transferOrderId, java.time.LocalDateTime measuredAt) {} + + @Select("") + List measurementTimes(@Param("orderIds") List orderIds); + @Select("SELECT * FROM ll_warehouse_transfer_pallet WHERE customer_id=#{customerId} AND transfer_order_id=#{transferOrderId} ORDER BY sequence_no") List listOrder(@Param("customerId") String customerId, @Param("transferOrderId") Long transferOrderId); diff --git a/lastleg-service/src/main/java/com/baiyue/lastleg/transfer/service/WarehouseTransferService.java b/lastleg-service/src/main/java/com/baiyue/lastleg/transfer/service/WarehouseTransferService.java index 075c443e8..662c8482b 100644 --- a/lastleg-service/src/main/java/com/baiyue/lastleg/transfer/service/WarehouseTransferService.java +++ b/lastleg-service/src/main/java/com/baiyue/lastleg/transfer/service/WarehouseTransferService.java @@ -428,6 +428,7 @@ public class WarehouseTransferService { .orderByDesc(WarehouseTransferOrder::getCreatedAt).orderByDesc(WarehouseTransferOrder::getId); Page result = transfers.selectPage(Page.of(query.page(), query.size()), wrapper); Map relabelApplicationsByNo = relabelApplications(result.getRecords()); + Map measurementTimes = measurementTimes(result.getRecords()); List 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 measurementTimes(List 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 relabelApplications(List transferOrders) { Set relabelNos = transferOrders.stream().map(WarehouseTransferOrder::getRelabelNo) .filter(StringUtils::hasText).collect(Collectors.toSet()); diff --git a/lastleg-service/src/test/java/com/baiyue/lastleg/transfer/service/WarehouseTransferServiceTest.java b/lastleg-service/src/test/java/com/baiyue/lastleg/transfer/service/WarehouseTransferServiceTest.java index d3c3dc809..1462a23af 100644 --- a/lastleg-service/src/test/java/com/baiyue/lastleg/transfer/service/WarehouseTransferServiceTest.java +++ b/lastleg-service/src/test/java/com/baiyue/lastleg/transfer/service/WarehouseTransferServiceTest.java @@ -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 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()); }