From caab0b18b4500c34173f0f932499b7324997ab92 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期四, 25 六月 2026 17:35:30 +0800
Subject: [PATCH] fix: 质检报表合格率修改
---
src/main/resources/mapper/quality/QualityInspectMapper.xml | 73 +++++++++++++++++-------------------
1 files changed, 34 insertions(+), 39 deletions(-)
diff --git a/src/main/resources/mapper/quality/QualityInspectMapper.xml b/src/main/resources/mapper/quality/QualityInspectMapper.xml
index 6f84cc0..7bf3332 100644
--- a/src/main/resources/mapper/quality/QualityInspectMapper.xml
+++ b/src/main/resources/mapper/quality/QualityInspectMapper.xml
@@ -15,6 +15,9 @@
qi.model,
ifnull(pm.unit, qi.unit) as unit,
qi.quantity,
+ qi.qualified_quantity,
+ qi.unqualified_quantity,
+ qi.pass_rate,
qi.check_company,
qi.check_result,
qi.create_time,
@@ -83,7 +86,7 @@
<if test="qualityInspect.approveUserIds != null and qualityInspect.approveUserIds != '' ">
AND qi.approve_user_ids like concat('%',#{qualityInspect.approveUserIds},'%')
</if>
- ORDER BY qi.id DESC
+ ORDER BY qi.create_time DESC
</select>
<select id="qualityInspectExport" resultType="com.ruoyi.quality.pojo.QualityInspect">
@@ -155,7 +158,7 @@
GROUP BY pt.root_id, pt.root_name
</select>
- <select id="getPassRateStatistics" resultType="com.ruoyi.quality.dto.QualityPassRateDto">
+ <select id="getRawPassRateStatistics" resultType="com.ruoyi.quality.pojo.QualityInspect">
WITH RECURSIVE product_tree AS (SELECT id,
product_name,
CASE product_name
@@ -174,35 +177,15 @@
FROM product p
INNER JOIN product_tree pt ON p.parent_id = pt.id)
- SELECT base.modelType,
- COALESCE(SUM(qi.quantity), 0) AS totalCount,
- COALESCE(SUM(CASE WHEN qi.inspect_state = 1 THEN qi.quantity ELSE 0 END), 0) AS completedCount,
- COALESCE(SUM(CASE WHEN qi.inspect_state = 1 AND qi.check_result = '鍚堟牸' THEN qi.quantity ELSE 0 END),
- 0) AS qualifiedCount,
- COALESCE(SUM(CASE WHEN qi.inspect_state = 1 AND qi.check_result = '涓嶅悎鏍�' THEN qi.quantity ELSE 0 END),
- 0) AS unqualifiedCount,
-
- IF(COALESCE(SUM(qi.quantity), 0) = 0, 0,
- ROUND(SUM(CASE WHEN qi.inspect_state = 1 THEN qi.quantity ELSE 0 END)
- / SUM(qi.quantity) * 100, 2)
- ) AS completionRate,
-
- IF(SUM(CASE WHEN qi.inspect_state = 1 THEN qi.quantity ELSE 0 END) = 0, 0,
- ROUND(SUM(CASE WHEN qi.inspect_state = 1 AND qi.check_result = '鍚堟牸' THEN qi.quantity ELSE 0 END)
- / SUM(CASE WHEN qi.inspect_state = 1 THEN qi.quantity ELSE 0 END) * 100, 2)
- ) AS passRate
-
- FROM (SELECT 0 AS modelType
- UNION ALL
- SELECT 1
- UNION ALL
- SELECT 2) base
- LEFT JOIN product_tree pt ON base.modelType = pt.modelType
- LEFT JOIN product_model pm ON pm.product_id = pt.id
- LEFT JOIN quality_inspect qi ON qi.product_model_id = pm.id
-
- GROUP BY base.modelType
- ORDER BY base.modelType
+ SELECT pt.modelType AS inspectType,
+ qi.quantity,
+ qi.inspect_state AS inspectState,
+ qi.check_result AS checkResult,
+ qi.qualified_quantity AS qualifiedQuantity,
+ qi.unqualified_quantity AS unqualifiedQuantity
+ FROM product_tree pt
+ INNER JOIN product_model pm ON pm.product_id = pt.id
+ INNER JOIN quality_inspect qi ON qi.product_model_id = pm.id
</select>
<select id="getMonthlyPassRateStatistics" resultType="com.ruoyi.quality.dto.QualityMonthlyPassRateDto">
@@ -249,10 +232,14 @@
COALESCE(SUM(qi.quantity), 0) AS totalCount,
COALESCE(SUM(CASE WHEN qi.inspect_state = 1 THEN qi.quantity ELSE 0 END), 0) AS completedCount,
- COALESCE(SUM(CASE WHEN qi.inspect_state = 1 AND qi.check_result = '鍚堟牸' THEN qi.quantity ELSE 0 END),
- 0) AS qualifiedCount,
- COALESCE(SUM(CASE WHEN qi.inspect_state = 1 AND qi.check_result = '涓嶅悎鏍�' THEN qi.quantity ELSE 0 END),
- 0) AS unqualifiedCount,
+ COALESCE(SUM(CASE
+ WHEN qi.inspect_state = 1 THEN IFNULL(qi.qualified_quantity,
+ CASE WHEN qi.check_result = '鍚堟牸' THEN IFNULL(qi.quantity, 0) ELSE 0 END)
+ ELSE 0 END), 0) AS qualifiedCount,
+ COALESCE(SUM(CASE
+ WHEN qi.inspect_state = 1 THEN IFNULL(qi.unqualified_quantity,
+ CASE WHEN qi.check_result IN ('涓嶅悎鏍�', '閮ㄥ垎鍚堟牸') THEN IFNULL(qi.quantity, 0) ELSE 0 END)
+ ELSE 0 END), 0) AS unqualifiedCount,
/* 瀹屾垚鐜� */
IF(COALESCE(SUM(qi.quantity), 0) = 0, 0,
@@ -261,7 +248,10 @@
/* 鍚堟牸鐜� */
IF(SUM(CASE WHEN qi.inspect_state = 1 THEN qi.quantity ELSE 0 END) = 0, 0,
- ROUND(SUM(CASE WHEN qi.inspect_state = 1 AND qi.check_result = '鍚堟牸' THEN qi.quantity ELSE 0 END)
+ ROUND(SUM(CASE
+ WHEN qi.inspect_state = 1 THEN IFNULL(qi.qualified_quantity,
+ CASE WHEN qi.check_result = '鍚堟牸' THEN IFNULL(qi.quantity, 0) ELSE 0 END)
+ ELSE 0 END)
/ SUM(CASE WHEN qi.inspect_state = 1 THEN qi.quantity ELSE 0 END) * 100, 2)
) AS passRate
@@ -306,11 +296,16 @@
COALESCE(SUM(CASE WHEN qi.inspect_state = 1 THEN qi.quantity ELSE 0 END), 0) AS completedCount,
- COALESCE(SUM(CASE WHEN qi.inspect_state = 1 AND qi.check_result = '鍚堟牸' THEN qi.quantity ELSE 0 END),
- 0) AS qualifiedCount,
+ COALESCE(SUM(CASE
+ WHEN qi.inspect_state = 1 THEN IFNULL(qi.qualified_quantity,
+ CASE WHEN qi.check_result = '鍚堟牸' THEN IFNULL(qi.quantity, 0) ELSE 0 END)
+ ELSE 0 END), 0) AS qualifiedCount,
IF(SUM(CASE WHEN qi.inspect_state = 1 THEN qi.quantity ELSE 0 END) = 0, 0,
- ROUND(SUM(CASE WHEN qi.inspect_state = 1 AND qi.check_result = '鍚堟牸' THEN qi.quantity ELSE 0 END)
+ ROUND(SUM(CASE
+ WHEN qi.inspect_state = 1 THEN IFNULL(qi.qualified_quantity,
+ CASE WHEN qi.check_result = '鍚堟牸' THEN IFNULL(qi.quantity, 0) ELSE 0 END)
+ ELSE 0 END)
/ SUM(CASE WHEN qi.inspect_state = 1 THEN qi.quantity ELSE 0 END) * 100, 2)
) AS passRate
--
Gitblit v1.9.3