From 27a89a6ff36d4004f1a93808f7efe84c278072c8 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Thu, 8 Oct 2026 15:12:47 +0800 Subject: [PATCH] fix(lastleg): filter domestic first-leg orders by sailing stage --- .../lastleg/dto/LastlegOrderRequests.java | 5 +- .../lastleg/mapper/LastlegOrderMapper.java | 10 +++ .../lastleg/service/LastlegOrderService.java | 2 + .../openapi/overseas-business-v1.yaml | 5 ++ .../LastlegOrderControllerTest.java | 6 +- .../MerchantLastlegOrderControllerTest.java | 2 +- .../service/LastlegOrderSailingStageTest.java | 82 +++++++++++++++++++ .../service/LastlegOrderServiceTest.java | 10 +-- 8 files changed, 112 insertions(+), 10 deletions(-) create mode 100644 lastleg-service/src/test/java/com/baiyue/lastleg/service/LastlegOrderSailingStageTest.java diff --git a/lastleg-service/src/main/java/com/baiyue/lastleg/dto/LastlegOrderRequests.java b/lastleg-service/src/main/java/com/baiyue/lastleg/dto/LastlegOrderRequests.java index 6b1262676..9be19ed6f 100644 --- a/lastleg-service/src/main/java/com/baiyue/lastleg/dto/LastlegOrderRequests.java +++ b/lastleg-service/src/main/java/com/baiyue/lastleg/dto/LastlegOrderRequests.java @@ -18,6 +18,8 @@ public final class LastlegOrderRequests { private LastlegOrderRequests() { } + public enum SailingStage { BEFORE_DEPARTURE, AFTER_DEPARTURE } + public record Query( @Min(1) Long page, @Min(1) @Max(200) Long size, @@ -34,7 +36,8 @@ public final class LastlegOrderRequests { Boolean abnormal, Boolean detained, LocalDateTime createdFrom, - LocalDateTime createdTo + LocalDateTime createdTo, + SailingStage sailingStage ) { public Query { if (page == null || page == 0) page = 1L; diff --git a/lastleg-service/src/main/java/com/baiyue/lastleg/mapper/LastlegOrderMapper.java b/lastleg-service/src/main/java/com/baiyue/lastleg/mapper/LastlegOrderMapper.java index ac6290793..e2c1f5ec0 100644 --- a/lastleg-service/src/main/java/com/baiyue/lastleg/mapper/LastlegOrderMapper.java +++ b/lastleg-service/src/main/java/com/baiyue/lastleg/mapper/LastlegOrderMapper.java @@ -16,6 +16,16 @@ import java.math.BigDecimal; @Mapper public interface LastlegOrderMapper extends BaseMapper { + // Manual node snapshots replace container nodes permanently for the order. + String SAILING_STAGE_FILTER_SQL = "(ll_order.order_type='FIRST_LEG' AND ll_order.source_region='FIRSTLEG' AND " + + "(CASE WHEN COALESCE(ll_order.manual_node_override,FALSE)=TRUE THEN " + + "CASE WHEN EXISTS (SELECT 1 FROM ll_order_manual_node n WHERE n.order_id=ll_order.id " + + "AND n.customer_id=ll_order.customer_id AND n.node_code='ACTUAL_DEPARTURE' AND n.node_at IS NOT NULL) " + + "THEN 1 ELSE 0 END ELSE " + + "CASE WHEN EXISTS (SELECT 1 FROM ll_container_shipping_gate g " + + "WHERE g.container_booking_id=ll_order.source_container_booking_id " + + "AND g.node_sequence>=40 AND g.actual_at IS NOT NULL) THEN 1 ELSE 0 END END)={0})"; + @Select("