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) { }
}