From c2a5c9217c80fec859cdc9cb1bf9931887a077aa Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期一, 07 九月 2026 21:53:50 +0800
Subject: [PATCH] fix: 优化生产订单排序,库存查询报错问题
---
src/main/resources/mapper/sales/SalesLedgerProductMapper.xml | 39 ++++++++++++++++++++++++++++++---------
1 files changed, 30 insertions(+), 9 deletions(-)
diff --git a/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml b/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
index e2e6277..126b85c 100644
--- a/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
+++ b/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
@@ -33,7 +33,8 @@
WHEN (IFNULL(t2.qualitity, 0) - IFNULL(t2.locked_quantity, 0)) >0 THEN 1
ELSE 0
END as has_sufficient_stock,
- (IFNULL(T1.quantity, 0) - IFNULL(t3.shipped_quantity, 0)) as no_quantity,
+ (IFNULL(T1.quantity, 0) - IFNULL(t3.shipped_quantity, 0) - IFNULL(t5.pending_approval_quantity, 0)) as no_quantity,
+ IFNULL(t6.return_quantity, 0) as return_quantity,
IFNULL(t5.pending_approval_quantity, 0) as pending_approval_quantity,
CASE
WHEN IFNULL(t3.shipped_quantity, 0) = 0 AND IFNULL(t5.pending_approval_quantity, 0) = 0 THEN '寰呭彂璐�'
@@ -55,11 +56,17 @@
GROUP BY product_model_id
) t2 ON T1.product_model_id = t2.product_model_id
LEFT JOIN (
- SELECT sales_ledger_product_id, IFNULL(SUM(spd.quantity), 0) as shipped_quantity
+ SELECT si.sales_ledger_product_id, IFNULL(SUM(spd.quantity), 0) as shipped_quantity
FROM shipping_info si
- LEFT JOIN shipping_product_detail spd ON si.id = spd.shipping_info_id
- where si.status = '瀹℃牳閫氳繃' OR si.status = '宸插彂璐�'
- GROUP BY sales_ledger_product_id
+ INNER JOIN shipping_product_detail spd ON si.id = spd.shipping_info_id
+ WHERE si.status IN ('瀹℃牳閫氳繃', '宸插彂璐�')
+ AND EXISTS (
+ SELECT 1 FROM stock_out_record sor
+ WHERE sor.record_id = si.id
+ AND TRIM(sor.record_type) = '13'
+ AND sor.approval_status = 1
+ )
+ GROUP BY si.sales_ledger_product_id
) t3 ON t3.sales_ledger_product_id = T1.id
LEFT JOIN (
SELECT rel.sales_ledger_product_id,
@@ -95,12 +102,26 @@
GROUP BY rel.sales_ledger_product_id
) t4 ON t4.sales_ledger_product_id = T1.id
LEFT JOIN (
- SELECT sales_ledger_product_id, IFNULL(SUM(spd.quantity), 0) as pending_approval_quantity
+ SELECT si.sales_ledger_product_id, IFNULL(SUM(spd.quantity), 0) as pending_approval_quantity
FROM shipping_info si
LEFT JOIN shipping_product_detail spd ON si.id = spd.shipping_info_id
WHERE si.status IN ('寰呭鏍�', '瀹℃牳涓�')
- GROUP BY sales_ledger_product_id
+ OR (si.status = '瀹℃牳閫氳繃' AND NOT EXISTS (
+ SELECT 1 FROM stock_out_record sor
+ WHERE sor.record_id = si.id
+ AND TRIM(sor.record_type) = '13'
+ AND sor.approval_status = 1
+ ))
+ GROUP BY si.sales_ledger_product_id
) t5 ON t5.sales_ledger_product_id = T1.id
+ LEFT JOIN (
+ SELECT si.sales_ledger_product_id, IFNULL(SUM(rsp.num), 0) AS return_quantity
+ FROM return_management rm
+ INNER JOIN return_sale_product rsp ON rm.id = rsp.return_management_id
+ INNER JOIN shipping_info si ON rm.shipping_id = si.id
+ WHERE rm.status = 1
+ GROUP BY si.sales_ledger_product_id
+ ) t6 ON t6.sales_ledger_product_id = T1.id
left join product_model pm ON T1.product_model_id = pm.id
left join product p ON pm.product_id = p.id
<where>
@@ -139,8 +160,8 @@
SUM(slp.quantity) AS purchaseNum,
SUM(slp.tax_inclusive_total_price) AS purchaseAmount,
COUNT(DISTINCT slp.sales_ledger_id) AS purchaseTimes,
- <!-- 骞冲潎鍗曚环 = 鎬婚噰璐噾棰�/鎬婚噰璐暟閲忥紝淇濈暀2浣嶅皬鏁帮紝閬垮厤闄�0 -->
- ROUND(IF(SUM(slp.quantity) = 0, 0, SUM(slp.tax_inclusive_total_price) / SUM(slp.quantity)), 2) AS averagePrice,
+ <!-- 骞冲潎鍗曚环 = 鎬婚噰璐噾棰�/鎬婚噰璐暟閲忥紝淇濈暀6浣嶅皬鏁帮紝閬垮厤闄�0 -->
+ ROUND(IF(SUM(slp.quantity) = 0, 0, SUM(slp.tax_inclusive_total_price) / SUM(slp.quantity)), 6) AS averagePrice,
<!-- 璇ヤ骇鍝佸ぇ绫讳笅鏈�鍚庝竴涓綍鍏ユ棩鏈燂紙鍙栧彴璐︿富琛ㄧ殑entry_date锛� -->
MAX(sl.entry_date) AS entryDate,
COALESCE(NULLIF(SUM(t1.return_quantity), 0), 0) AS return_quantity,
--
Gitblit v1.9.3