feat(lastleg): query commercial sources independently of fulfillment types
This commit is contained in:
@@ -16,6 +16,25 @@ import java.math.BigDecimal;
|
||||
|
||||
@Mapper
|
||||
public interface LastlegOrderMapper extends BaseMapper<LastlegOrder> {
|
||||
// Correlate both order identity and customer; never infer a business source from remarks.
|
||||
String POOL_SOURCE_WHERE = " FROM ll_fleet_pool_order_link l WHERE l.lastleg_order_id=ll_order.id " +
|
||||
"AND l.customer_id=ll_order.customer_id AND ll_order.order_type='WAREHOUSE_TRANSFER'";
|
||||
String BUSINESS_TYPE_SQL = "COALESCE((SELECT l.business_type" + POOL_SOURCE_WHERE + "),ll_order.order_type)";
|
||||
String BUSINESS_ORDER_NO_SQL = "COALESCE((SELECT l.business_order_no" + POOL_SOURCE_WHERE +
|
||||
"),CASE WHEN ll_order.order_type='LOCAL_LOOSEBOARD' THEN ll_order.source_order_no END)";
|
||||
String EXTERNAL_BOOKING_NO_SQL = "(SELECT b.booking_no FROM ll_fleet_external_booking b " +
|
||||
"WHERE b.customer_id=ll_order.customer_id AND b.incoming_no=ll_order.source_order_no " +
|
||||
"AND ll_order.order_type='WAREHOUSE_TRANSFER')";
|
||||
|
||||
@Select("<script>SELECT ll_order.id AS orderId," + BUSINESS_TYPE_SQL + " AS businessType," +
|
||||
BUSINESS_ORDER_NO_SQL + " AS businessOrderNo," + EXTERNAL_BOOKING_NO_SQL + " AS externalBookingNo," +
|
||||
"EXISTS(SELECT 1" + POOL_SOURCE_WHERE + ") AS poolSource FROM ll_order WHERE ll_order.id IN " +
|
||||
"<foreach collection='orderIds' item='id' open='(' separator=',' close=')'>#{id}</foreach></script>")
|
||||
List<BusinessSourceRow> findBusinessSources(@Param("orderIds") List<Long> orderIds);
|
||||
|
||||
record BusinessSourceRow(Long orderId, String businessType, String businessOrderNo,
|
||||
String externalBookingNo, boolean poolSource) { }
|
||||
|
||||
// Manual node snapshots replace container nodes permanently for the order.
|
||||
String SAILING_STAGE_FILTER_SQL = "(ll_order.order_type='FIRST_LEG' AND " +
|
||||
"(CASE WHEN COALESCE(ll_order.manual_node_override,FALSE)=TRUE THEN " +
|
||||
|
||||
Reference in New Issue
Block a user