From 66d041ed14b3ed3ed7183a28a5c588e235fc21d0 Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期二, 26 五月 2026 11:14:07 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_pro_河南鹤壁' into dev_鹤壁_强信宇_pro
---
src/main/resources/mapper/quality/QualityInspectMapper.xml | 308 ++++++++++++++++++---------------------------------
1 files changed, 109 insertions(+), 199 deletions(-)
diff --git a/src/main/resources/mapper/quality/QualityInspectMapper.xml b/src/main/resources/mapper/quality/QualityInspectMapper.xml
index f252881..72f166c 100644
--- a/src/main/resources/mapper/quality/QualityInspectMapper.xml
+++ b/src/main/resources/mapper/quality/QualityInspectMapper.xml
@@ -4,6 +4,10 @@
<select id="qualityInspectListPage" resultType="com.ruoyi.quality.dto.QualityInspectDto">
SELECT
qi.*,
+ CASE
+ WHEN (IFNULL(qi.qualified_quantity, 0) + IFNULL(qi.unqualified_quantity, 0)) = 0 THEN 0
+ ELSE ROUND(IFNULL(qi.qualified_quantity, 0) / (IFNULL(qi.qualified_quantity, 0) + IFNULL(qi.unqualified_quantity, 0)) * 100, 2)
+ END AS passRate,
<choose>
<when test="qualityInspect.inspectType == 0">
pl.purchase_contract_number as purchase_contract_no
@@ -59,7 +63,11 @@
<select id="qualityInspectExport" resultType="com.ruoyi.quality.pojo.QualityInspect">
SELECT
- *
+ qi.*,
+ CASE
+ WHEN (IFNULL(qi.qualified_quantity, 0) + IFNULL(qi.unqualified_quantity, 0)) = 0 THEN 0
+ ELSE ROUND(IFNULL(qi.qualified_quantity, 0) / (IFNULL(qi.qualified_quantity, 0) + IFNULL(qi.unqualified_quantity, 0)) * 100, 2)
+ END AS passRate
FROM quality_inspect
where
inspect_type=#{qualityInspect.inspectType}
@@ -86,11 +94,7 @@
</delete>
<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,
+ SELECT qi.inspect_type AS modelType,
IFNULL(SUM(qi.quantity), 0) AS totalCount,
@@ -99,107 +103,44 @@
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
- LEFT JOIN quality_inspect qi
- ON qi.product_model_id = pm.id
+ FROM quality_inspect qi
- WHERE pp.product_name IN ('鍘熸潗鏂�', '鍗婃垚鍝�', '鎴愬搧')
-
- GROUP BY pp.product_name
+ GROUP BY qi.inspect_type
</select>
<select id="getPassRateStatistics" resultType="com.ruoyi.quality.dto.QualityPassRateDto">
SELECT t.modelType,
+ t.totalCount,
+ t.completedCount,
+ t.qualifiedCount,
+ t.unqualifiedCount,
- COALESCE(SUM(qi.quantity), 0) AS totalCount,
+ /* 瀹屾垚鐜囷細
+ 濡傛灉鎬绘暟涓� 0 鍒欒繑鍥� 0锛涘惁鍒欒绠楁瘮渚嬶紝浣跨敤 TRUNCATE 淇濈暀 4 浣嶅皬鏁帮紙濡� 99.9992锛�
+ */
+ IF(t.totalCount = 0, 0,
+ TRUNCATE((t.completedCount / t.totalCount) * 100, 2)
+ ) AS completionRate,
- 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(
- COALESCE(SUM(
- CASE
- WHEN qi.inspect_state = 1 THEN qi.quantity
- ELSE 0
- END
- ), 0)
- / SUM(qi.quantity) * 100, 2)
- ) AS completionRate,
-
- /* 鍚堟牸鐜� */
- IF(COALESCE(SUM(
- CASE
- WHEN qi.inspect_state = 1 THEN qi.quantity
- ELSE 0
- END
- ), 0) = 0, 0,
- ROUND(
- COALESCE(SUM(
- CASE
- WHEN qi.inspect_state = 1
- AND qi.check_result = '鍚堟牸'
- THEN qi.quantity
- ELSE 0
- END
- ), 0)
- /
- COALESCE(SUM(
- CASE
- WHEN qi.inspect_state = 1 THEN qi.quantity
- ELSE 0
- END
- ), 0) * 100, 2)
- ) AS passRate
-
- 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 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
+ /* 鍚堟牸鐜囷細
+ 濡傛灉瀹屽伐鏁颁负 0 鍒欒繑鍥� 0锛涗娇鐢� TRUNCATE 鎴柇锛岄槻姝㈡瀬鍏舵帴杩� 100% 鐨勬暟鎹鍥涜垗浜斿叆鎴� 100
+ */
+ IF(t.completedCount = 0, 0,
+ TRUNCATE((t.qualifiedCount / t.completedCount) * 100, 2)
+ ) AS passRate
+ FROM (
+ /* 鍏堥�氳繃瀛愭煡璇㈡妸鍩虹鏁版嵁杩涜鑱氬悎缁熻锛岄伩鍏嶅灞傞噸澶嶇紪鍐欏鏉傜殑 CASE WHEN */
+ SELECT qi.inspect_type AS 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 THEN qi.qualified_quantity ELSE 0 END),
+ 0) AS qualifiedCount,
+ COALESCE(SUM(CASE WHEN qi.inspect_state = 1 THEN qi.unqualified_quantity ELSE 0 END),
+ 0) AS unqualifiedCount
+ FROM quality_inspect qi
+ GROUP BY qi.inspect_type) t
ORDER BY t.modelType;
</select>
@@ -220,45 +161,74 @@
FROM months m
CROSS JOIN types t)
- SELECT CASE b.month_num
- WHEN 1 THEN '涓�鏈�'
- WHEN 2 THEN '浜屾湀'
- WHEN 3 THEN '涓夋湀'
- WHEN 4 THEN '鍥涙湀'
- WHEN 5 THEN '浜旀湀'
- WHEN 6 THEN '鍏湀'
- WHEN 7 THEN '涓冩湀'
- WHEN 8 THEN '鍏湀'
- WHEN 9 THEN '涔濇湀'
- WHEN 10 THEN '鍗佹湀'
- WHEN 11 THEN '鍗佷竴鏈�'
- WHEN 12 THEN '鍗佷簩鏈�'
- END AS month,
+ SELECT
+ CASE t.month_num
+ WHEN 1 THEN '涓�鏈�'
+ WHEN 2 THEN '浜屾湀'
+ WHEN 3 THEN '涓夋湀'
+ WHEN 4 THEN '鍥涙湀'
+ WHEN 5 THEN '浜旀湀'
+ WHEN 6 THEN '鍏湀'
+ WHEN 7 THEN '涓冩湀'
+ WHEN 8 THEN '鍏湀'
+ WHEN 9 THEN '涔濇湀'
+ WHEN 10 THEN '鍗佹湀'
+ WHEN 11 THEN '鍗佷竴鏈�'
+ WHEN 12 THEN '鍗佷簩鏈�'
+ END AS month,
- b.modelType,
+ t.modelType,
+ t.totalCount,
+ t.completedCount,
+ t.qualifiedCount,
+ t.unqualifiedCount,
- /* 鎬绘暟閲� */
+ IF(t.totalCount = 0, 0,
+ TRUNCATE((t.completedCount / t.totalCount) * 100, 2)
+ ) AS completionRate,
+
+ IF(t.completedCount = 0, 0,
+ TRUNCATE((t.qualifiedCount / t.completedCount) * 100, 2)
+ ) AS passRate
+
+ FROM (
+ SELECT
+ b.month_num,
+ b.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 THEN qi.qualified_quantity ELSE 0 END), 0) AS qualifiedCount,
+ COALESCE(SUM(CASE WHEN qi.inspect_state = 1 THEN qi.unqualified_quantity ELSE 0 END), 0) AS unqualifiedCount
+ FROM base b
+ LEFT JOIN quality_inspect qi ON qi.inspect_type = b.modelType
+ AND YEAR(qi.check_time) = #{year}
+ AND MONTH(qi.check_time) = b.month_num
+ GROUP BY b.month_num, b.modelType
+ ) t
+ ORDER BY t.month_num, t.modelType;
+ </select>
+ <select id="getYearlyPassRateStatistics" resultType="com.ruoyi.quality.dto.QualityPassRateDto">
+ SELECT qi.inspect_type AS 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
+ WHEN qi.inspect_state = 1 THEN qi.quantity
+ ELSE 0
+ END
+ ), 0) AS completedCount,
+
+ COALESCE(SUM(
+ CASE
+ WHEN qi.inspect_state = 1 THEN qi.qualified_quantity
ELSE 0
END
), 0) AS qualifiedCount,
- /* 涓嶅悎鏍� */
COALESCE(SUM(
CASE
- WHEN qi.inspect_state = 1 AND qi.check_result = '涓嶅悎鏍�'
- THEN qi.quantity
+ WHEN qi.inspect_state = 1 THEN qi.unqualified_quantity
ELSE 0
END
), 0) AS unqualifiedCount,
@@ -268,8 +238,8 @@
ROUND(
COALESCE(SUM(
CASE WHEN qi.inspect_state = 1 THEN qi.quantity ELSE 0 END
- ), 0) / SUM(qi.quantity) * 100, 2
- )
+ ), 0)
+ / SUM(qi.quantity) * 100, 2)
) AS completionRate,
/* 鍚堟牸鐜� */
@@ -278,66 +248,18 @@
), 0) = 0, 0,
ROUND(
COALESCE(SUM(
- CASE
- WHEN qi.inspect_state = 1 AND qi.check_result = '鍚堟牸'
- THEN qi.quantity
- ELSE 0
- END
+ CASE WHEN qi.inspect_state = 1 THEN qi.qualified_quantity ELSE 0 END
), 0)
/
COALESCE(SUM(
CASE WHEN qi.inspect_state = 1 THEN qi.quantity ELSE 0 END
- ), 0) * 100, 2
- )
+ ), 0) * 100, 2)
) 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 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;
-
- </select>
-
- <select id="getYearlyPassRateStatistics" resultType="com.ruoyi.quality.dto.QualityPassRateDto">
- 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
-
- 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 quality_inspect qi
- ON qi.product_model_id = pm.id
- AND YEAR(qi.check_time) = #{year}
- AND qi.inspect_state = 1
- AND qi.check_result = '鍚堟牸'
-
- GROUP BY t.modelType
- ORDER BY t.modelType;
+ FROM quality_inspect qi
+ WHERE YEAR(qi.check_time) = #{year}
+ GROUP BY qi.inspect_type
+ ORDER BY qi.inspect_type;
</select>
@@ -366,7 +288,7 @@
/* 鍘熸潗鏂� */
COALESCE(SUM(
CASE
- WHEN pp.product_name = '鍘熸潗鏂�'
+ WHEN qi.inspect_type = 0
THEN qi.quantity
ELSE 0
END
@@ -375,7 +297,7 @@
/* 鍗婃垚鍝� */
COALESCE(SUM(
CASE
- WHEN pp.product_name = '鍗婃垚鍝�'
+ WHEN qi.inspect_type = 1
THEN qi.quantity
ELSE 0
END
@@ -384,19 +306,15 @@
/* 鎴愬搧 */
COALESCE(SUM(
CASE
- WHEN pp.product_name = '鎴愬搧'
+ WHEN qi.inspect_type = 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 quality_inspect qi
- ON qi.product_model_id = pm.id
- AND qi.inspect_state = 1
+ ON qi.inspect_state = 1
AND YEAR(qi.check_time) = #{year}
AND MONTH(qi.check_time) = m.month_num
@@ -411,16 +329,8 @@
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
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 = '鎴愬搧')
- )
+ AND qi.inspect_type = #{modelType} - 1
GROUP BY qip.parameter_item),
ranked AS (SELECT name,
count,
--
Gitblit v1.9.3