From 8a7c384b718a3d9b57352ff8f77df70baf587fe1 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期三, 16 九月 2026 19:51:53 +0800
Subject: [PATCH] fix: 产品父类名称适配
---
src/main/resources/mapper/quality/QualityInspectMapper.xml | 208 ++++++++++++++++++++++++++++++++++-----------------
1 files changed, 139 insertions(+), 69 deletions(-)
diff --git a/src/main/resources/mapper/quality/QualityInspectMapper.xml b/src/main/resources/mapper/quality/QualityInspectMapper.xml
index 0efab8c..0472253 100644
--- a/src/main/resources/mapper/quality/QualityInspectMapper.xml
+++ b/src/main/resources/mapper/quality/QualityInspectMapper.xml
@@ -3,34 +3,57 @@
<mapper namespace="com.ruoyi.quality.mapper.QualityInspectMapper">
<select id="qualityInspectListPage" resultType="com.ruoyi.quality.pojo.QualityInspect">
SELECT
- *
- FROM quality_inspect
- where
+ qi.*,
+ pm.uid_no,
+ <choose>
+ <when test="qualityInspect.inspectType == 0">
+ pl.purchase_contract_number as purchase_contract_no
+ </when>
+ <otherwise>
+ pwo.work_order_no
+ </otherwise>
+ </choose>
+ FROM
+ quality_inspect qi
+ <choose>
+ <when test="qualityInspect.inspectType == 0 ">
+ LEFT JOIN purchase_ledger pl ON pl.id = qi.purchase_ledger_id
+ </when>
+ <otherwise>
+ LEFT JOIN production_product_main ppm ON qi.product_main_id = ppm.id
+ LEFT JOIN product_work_order pwo ON ppm.work_order_id = pwo.id
+ </otherwise>
+ </choose>
+ LEFT JOIN product_model pm on qi.product_model_id = pm.id
+ WHERE
inspect_type=#{qualityInspect.inspectType}
<if test="qualityInspect.supplier != null and qualityInspect.supplier != '' ">
- AND supplier like concat('%',#{qualityInspect.supplier},'%')
+ AND qi.supplier like concat('%',#{qualityInspect.supplier},'%')
</if>
<if test="qualityInspect.customer != null and qualityInspect.customer != '' ">
- AND customer like concat('%',#{qualityInspect.customer},'%')
+ AND qi.customer like concat('%',#{qualityInspect.customer},'%')
</if>
<if test="qualityInspect.process != null and qualityInspect.process != '' ">
- AND process like concat('%',#{qualityInspect.process},'%')
+ AND qi.process like concat('%',#{qualityInspect.process},'%')
</if>
<if test="qualityInspect.productName != null and qualityInspect.productName != '' ">
- AND product_name like concat('%',#{qualityInspect.productName},'%')
+ AND qi.product_name like concat('%',#{qualityInspect.productName},'%')
</if>
<if test="qualityInspect.entryDateStart != null and qualityInspect.entryDateStart != '' ">
- AND check_time >= DATE_FORMAT(#{qualityInspect.entryDateStart},'%Y-%m-%d')
+ AND qi.check_time >= DATE_FORMAT(#{qualityInspect.entryDateStart},'%Y-%m-%d')
</if>
<if test="qualityInspect.entryDateEnd != null and qualityInspect.entryDateEnd != '' ">
- AND check_time <= DATE_FORMAT(#{qualityInspect.entryDateEnd},'%Y-%m-%d')
+ AND qi.check_time <= DATE_FORMAT(#{qualityInspect.entryDateEnd},'%Y-%m-%d')
</if>
- ORDER BY check_time DESC
+ ORDER BY qi.check_time DESC
</select>
+
<select id="qualityInspectExport" resultType="com.ruoyi.quality.pojo.QualityInspect">
SELECT
- *
- FROM quality_inspect
+ qi.*,
+ pm.uid_no
+ FROM quality_inspect qi
+ LEFT JOIN product_model pm on qi.product_model_id = pm.id
where
inspect_type=#{qualityInspect.inspectType}
<if test="qualityInspect.supplier != null and qualityInspect.supplier != '' ">
@@ -55,12 +78,25 @@
</foreach>
</delete>
+ <sql id="productTypeTree">
+ WITH RECURSIVE product_type AS (SELECT id,
+ CASE
+ WHEN product_name LIKE '%鍗婃垚鍝�%' THEN 1
+ WHEN product_name LIKE '%鎴愬搧%' THEN 2
+ WHEN product_name LIKE '%鍘熸潗鏂�%' THEN 0
+ END AS modelType
+ FROM product
+ WHERE parent_id IS NULL
+ UNION ALL
+ SELECT p.id,
+ pt.modelType
+ FROM product p
+ INNER JOIN product_type pt ON p.parent_id = pt.id)
+ </sql>
+
<select id="getInspectStatistics" resultType="com.ruoyi.quality.dto.QualityInspectStatDto">
- SELECT CASE pp.product_name
- WHEN '鍘熸潗鏂�' THEN 0
- WHEN '鍗婃垚鍝�' THEN 1
- WHEN '鎴愬搧' THEN 2
- END AS modelType,
+ <include refid="productTypeTree"/>
+ SELECT pt.modelType,
IFNULL(SUM(qi.quantity), 0) AS totalCount,
@@ -69,21 +105,20 @@
ELSE 0
END), 0) AS completedCount
- FROM product p
- INNER JOIN product pp
- ON p.parent_id = pp.id
- LEFT JOIN product_model pm
- ON pm.product_id = p.id
+ FROM product_type pt
+ INNER JOIN product_model pm
+ ON pm.product_id = pt.id
LEFT JOIN quality_inspect qi
ON qi.product_model_id = pm.id
- WHERE pp.product_name IN ('鍘熸潗鏂�', '鍗婃垚鍝�', '鎴愬搧')
+ WHERE pt.modelType IS NOT NULL
- GROUP BY pp.product_name
+ GROUP BY pt.modelType
</select>
<select id="getPassRateStatistics" resultType="com.ruoyi.quality.dto.QualityPassRateDto">
+ <include refid="productTypeTree"/>
SELECT t.modelType,
COALESCE(SUM(qi.quantity), 0) AS totalCount,
@@ -155,19 +190,12 @@
SELECT 1
UNION ALL
SELECT 2) t
- LEFT JOIN product p
- ON 1 = 1
- LEFT JOIN product pp
- ON p.parent_id = pp.id
+ LEFT JOIN product_type pt
+ ON pt.modelType = t.modelType
LEFT JOIN product_model pm
- ON pm.product_id = p.id
+ ON pm.product_id = pt.id
LEFT JOIN quality_inspect qi
ON qi.product_model_id = pm.id
- AND (
- (pp.product_name = '鍘熸潗鏂�' AND t.modelType = 0) OR
- (pp.product_name = '鍗婃垚鍝�' AND t.modelType = 1) OR
- (pp.product_name = '鎴愬搧' AND t.modelType = 2)
- )
GROUP BY t.modelType
ORDER BY t.modelType;
@@ -188,7 +216,20 @@
SELECT 2),
base AS (SELECT m.month_num, t.modelType
FROM months m
- CROSS JOIN types t)
+ CROSS JOIN types t),
+ product_type AS (SELECT id,
+ CASE
+ WHEN product_name LIKE '%鍗婃垚鍝�%' THEN 1
+ WHEN product_name LIKE '%鎴愬搧%' THEN 2
+ WHEN product_name LIKE '%鍘熸潗鏂�%' THEN 0
+ END AS modelType
+ FROM product
+ WHERE parent_id IS NULL
+ UNION ALL
+ SELECT p.id,
+ pt.modelType
+ FROM product p
+ INNER JOIN product_type pt ON p.parent_id = pt.id)
SELECT CASE b.month_num
WHEN 1 THEN '涓�鏈�'
@@ -262,18 +303,13 @@
) AS passRate
FROM base b
- LEFT JOIN product p ON 1 = 1
- LEFT JOIN product pp ON p.parent_id = pp.id
- LEFT JOIN product_model pm ON pm.product_id = p.id
+ LEFT JOIN product_type pt
+ ON pt.modelType = b.modelType
+ LEFT JOIN product_model pm ON pm.product_id = pt.id
LEFT JOIN quality_inspect qi
ON qi.product_model_id = pm.id
AND YEAR(qi.check_time) = #{year}
AND MONTH(qi.check_time) = b.month_num
- AND (
- (pp.product_name = '鍘熸潗鏂�' AND b.modelType = 0)
- OR (pp.product_name = '鍗婃垚鍝�' AND b.modelType = 1)
- OR (pp.product_name = '鎴愬搧' AND b.modelType = 2)
- )
GROUP BY b.month_num, b.modelType
ORDER BY b.month_num, b.modelType;
@@ -281,25 +317,19 @@
</select>
<select id="getYearlyPassRateStatistics" resultType="com.ruoyi.quality.dto.QualityPassRateDto">
+ <include refid="productTypeTree"/>
SELECT t.modelType,
- COALESCE(SUM(
- CASE
- WHEN pp.product_name = '鍘熸潗鏂�' AND t.modelType = 0 THEN qi.quantity
- WHEN pp.product_name = '鍗婃垚鍝�' AND t.modelType = 1 THEN qi.quantity
- WHEN pp.product_name = '鎴愬搧' AND t.modelType = 2 THEN qi.quantity
- ELSE 0
- END
- ), 0) AS totalCount
+ COALESCE(SUM(qi.quantity), 0) AS totalCount
FROM (SELECT 0 AS modelType
UNION ALL
SELECT 1
UNION ALL
SELECT 2) t
- LEFT JOIN product p ON 1 = 1
- LEFT JOIN product pp ON p.parent_id = pp.id
- LEFT JOIN product_model pm ON pm.product_id = p.id
+ LEFT JOIN product_type pt
+ ON pt.modelType = t.modelType
+ LEFT JOIN product_model pm ON pm.product_id = pt.id
LEFT JOIN quality_inspect qi
ON qi.product_model_id = pm.id
AND YEAR(qi.check_time) = #{year}
@@ -317,7 +347,20 @@
UNION ALL
SELECT month_num + 1
FROM months
- WHERE month_num < 12)
+ WHERE month_num < 12),
+ product_type AS (SELECT id,
+ CASE
+ WHEN product_name LIKE '%鍗婃垚鍝�%' THEN 1
+ WHEN product_name LIKE '%鎴愬搧%' THEN 2
+ WHEN product_name LIKE '%鍘熸潗鏂�%' THEN 0
+ END AS modelType
+ FROM product
+ WHERE parent_id IS NULL
+ UNION ALL
+ SELECT p.id,
+ pt.modelType
+ FROM product p
+ INNER JOIN product_type pt ON p.parent_id = pt.id)
SELECT CASE m.month_num
WHEN 1 THEN '涓�鏈�'
WHEN 2 THEN '浜屾湀'
@@ -336,7 +379,7 @@
/* 鍘熸潗鏂� */
COALESCE(SUM(
CASE
- WHEN pp.product_name = '鍘熸潗鏂�'
+ WHEN pt.modelType = 0
THEN qi.quantity
ELSE 0
END
@@ -345,7 +388,7 @@
/* 鍗婃垚鍝� */
COALESCE(SUM(
CASE
- WHEN pp.product_name = '鍗婃垚鍝�'
+ WHEN pt.modelType = 1
THEN qi.quantity
ELSE 0
END
@@ -354,16 +397,15 @@
/* 鎴愬搧 */
COALESCE(SUM(
CASE
- WHEN pp.product_name = '鎴愬搧'
+ WHEN pt.modelType = 2
THEN qi.quantity
ELSE 0
END
), 0) AS outgoingCount
FROM months m
- LEFT JOIN product p ON 1 = 1
- LEFT JOIN product pp ON p.parent_id = pp.id
- LEFT JOIN product_model pm ON pm.product_id = p.id
+ LEFT JOIN product_type pt ON 1 = 1
+ LEFT JOIN product_model pm ON pm.product_id = pt.id
LEFT JOIN quality_inspect qi
ON qi.product_model_id = pm.id
AND qi.inspect_state = 1
@@ -376,20 +418,31 @@
</select>
<select id="getTopParameters" resultType="com.ruoyi.quality.dto.QualityParameterStatDto">
- WITH parameter_counts AS (SELECT qip.parameter_item AS name,
+ WITH RECURSIVE product_type AS (SELECT id,
+ CASE
+ WHEN product_name LIKE '%鍗婃垚鍝�%' THEN 1
+ WHEN product_name LIKE '%鎴愬搧%' THEN 2
+ WHEN product_name LIKE '%鍘熸潗鏂�%' THEN 0
+ END AS modelType
+ FROM product
+ WHERE parent_id IS NULL
+ UNION ALL
+ SELECT p.id,
+ pt.modelType
+ FROM product p
+ INNER JOIN product_type pt ON p.parent_id = pt.id),
+ parameter_counts AS (SELECT qip.parameter_item AS name,
COUNT(*) AS count
FROM quality_inspect_param qip
JOIN quality_inspect qi
ON qip.inspect_id = qi.id
- JOIN product p
- ON qi.product_id = p.id
- JOIN product pp
- ON p.parent_id = pp.id
+ JOIN product_type pt
+ ON qi.product_id = pt.id
WHERE qi.inspect_state = 1
AND (
- (#{modelType} = 1 AND pp.product_name = '鍘熸潗鏂�')
- OR (#{modelType} = 2 AND pp.product_name = '鍗婃垚鍝�')
- OR (#{modelType} = 3 AND pp.product_name = '鎴愬搧')
+ (#{modelType} = 1 AND pt.modelType = 0)
+ OR (#{modelType} = 2 AND pt.modelType = 1)
+ OR (#{modelType} = 3 AND pt.modelType = 2)
)
GROUP BY qip.parameter_item),
ranked AS (SELECT name,
@@ -420,6 +473,23 @@
ORDER BY rn;
</select>
+ <select id="selectOneData" resultType="com.ruoyi.quality.pojo.QualityInspect">
+ select *,
+ case
+ when inspect_material_condition = '妫�楠岀敤绮夊墏' then
+ '鈽�'
+ else
+ '鈽�'
+ end as inspect_material_condition_a,
+ case
+ when inspect_material_condition = '妫�楠岀敤娑插墏' then
+ '鈽�'
+ else
+ '鈽�'
+ end as inspect_material_condition_b
+ from quality_inspect
+ where id = #{id};
+ </select>
</mapper>
--
Gitblit v1.9.3