fix(delivery): project current dispatched cargo instead of whole order SKU quantities

This commit is contained in:
2026-10-04 02:54:52 +08:00
parent 9cd709edee
commit c46a68e32b
4 changed files with 180 additions and 3 deletions
@@ -11,6 +11,26 @@ import java.util.List;
@Mapper
public interface DispatchPdaPickOrderMapper extends BaseMapper<DispatchPdaPickOrder> {
/** Current dispatch pick quantities; mixed/unknown SKU identities remain unknown. */
@Select("""
SELECT p.dispatch_item_id AS dispatchItemId,a.order_id AS orderId,
CASE WHEN a.receipt_id IS NOT NULL THEN i.sku_code ELSE b.sku_code END AS skuCode,
CASE WHEN a.receipt_id IS NOT NULL THEN i.product_name_zh ELSE b.product_name_zh END AS productName,
COALESCE(a.packages,p.packages) AS packages
FROM ll_dispatch_pda_task t
JOIN ll_dispatch_pda_pick p ON p.task_id=t.id AND BINARY p.customer_id=BINARY t.customer_id
LEFT JOIN ll_dispatch_pda_pick_order a ON a.pick_id=p.id AND BINARY a.customer_id=BINARY p.customer_id
LEFT JOIN ll_inbound_stock_receipt i ON i.id=a.receipt_id AND BINARY i.customer_id=BINARY a.customer_id
LEFT JOIN ll_inventory_position ip ON ip.id=p.inventory_position_id AND BINARY ip.customer_id=BINARY p.customer_id
LEFT JOIN ll_inventory_balance b ON b.id=ip.balance_id AND BINARY b.customer_id=BINARY ip.customer_id
WHERE BINARY t.customer_id=BINARY #{customerId} AND t.dispatch_order_id=#{dispatchId}
ORDER BY p.id,a.id
""")
List<DeliveryPickedSku> deliveryPickedSkus(@Param("customerId") String customerId,
@Param("dispatchId") Long dispatchId);
record DeliveryPickedSku(Long dispatchItemId, Long orderId, String skuCode, String productName, Long packages) {}
@Select("SELECT DISTINCT r.* FROM ll_inventory_position current_position " +
"JOIN ll_inventory_position receipt_position ON receipt_position.balance_id=current_position.balance_id " +
"JOIN ll_inbound_stock_receipt r ON r.inventory_position_id=receipt_position.id " +