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.util.List; @Mapper public interface AppointmentContainerMapper { String FILTER = """ FROM ll_order o JOIN ll_container_shipping_gate g ON g.container_booking_id=o.source_container_booking_id WHERE o.order_type='FIRST_LEG' AND o.current_status NOT IN ('CANCELLED','COMPLETED') AND g.node_sequence >=40 AND o.overseas_warehouse_id IN #{id} AND o.source_container_booking_id=#{containerId} AND EXISTS(SELECT 1 FROM ll_order search_o WHERE search_o.source_container_booking_id=o.source_container_booking_id AND search_o.order_type='FIRST_LEG' AND search_o.current_status NOT IN ('CANCELLED','COMPLETED') AND search_o.overseas_warehouse_id IN #{id} AND (search_o.container_no LIKE CONCAT('%',#{keyword},'%') OR search_o.inbound_code LIKE CONCAT('%',#{keyword},'%'))) """; String GROUP = " GROUP BY o.source_container_booking_id,g.container_no,g.standard_node,g.aggregate_version "; @Select("") long count(@Param("origins") List origins, @Param("keyword") String keyword, @Param("containerId") String containerId); @Select("") List page(@Param("origins") List origins, @Param("keyword") String keyword, @Param("containerId") String containerId, @Param("size") int size, @Param("offset") long offset); @Select("") List warehouses(@Param("origins") List origins, @Param("containers") List containers); record WarehouseCount(String containerBookingId, String warehouseId, long orderCount, long customerCount) { } }