From 054381d20e23e30cfb3fe962e00be6a3ded3ee2b Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期五, 15 五月 2026 15:51:03 +0800
Subject: [PATCH] feat: 质检数量区分合格/不合格数量
---
src/main/resources/mapper/quality/QualityInspectMapper.xml | 80 +++++++++++++++++++++++++--------------
1 files changed, 51 insertions(+), 29 deletions(-)
diff --git a/src/main/resources/mapper/quality/QualityInspectMapper.xml b/src/main/resources/mapper/quality/QualityInspectMapper.xml
index 9260448..9c064b4 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,
@@ -127,7 +130,7 @@
id AS root_id,
product_name AS root_name
FROM product
- WHERE product_name IN ('鍘熸枡', '鍗婃垚鍝�', '鎴愬搧')
+ WHERE product_name IN ('鍘熸潗鏂�', '鍗婃垚鍝�', '鎴愬搧')
UNION ALL
SELECT p.id,
p.parent_id,
@@ -137,7 +140,7 @@
FROM product p
INNER JOIN product_tree pt ON p.parent_id = pt.id)
SELECT CASE pt.root_name
- WHEN '鍘熸枡' THEN 0
+ WHEN '鍘熸潗鏂�' THEN 0
WHEN '鍗婃垚鍝�' THEN 1
WHEN '鎴愬搧' THEN 2
END AS modelType,
@@ -159,12 +162,12 @@
WITH RECURSIVE product_tree AS (SELECT id,
product_name,
CASE product_name
- WHEN '鍘熸枡' THEN 0
+ WHEN '鍘熸潗鏂�' THEN 0
WHEN '鍗婃垚鍝�' THEN 1
WHEN '鎴愬搧' THEN 2
END AS modelType
FROM product
- WHERE product_name IN ('鍘熸枡', '鍗婃垚鍝�', '鎴愬搧')
+ WHERE product_name IN ('鍘熸潗鏂�', '鍗婃垚鍝�', '鎴愬搧')
UNION ALL
@@ -177,10 +180,14 @@
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,
+ 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,
ROUND(SUM(CASE WHEN qi.inspect_state = 1 THEN qi.quantity ELSE 0 END)
@@ -188,7 +195,10 @@
) 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)
+ 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
@@ -215,12 +225,12 @@
product_tree AS (SELECT id,
product_name,
CASE product_name
- WHEN '鍘熸枡' THEN 0
+ WHEN '鍘熸潗鏂�' THEN 0
WHEN '鍗婃垚鍝�' THEN 1
WHEN '鎴愬搧' THEN 2
END AS modelType
FROM product
- WHERE product_name IN ('鍘熸枡', '鍗婃垚鍝�', '鎴愬搧')
+ WHERE product_name IN ('鍘熸潗鏂�', '鍗婃垚鍝�', '鎴愬搧')
UNION ALL
@@ -249,10 +259,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 +275,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
@@ -283,12 +300,12 @@
product_tree AS (SELECT id,
product_name,
CASE product_name
- WHEN '鍘熸枡' THEN 0
+ WHEN '鍘熸潗鏂�' THEN 0
WHEN '鍗婃垚鍝�' THEN 1
WHEN '鎴愬搧' THEN 2
END AS modelType
FROM product
- WHERE product_name IN ('鍘熸枡', '鍗婃垚鍝�', '鎴愬搧')
+ WHERE product_name IN ('鍘熸潗鏂�', '鍗婃垚鍝�', '鎴愬搧')
UNION ALL
@@ -306,11 +323,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
@@ -333,7 +355,7 @@
WHERE month_num < 12),
product_tree AS (SELECT id, product_name AS root_name
FROM product
- WHERE product_name IN ('鍘熸枡', '鍗婃垚鍝�', '鎴愬搧')
+ WHERE product_name IN ('鍘熸潗鏂�', '鍗婃垚鍝�', '鎴愬搧')
UNION ALL
@@ -355,7 +377,7 @@
WHEN 12 THEN '鍗佷簩鏈�'
END AS month,
- COALESCE(SUM(CASE WHEN pt.root_name = '鍘熸枡' THEN qi.quantity ELSE 0 END), 0) AS rawMaterialCount,
+ COALESCE(SUM(CASE WHEN pt.root_name = '鍘熸潗鏂�' THEN qi.quantity ELSE 0 END), 0) AS rawMaterialCount,
COALESCE(SUM(CASE WHEN pt.root_name = '鍗婃垚鍝�' THEN qi.quantity ELSE 0 END), 0) AS processCount,
@@ -380,7 +402,7 @@
root_node AS (SELECT id, product_name
FROM product
WHERE (
- (#{modelType} = 1 AND product_name = '鍘熸枡')
+ (#{modelType} = 1 AND product_name = '鍘熸潗鏂�')
OR (#{modelType} = 2 AND product_name = '鍗婃垚鍝�')
OR (#{modelType} = 3 AND product_name = '鎴愬搧')
)),
@@ -392,11 +414,11 @@
INNER JOIN target_ids ti ON p.parent_id = ti.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
- WHERE qi.inspect_state = 1
- AND qi.product_id IN (SELECT id FROM target_ids)
- GROUP BY qip.parameter_item),
+ FROM quality_inspect_param qip
+ JOIN quality_inspect qi ON qip.inspect_id = qi.id
+ WHERE qi.inspect_state = 1
+ AND qi.product_id IN (SELECT id FROM target_ids)
+ GROUP BY qip.parameter_item),
ranked AS (SELECT name, count, ROW_NUMBER() OVER (ORDER BY count DESC) AS rn
FROM parameter_counts),
total AS (SELECT SUM(count) AS total_count
--
Gitblit v1.9.3