From e731bf5f64d71ed93a570d505c52dc44d491175e Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 22 九月 2026 11:21:33 +0800
Subject: [PATCH] fix(home): 修复首页采购品分布和出入库趋势数据统计问题

---
 src/main/resources/mapper/stock/StockInventoryMapper.xml |   24 ++++++++++++++++++++++--
 1 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/src/main/resources/mapper/stock/StockInventoryMapper.xml b/src/main/resources/mapper/stock/StockInventoryMapper.xml
index 487000b..82709f5 100644
--- a/src/main/resources/mapper/stock/StockInventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockInventoryMapper.xml
@@ -604,13 +604,25 @@
                 AND create_time &lt;= #{endDate}) AS combined_counts
     </select>
 
+    <!-- 鍑哄叆搴撹秼鍔匡細浜у搧鍒嗙被蹇呴』閫掑綊鍙栨暣妫靛瓙鏍戙��
+         浜у搧鏍戞槸銆屽ぇ绫� -> 鍝佺被 -> 鍏蜂綋浜у搧銆嶄笁灞傦紝浜у搧鍨嬪彿锛坧roduct_model锛夋寕鍦ㄥ彾瀛愪骇鍝佷笂锛�
+         鍙瘮瀵圭洿鎺ュ瓙鑺傜偣锛坧.parent_id = root锛夋案杩滃懡涓笉鍒板瀷鍙凤紝瓒嬪娍鍥炬亽涓虹┖銆�
+         閫掑綊 CTE 鍐欏湪鎷彿鍐咃紝璁╄鍙ヤ粛浠� SELECT 寮�澶达紝鏁版嵁鏉冮檺鎷︽埅鍣ㄧ収甯稿 stock_in_record 鐢熸晥 -->
     <select id="selectDailyStockInCounts" resultType="java.util.Map">
         SELECT DATE(sir.create_time) AS date,
                SUM(sir.stock_in_num) AS count
         FROM stock_in_record sir
                  JOIN product_model pm ON sir.product_model_id = pm.id
                  JOIN product p ON pm.product_id = p.id
-        WHERE (p.parent_id = #{rootCategoryId} OR p.id = #{rootCategoryId})
+        WHERE p.id IN (WITH RECURSIVE product_tree AS (SELECT id
+                                                       FROM product
+                                                       WHERE id = #{rootCategoryId}
+                                                       UNION ALL
+                                                       SELECT p2.id
+                                                       FROM product p2
+                                                                JOIN product_tree pt ON p2.parent_id = pt.id)
+                       SELECT id
+                       FROM product_tree)
           AND sir.create_time &gt;= #{startDate}
           AND sir.create_time &lt;= #{endDate}
         GROUP BY DATE(sir.create_time)
@@ -623,7 +635,15 @@
         FROM stock_out_record sor
                  JOIN product_model pm ON sor.product_model_id = pm.id
                  JOIN product p ON pm.product_id = p.id
-        WHERE (p.parent_id = #{rootCategoryId} OR p.id = #{rootCategoryId})
+        WHERE p.id IN (WITH RECURSIVE product_tree AS (SELECT id
+                                                       FROM product
+                                                       WHERE id = #{rootCategoryId}
+                                                       UNION ALL
+                                                       SELECT p2.id
+                                                       FROM product p2
+                                                                JOIN product_tree pt ON p2.parent_id = pt.id)
+                       SELECT id
+                       FROM product_tree)
           AND sor.create_time &gt;= #{startDate}
           AND sor.create_time &lt;= #{endDate}
         GROUP BY DATE(sor.create_time)

--
Gitblit v1.9.3