From f088078e626e16b28d69cdbcbf514b30f1dcefe7 Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期三, 22 四月 2026 11:51:58 +0800
Subject: [PATCH] refactor(production): 优化生产订单及工单号生成逻辑
---
src/main/resources/mapper/stock/StockInventoryMapper.xml | 70 ++++++++++++++++++++++++++++++++++
1 files changed, 69 insertions(+), 1 deletions(-)
diff --git a/src/main/resources/mapper/stock/StockInventoryMapper.xml b/src/main/resources/mapper/stock/StockInventoryMapper.xml
index 9db56f9..ef3813b 100644
--- a/src/main/resources/mapper/stock/StockInventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockInventoryMapper.xml
@@ -19,6 +19,9 @@
<if test="ew.qualitity != null">
qualitity = qualitity + #{ew.qualitity},
</if>
+ <if test="ew.subQualitity != null">
+ sub_qualitity = sub_qualitity + #{ew.subQualitity},
+ </if>
<if test="ew.version != null">
version = version + 1,
</if>
@@ -30,6 +33,15 @@
</if>
<if test="ew.lockedQuantity != null and ew.lockedQuantity !=''">
locked_quantity = locked_quantity + #{ew.lockedQuantity},
+ </if>
+ <if test="ew.warehouseCode != null and ew.warehouseCode !=''">
+ warehouse_code = #{ew.warehouseCode},
+ </if>
+ <if test="ew.warehouseName != null and ew.warehouseName !=''">
+ warehouse_name = #{ew.warehouseName},
+ </if>
+ <if test="ew.productCode != null and ew.productCode !=''">
+ product_code = #{ew.productCode},
</if>
update_time = now()
</set>
@@ -52,8 +64,28 @@
where product_model_id = #{ew.productModelId} and qualitity >= #{ew.qualitity}
</update>
<select id="pagestockInventory" resultType="com.ruoyi.stock.dto.StockInventoryDto">
+ 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 si.id,
si.qualitity,
+ si.sub_qualitity,
COALESCE(si.locked_quantity, 0) as locked_quantity,
si.product_model_id,
si.create_time,
@@ -63,17 +95,44 @@
(si.qualitity - COALESCE(si.locked_quantity, 0)) as un_locked_quantity,
pm.model,
si.remark,
+ si.warehouse_code,
+ si.warehouse_name,
+ si.product_code,
pm.unit,
+ pm.sub_unit,
p.product_name
from stock_inventory si
left join product_model pm on si.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">
+ 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 si.qualitity,
pm.model,
pm.unit,
@@ -81,14 +140,23 @@
coalesce(si.warn_num, 0) as warn_num,
coalesce(si.locked_quantity, 0) as locked_quantity,
si.remark,
- si.update_time
+ si.update_time,
+ si.warehouse_code,
+ si.warehouse_name,
+ pm.sub_unit,
+ si.sub_qualitity,
+ si.product_code
from stock_inventory si
left join product_model pm on si.product_model_id = pm.id
left join product p on pm.product_id = p.id
+ left join root_map rm ON pm.product_id = rm.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="stockInventoryPage" resultType="com.ruoyi.stock.dto.StockInRecordDto">
select sir.*,si.qualitity as current_stock,
--
Gitblit v1.9.3