From bfda179b25eb3f121cc827485ae2b8be1fee3449 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期一, 11 五月 2026 18:00:28 +0800
Subject: [PATCH] refactor(database): 重构产品信息查询以使用关联表结构
---
src/main/resources/mapper/stock/StockInRecordMapper.xml | 99 ++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 93 insertions(+), 6 deletions(-)
diff --git a/src/main/resources/mapper/stock/StockInRecordMapper.xml b/src/main/resources/mapper/stock/StockInRecordMapper.xml
index b4f31dc..05f8c89 100644
--- a/src/main/resources/mapper/stock/StockInRecordMapper.xml
+++ b/src/main/resources/mapper/stock/StockInRecordMapper.xml
@@ -3,18 +3,105 @@
<mapper namespace="com.ruoyi.stock.mapper.StockInRecordMapper">
<select id="listPage" resultType="com.ruoyi.stock.dto.StockInRecordDto">
+ WITH RECURSIVE product_tree AS (
+ SELECT id
+ FROM product
+ WHERE id = #{params.topParentProductId}
+
+ UNION ALL
+
+ SELECT p.id
+ FROM product p
+ INNER JOIN product_tree pt ON p.parent_id = pt.id
+ )
SELECT
- sir.*
- pm.product_name as productName,
+ sir.*,
+ p.product_name as product_name,
pm.model,
- pm.unit
+ pm.unit,
+ u.nick_name as createBy
FROM stock_in_record as sir
- LEFT JOIN product_models as pm on sir.product_model_id = pm.id
+ LEFT JOIN product_model as pm on sir.product_model_id = pm.id
+ LEFT JOIN product as p on pm.product_id = p.id
+ LEFT JOIN sys_user as u on sir.create_user = u.user_id
<where>
<if test="params.timeStr != null and params.timeStr != ''">
- and sir.create_time like concat('%',#{param.timeStr},'%')
+ and sir.create_time like concat('%',#{params.timeStr},'%')
+ </if>
+ <if test="params.productName != null and params.productName != ''">
+ and p.product_name like concat('%',#{params.productName},'%')
+ </if>
+ <if test="params.type != null and params.type != ''">
+ and sir.type = #{params.type}
+ </if>
+ <if test="params.recordType != null and params.recordType != ''">
+ and sir.record_type = #{params.recordType}
+ </if>
+ <if test="params.topParentProductId != null and params.topParentProductId > 0">
+ and p.id in (select id from product_tree)
</if>
</where>
order by sir.id desc
</select>
-</mapper>
\ No newline at end of file
+ <select id="listStockInRecordExportData" resultType="com.ruoyi.stock.execl.StockInRecordExportData">
+ SELECT
+ sir.*,
+ p.product_name as product_name,
+ pm.model,
+ pm.unit,
+ u.nick_name as createBy
+ FROM stock_in_record as sir
+ LEFT JOIN product_model as pm on sir.product_model_id = pm.id
+ LEFT JOIN product as p on pm.product_id = p.id
+ LEFT JOIN sys_user as u on sir.create_user = u.user_id
+ <where>
+ <if test="params.timeStr != null and params.timeStr != ''">
+ and sir.create_time like concat('%',#{params.timeStr},'%')
+ </if>
+ <if test="params.productName != null and params.productName != ''">
+ and p.product_name like concat('%',#{params.productName},'%')
+ </if>
+ <if test="params.type != null and params.type != ''">
+ and sir.type = #{params.type}
+ </if>
+ <if test="params.recordType != null and params.recordType != ''">
+ and sir.record_type = #{params.recordType}
+ </if>
+ </where>
+ order by sir.id desc
+ </select>
+ <select id="listPageAccountPurchase" resultType="com.ruoyi.account.bean.vo.PurchaseInboundVo">
+ SELECT
+ sir.id,
+ sir.inbound_batches,
+ pl.supplier_name,
+ DATE(sir.create_time) AS inboundDate,
+ p.product_name,
+ pm.model as specification_model,
+ sor.stock_in_num * slp.tax_inclusive_unit_price AS InboundAmount,
+ pl.purchase_contract_number
+ FROM stock_in_record sir
+ -- 10 绫诲瀷鎵嶅叧鑱旇川妫�琛�
+ LEFT JOIN quality_inspect qi ON sir.record_type = 10 AND sir.record_id = qi.id
+ -- 鍔ㄦ�佸叧鑱旈噰璐紙鑷姩閫傞厤 7 鍜� 10锛�
+ LEFT JOIN purchase_ledger pl
+ ON pl.id = IF(sir.record_type = 7, sir.record_id, qi.purchase_ledger_id)
+ -- 浜у搧鍏宠仈涓嶅姩
+ LEFT JOIN sales_ledger_product slp ON slp.type = 2 AND pl.id = slp.product_id
+ LEFT JOIN product_model pm ON slp.product_model_id = pm.id
+ LEFT JOIN product p ON pm.product_id = p.id
+ -- 鏉′欢
+ WHERE sir.approval_status = 1
+ AND sir.record_type IN ('7','10')
+ <if test="req.inboundBatches != null and req.inboundBatches != ''">
+ AND sir.inbound_batches LIKE CONCAT('%',#{req.inboundBatches},'%')
+ </if>
+ <if test="req.supplierName != null and req.supplierName != ''">
+ AND pl.supplier_name LIKE CONCAT('%',#{req.supplierName},'%')
+ </if>
+ <if test="req.startDate != null and req.endDate != null">
+ AND DATE(sir.create_time) BETWEEN #{startDate} AND #{endDate}
+ </if>
+ order by sir.id DESC
+ </select>
+</mapper>
--
Gitblit v1.9.3