需求背景:建单待发的库存数据原为打标表从v2同步,延迟情况较多,出现问题时也无法复现排查,为解决库存不准确的问题改为读取原表查询。
需求内容:
所有智能备货服务中查询全链路库存中的建单待发库存数量改成读取erp原表,sql参考:
SELECT
o.CustomerID as customer_id,
o.OrderSourceID as source_id,
l.SellerSKU msku,
Sum(l.ProductNum + l.ProductNumUpdate - Isnull(pod.ProductNum, 0)) / Isnull (( SELECT Sum(SkuNum) AS Expr1
FROM dbo.RB_Product_GroupSku AS g WITH (NOLOCK) WHERE g.CustomerID = o.CustomerID AND ( GroupSku = ( CASE WHEN ISnull(l.GroupSKU,'') = '' THEN l.SKU ELSE l.GroupSKU END ) )), 1) AS product_num,
( CASE WHEN ISnull(l.GroupSKU,'') = '' THEN l.SKU ELSE l.GroupSKU END ) as sku,
o.ToWareHouseID as to_warehouse_id
FROM dbo.RB_OrderInfo AS o WITH (NOLOCK)
INNER JOIN dbo.RB_OrderSource s ON o.OrderSourceID = s.ID AND o.CustomerID = s.CustomerID
INNER JOIN dbo.RB_OrderList AS l WITH (NOLOCK) ON o.OrderCode = l.OrderCode AND o.CustomerID = l.CustomerID
LEFT JOIN dbo.RB_OrderInfo_BeikuExpand h WITH (NOLOCK) ON o.OrderCode = h.OrderCode AND o.CustomerID = h.CustomerID
LEFT JOIN ( SELECT d.OrderCode, OrderListID, d.CustomerID, Sum(ProductNum) AS ProductNum FROM RB_Procurement_Order_Package p WITH (NOLOCK)
INNER JOIN dbo.RB_Procurement_Order_Package_OrderDetail d WITH (NOLOCK) ON d.CustomerID = p.CustomerID AND d.PackageID = p.ID
LEFT JOIN RB_OrderInfo o WITH (nolock) ON d.OrderCode = o.OrderCode AND d.CustomerID = o.CustomerID
LEFT JOIN dbo.RB_OrderInfo_BeikuExpand h WITH (NOLOCK) ON o.OrderCode = h.OrderCode AND o.CustomerID = h.CustomerID
WHERE p.PackageState = 3 AND o.AddTime > Dateadd(month, -6, Getdate()) AND o.IsStockOrder = 1 AND h.orderBuildType in (1, 2) AND o.OrderStatus = 0 AND o.OrderState < 2 GROUP BY d.OrderCode, OrderListID, d.CustomerID ) AS pod ON pod.OrderCode = l.OrderCode AND pod.CustomerID = l.CustomerID AND pod.OrderListID = l.ID WHERE l.ProductNum + l.ProductNumUpdate - Isnull(pod.ProductNum, 0) > 0 AND s.OrderSourceType = 1 AND o.OrderStatus = 0 AND o.OrderState < 2 AND o.IsStockOrder = 1 AND h.orderBuildType in (1, 2) AND o.AddTime > Dateadd(month, -6, Getdate()) GROUP BY o.ToWareHouseID, o.CustomerID, l.SellerSKU, o.OrderSourceID, CASE WHEN ISnull(l.GroupSKU,'') = '' THEN l.SKU ELSE l.GroupSKU END

