package com.baiyue.lastleg.appointmentplanning; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.time.LocalDateTime; import java.util.List; @Mapper public interface AppointmentCoverageMapper { String DESTINATION_TYPE="CASE WHEN o.order_type='WAREHOUSE_TRANSFER' THEN wt.destination_type ELSE o.destination_type END"; String DESTINATION_CODE="CASE WHEN o.order_type='WAREHOUSE_TRANSFER' THEN wt.destination_warehouse_code ELSE o.fba_warehouse_code END"; String SHIPMENT_MISSING="CASE WHEN o.order_type='WAREHOUSE_TRANSFER' THEN (wt.id IS NULL OR ((wt.fba_shipment_no IS NULL OR TRIM(wt.fba_shipment_no)='') AND (wt.tracking_no IS NULL OR TRIM(wt.tracking_no)=''))) ELSE " + "(NOT EXISTS(SELECT 1 FROM ll_order_detail d WHERE d.order_id=o.id AND d.customer_id=o.customer_id) OR EXISTS(SELECT 1 FROM ll_order_detail d WHERE d.order_id=o.id AND d.customer_id=o.customer_id AND (d.shipment_no IS NULL OR TRIM(d.shipment_no)='') AND (d.fba_tracking_no IS NULL OR TRIM(d.fba_tracking_no)=''))) END"; String TRANSFER_JOIN=" LEFT JOIN ll_warehouse_transfer_order wt ON o.order_type='WAREHOUSE_TRANSFER' AND wt.lastleg_order_id=o.id AND wt.customer_id=o.customer_id "; record OrderRef(String customerId, Long orderId) { } record Source(Long orderId, String customerId, String destinationType, String fbaWarehouseCode, Integer packages, Integer version, LocalDateTime updatedAt, boolean shipmentReferencesMissing) { } record Fact(Long orderId, String customerId, String appointmentNo, String status, LocalDateTime appointmentAt, LocalDateTime appointmentEndAt, LocalDateTime updatedAt, Long itemId, Integer packages, String warehouseCode,String sourceKey,String sourceVersion, String confirmationNo,String timezone,Integer cargoVerificationVersion) { } @Select({""}) List sources(@Param("sources") List sources); @Select({""}) List appointments(@Param("sources") List sources); @Select({""}) List verifications(@Param("sources") List sources); }