优化
This commit is contained in:
+15
-11
@@ -7,28 +7,30 @@ import java.util.List;
|
||||
/** Batch read of every actual source, never the representative MIN(order_id) on a shared pallet. */
|
||||
@Mapper
|
||||
public interface CustomerOrderProgressMapper {
|
||||
/** 本客户明细决定归属,真实主阶段和实际发车时间决定待排及在途数量。 */
|
||||
@Select("""
|
||||
<script>
|
||||
WITH scheduled AS (
|
||||
SELECT line.order_id,SUM(a.planned_package_count) AS packages
|
||||
FROM ll_dispatch_order d
|
||||
JOIN ll_dispatch_item i ON i.dispatch_order_id=d.id AND i.customer_id=d.customer_id
|
||||
JOIN ll_dispatch_item i ON i.dispatch_order_id=d.id
|
||||
JOIN ll_inbound_plan_pallet_allocation a ON a.pallet_id=i.plan_pallet_id
|
||||
JOIN ll_inbound_plan_line line ON line.id=a.line_id AND line.customer_id=d.customer_id
|
||||
JOIN ll_inbound_plan_line line ON line.id=a.line_id AND line.customer_id=i.customer_id
|
||||
<if test="orderIds != null">
|
||||
JOIN ll_order planned_source ON planned_source.id=line.order_id AND planned_source.customer_id=#{customerId}
|
||||
AND planned_source.source_order_id IN <foreach collection="orderIds" item="id" open="(" separator="," close=")">#{id}</foreach>
|
||||
</if>
|
||||
WHERE d.customer_id=#{customerId} AND d.status IN ('PENDING_DEPARTURE','PICKING','READY_TO_DEPART')
|
||||
WHERE i.customer_id=#{customerId} AND d.status='ACTIVE'
|
||||
AND d.stage IN ('BEFORE_LOADING','LOADING','AFTER_LOADING')
|
||||
AND i.warehouse_pallet_id IS NULL
|
||||
GROUP BY line.order_id
|
||||
UNION ALL
|
||||
SELECT b.inbound_order_id AS order_id,SUM(p.available_packages+COALESCE(pk.packages,0)) AS packages
|
||||
FROM ll_dispatch_order d
|
||||
JOIN ll_dispatch_item i ON i.dispatch_order_id=d.id AND i.customer_id=d.customer_id
|
||||
JOIN ll_inventory_position p ON p.customer_id=d.customer_id AND p.pallet_id=i.warehouse_pallet_id
|
||||
JOIN ll_dispatch_item i ON i.dispatch_order_id=d.id
|
||||
JOIN ll_inventory_position p ON p.customer_id=i.customer_id AND p.pallet_id=i.warehouse_pallet_id
|
||||
AND p.overseas_warehouse_id=i.overseas_warehouse_id
|
||||
JOIN ll_inventory_balance b ON b.id=p.balance_id AND b.customer_id=d.customer_id
|
||||
JOIN ll_inventory_balance b ON b.id=p.balance_id AND b.customer_id=i.customer_id
|
||||
<if test="orderIds != null">
|
||||
JOIN ll_order stock_source ON stock_source.id=b.inbound_order_id AND stock_source.customer_id=#{customerId}
|
||||
AND stock_source.source_order_id IN <foreach collection="orderIds" item="id" open="(" separator="," close=")">#{id}</foreach>
|
||||
@@ -47,10 +49,11 @@ public interface CustomerOrderProgressMapper {
|
||||
WHERE pick.customer_id=#{customerId}
|
||||
GROUP BY pick.dispatch_item_id,pick.inventory_position_id) pk
|
||||
ON pk.dispatch_item_id=i.id AND pk.inventory_position_id=p.id
|
||||
WHERE d.customer_id=#{customerId} AND d.status IN ('PENDING_DEPARTURE','PICKING','READY_TO_DEPART')
|
||||
WHERE i.customer_id=#{customerId} AND d.status='ACTIVE'
|
||||
AND d.stage IN ('BEFORE_LOADING','LOADING','AFTER_LOADING')
|
||||
AND (i.plan_pallet_id IS NULL OR EXISTS (
|
||||
SELECT 1 FROM ll_inbound_plan_pallet_allocation a
|
||||
JOIN ll_inbound_plan_line line ON line.id=a.line_id AND line.customer_id=d.customer_id
|
||||
JOIN ll_inbound_plan_line line ON line.id=a.line_id AND line.customer_id=i.customer_id
|
||||
<if test="orderIds != null">
|
||||
JOIN ll_order planned_source ON planned_source.id=line.order_id AND planned_source.customer_id=#{customerId}
|
||||
AND planned_source.source_order_id IN <foreach collection="orderIds" item="id" open="(" separator="," close=")">#{id}</foreach>
|
||||
@@ -61,14 +64,15 @@ public interface CustomerOrderProgressMapper {
|
||||
SELECT a.order_id,SUM(a.packages) AS packages
|
||||
FROM ll_dispatch_pda_pick_order a
|
||||
JOIN ll_dispatch_pda_pick p ON p.id=a.pick_id AND p.customer_id=a.customer_id
|
||||
JOIN ll_dispatch_pda_task t ON t.id=p.task_id AND t.customer_id=a.customer_id
|
||||
JOIN ll_dispatch_order ds ON ds.id=t.dispatch_order_id AND ds.customer_id=a.customer_id
|
||||
JOIN ll_dispatch_pda_task t ON t.id=p.task_id
|
||||
JOIN ll_dispatch_order ds ON ds.id=t.dispatch_order_id
|
||||
JOIN ll_dispatch_item i ON i.id=p.dispatch_item_id AND i.dispatch_order_id=ds.id AND i.customer_id=a.customer_id
|
||||
<if test="orderIds != null">
|
||||
JOIN ll_order departed_source ON departed_source.id=a.order_id AND departed_source.customer_id=#{customerId}
|
||||
AND departed_source.source_order_id IN <foreach collection="orderIds" item="id" open="(" separator="," close=")">#{id}</foreach>
|
||||
</if>
|
||||
WHERE a.customer_id=#{customerId} AND ds.status='DEPARTED' AND ds.depart_at IS NOT NULL
|
||||
WHERE a.customer_id=#{customerId} AND ds.status='ACTIVE' AND ds.stage='DELIVERING'
|
||||
AND ds.departed_at IS NOT NULL
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM ll_delivery_order d
|
||||
JOIN ll_outbound_order outb ON outb.id=d.outbound_order_id AND outb.customer_id=d.customer_id
|
||||
|
||||
Reference in New Issue
Block a user