feat(lastleg): connect appointment followups and fleet intake
This commit is contained in:
+45
@@ -0,0 +1,45 @@
|
||||
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 AppointmentCargoMapper {
|
||||
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.destination_type='FBA' AND g.node_sequence >=40
|
||||
AND o.current_status NOT IN ('CANCELLED','COMPLETED')
|
||||
AND o.overseas_warehouse_id IN
|
||||
<foreach collection='origins' item='id' open='(' separator=',' close=')'>#{id}</foreach>
|
||||
AND o.fba_warehouse_code IN
|
||||
<foreach collection='destinations' item='code' open='(' separator=',' close=')'>#{code}</foreach>
|
||||
<if test='warehouseId != null'>AND o.overseas_warehouse_id=#{warehouseId}</if>
|
||||
<if test='destination != null'>AND o.fba_warehouse_code=#{destination}</if>
|
||||
<if test='keyword != null'>AND (o.inbound_code LIKE CONCAT('%',#{keyword},'%') OR o.container_no LIKE CONCAT('%',#{keyword},'%') OR o.customer_name LIKE CONCAT('%',#{keyword},'%'))</if>
|
||||
""";
|
||||
|
||||
@Select("<script>SELECT COUNT(*) " + FILTER + "</script>")
|
||||
long count(@Param("origins") List<String> origins, @Param("destinations") List<String> destinations,
|
||||
@Param("warehouseId") String warehouseId, @Param("destination") String destination, @Param("keyword") String keyword);
|
||||
|
||||
@Select("<script>" + """
|
||||
SELECT CONCAT('ORDER:',o.id) AS source_key,o.id AS order_id,o.customer_id,o.customer_name,o.inbound_code,
|
||||
o.source_container_booking_id AS container_booking_id,o.container_no,
|
||||
o.overseas_warehouse_id AS origin_warehouse_id,o.overseas_warehouse_code AS origin_warehouse_code,
|
||||
o.overseas_warehouse_name AS origin_warehouse_name,o.fba_warehouse_code AS destination_warehouse_code,
|
||||
o.package_count AS packages,o.received_package_count AS received_packages,o.shipped_package_count AS shipped_packages,
|
||||
o.pallet_count AS source_pallet_count,o.volume_cbm,o.estimated_arrival_at,o.estimated_warehouse_at,
|
||||
o.version AS order_version,g.standard_node,g.aggregate_version AS shipping_version,
|
||||
g.observed_at AS shipping_observed_at,g.provider_code AS shipping_provider,o.detained,
|
||||
EXISTS(SELECT 1 FROM ll_inbound_plan p WHERE p.source_order_id=o.id AND p.customer_id=o.customer_id) AS has_inbound_plan,
|
||||
EXISTS(SELECT 1 FROM ll_inbound_fba_appointment_item i JOIN ll_inbound_fba_appointment a ON a.id=i.appointment_id
|
||||
WHERE i.order_id=o.id AND i.customer_id=o.customer_id AND a.appointment_status NOT IN ('CANCELLED','FAILED')) AS has_active_appointment,
|
||||
EXISTS(SELECT 1 FROM ll_order_detail d WHERE d.order_id=o.id AND d.customer_id=o.customer_id
|
||||
AND d.destination_warehouse_code IS NOT NULL AND d.destination_warehouse_code<>o.fba_warehouse_code) AS mixed_destinations
|
||||
""" + FILTER + " ORDER BY o.created_at DESC,o.id DESC LIMIT #{size} OFFSET #{offset}</script>")
|
||||
List<AppointmentCargo> page(@Param("origins") List<String> origins, @Param("destinations") List<String> destinations,
|
||||
@Param("warehouseId") String warehouseId, @Param("destination") String destination,
|
||||
@Param("keyword") String keyword, @Param("size") int size, @Param("offset") long offset);
|
||||
}
|
||||
Reference in New Issue
Block a user