From 852cc8afa71b117f83759b0e1e97176800752c9a Mon Sep 17 00:00:00 2001
From: zhang_nuo <zhang_12370@163.com>
Date: 星期二, 15 九月 2026 01:47:03 +0800
Subject: [PATCH] fix(sales): 修正发货率统计逻辑

---
 src/main/java/com/ruoyi/sales/mapper/SalesLedgerMapper.java |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/ruoyi/sales/mapper/SalesLedgerMapper.java b/src/main/java/com/ruoyi/sales/mapper/SalesLedgerMapper.java
index 5518290..63d77e6 100644
--- a/src/main/java/com/ruoyi/sales/mapper/SalesLedgerMapper.java
+++ b/src/main/java/com/ruoyi/sales/mapper/SalesLedgerMapper.java
@@ -66,11 +66,13 @@
             "DATE_FORMAT(sl.entry_date, '%Y-%m') AS month, " +
             "COUNT(DISTINCT sl.id) AS order_count, " +  // 鎬昏鍗曟暟
             "SUM(slp.tax_inclusive_total_price) AS sales_amount, " +  // 閿�鍞
-            // 鍙戣揣鐜� = 鍙戣揣璁㈠崟鏁� * 100 / 鎬昏鍗曟暟锛堜繚鐣�2浣嶅皬鏁帮紝閬垮厤闄�0鎶ラ敊锛�
+            "SUM(IFNULL(slp.quantity, 0)) AS product_quantity, " +  // 浜у搧閿�鍞暟閲�
+            // 鍙戣揣鐜� = 鏈夊彂璐ц褰曠殑璁㈠崟鏁� / 鎬昏鍗曟暟 * 100锛堜繚鐣�2浣嶅皬鏁帮紝閬垮厤闄�0鎶ラ敊锛�
             "ROUND(IF(COUNT(DISTINCT sl.id) = 0, 0, " +
-            "SUM(CASE WHEN slp.approve_status = 2 THEN 1 ELSE 0 END) / COUNT(DISTINCT sl.id) * 100), 2) AS ship_rate " +
+            "COUNT(DISTINCT CASE WHEN si.id IS NOT NULL THEN sl.id END) / COUNT(DISTINCT sl.id) * 100), 2) AS ship_rate " +
             "FROM sales_ledger sl " +
             "LEFT JOIN sales_ledger_product slp ON sl.id = slp.sales_ledger_id " +
+            "LEFT JOIN shipping_info si ON sl.id = si.sales_ledger_id " +
             "WHERE sl.entry_date &gt;= DATE_FORMAT(#{statisticsTableDto.entryDateStart}, '%Y-%m-01') " +
             "AND sl.entry_date &lt;= LAST_DAY(#{statisticsTableDto.entryDateEnd}) " +
             // 浜у搧澶х被绛涢��

--
Gitblit v1.9.3