From 0ae2d7e2cd0e0c3edde430c5cba8441a437e2d84 Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期三, 01 四月 2026 15:06:30 +0800
Subject: [PATCH] feat(production): 添加bomName字段及相关mapper映射

---
 src/main/resources/mapper/stock/StockUninventoryMapper.xml |   45 ++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 38 insertions(+), 7 deletions(-)

diff --git a/src/main/resources/mapper/stock/StockUninventoryMapper.xml b/src/main/resources/mapper/stock/StockUninventoryMapper.xml
index 39b16b3..851b83f 100644
--- a/src/main/resources/mapper/stock/StockUninventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockUninventoryMapper.xml
@@ -44,19 +44,50 @@
         where product_model_id = #{ew.productModelId}
     </update>
     <select id="pageStockUninventory" resultType="com.ruoyi.stock.dto.StockUninventoryDto">
-        select su.*,
-               pm.model,
-               pm.unit,
-               p.product_name
+        WITH RECURSIVE cte AS (
+        SELECT id, product_name, parent_id, id AS current_id
+        FROM product
+
+        UNION ALL
+
+        SELECT c.id, c.product_name, p.parent_id, p.id
+        FROM cte c
+        JOIN product p ON c.parent_id = p.id
+        ),
+        root_map AS (
+        SELECT
+        c.id,
+        p.id AS root_id,
+        p.product_name AS root_name
+        FROM cte c
+        JOIN product p ON c.current_id = p.id
+        WHERE p.parent_id IS NULL
+        )
+        select su.id,
+        su.qualitity,
+        COALESCE(su.locked_quantity, 0) as locked_quantity,
+        su.product_model_id,
+        su.create_time,
+        su.update_time,
+        su.version,
+        su.update_time,
+        (su.qualitity - COALESCE(su.locked_quantity, 0)) as un_locked_quantity,
+        pm.model,
+        pm.unit,
+        p.product_name
         from stock_uninventory su
-                 left join product_model pm on su.product_model_id = pm.id
-                 left join product p on pm.product_id = p.id
+        left join product_model pm on su.product_model_id = pm.id
+        LEFT JOIN root_map rm ON pm.product_id = rm.id
+        left join product p on pm.product_id = p.id
         where 1 = 1
         <if test="ew.productName != null and ew.productName !=''">
             and p.product_name like concat('%',#{ew.productName},'%')
         </if>
+        <if test="ew.rootName != null and ew.rootName != ''">
+            and rm.root_name = #{ew.rootName}
+        </if>
     </select>
-    <select id="listStockInventoryExportData" resultType="com.ruoyi.stock.execl.StockInventoryExportData">
+    <select id="listStockInventoryExportData" resultType="com.ruoyi.stock.execl.StockUnInventoryExportData">
         select su.*,
         pm.model,
         pm.unit,

--
Gitblit v1.9.3