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 <= #{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 >= #{startDate}
AND sir.create_time <= #{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 >= #{startDate}
AND sor.create_time <= #{endDate}
GROUP BY DATE(sor.create_time)
--
Gitblit v1.9.3