From 12d467a5d380f99d02bf7f15e6be83e284e95a7d Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期二, 26 五月 2026 17:43:55 +0800
Subject: [PATCH] feat: 办公用品(日常用品),领用归还。领用归还记录 完成 ps:如果pro使用直接引入该commit

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

diff --git a/src/main/resources/mapper/stock/StockInventoryMapper.xml b/src/main/resources/mapper/stock/StockInventoryMapper.xml
index 6ca5bf7..99365a0 100644
--- a/src/main/resources/mapper/stock/StockInventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockInventoryMapper.xml
@@ -671,4 +671,58 @@
         batch_no
     </select>
 
+    <!-- 鍒嗛〉鏌ヨ浜у搧搴撳瓨鍜岄鐢ㄩ噺锛堟寜鎵瑰彿鍖哄垎锛� -->
+    <select id="pageStockAndBorrow" resultType="com.ruoyi.stock.dto.StockInventoryDto">
+        WITH RECURSIVE product_tree AS (
+            SELECT id
+            FROM product
+            WHERE id = #{ew.topParentProductId}
+            UNION ALL
+            SELECT p.id
+            FROM product p
+            INNER JOIN product_tree pt ON p.parent_id = pt.id
+        )
+        SELECT
+            pm.id as product_model_id,
+            pm.model,
+            pm.product_code,
+            pm.unit,
+            p.product_name,
+            p.id as product_id,
+            si.batch_no,
+            IFNULL(si.qualitity, 0) as qualitity,
+            IFNULL(si.locked_quantity, 0) as locked_quantity,
+            IFNULL(borrowed.borrowed_quantity, 0) as borrowed_quantity,
+            IFNULL(si.qualitity, 0) - IFNULL(borrowed.borrowed_quantity, 0) as available_quantity
+        FROM product_model pm
+        LEFT JOIN product p ON pm.product_id = p.id
+        LEFT JOIN stock_inventory si ON pm.id = si.product_model_id
+        LEFT JOIN (
+            SELECT
+                product_model_id,
+                batch_no,
+                SUM(borrow_quantity - IFNULL(returned_quantity, 0)) as borrowed_quantity
+            FROM product_borrow
+            WHERE approval_status = 1
+              AND status != 2
+            GROUP BY product_model_id, batch_no
+        ) borrowed ON pm.id = borrowed.product_model_id
+            AND (si.batch_no = borrowed.batch_no OR (si.batch_no IS NULL AND borrowed.batch_no IS NULL))
+        <where>
+            <if test="ew.topParentProductId != null and ew.topParentProductId > 0">
+                AND p.id IN (SELECT id FROM product_tree)
+            </if>
+            <if test="ew.productName != null and ew.productName != ''">
+                AND p.product_name LIKE CONCAT('%', #{ew.productName}, '%')
+            </if>
+            <if test="ew.model != null and ew.model != ''">
+                AND pm.model LIKE CONCAT('%', #{ew.model}, '%')
+            </if>
+            <if test="ew.batchNo != null and ew.batchNo != ''">
+                AND si.batch_no LIKE CONCAT('%', #{ew.batchNo}, '%')
+            </if>
+        </where>
+        ORDER BY pm.id DESC, si.batch_no
+    </select>
+
 </mapper>

--
Gitblit v1.9.3