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 |   48 +++++++++++++++++++++++++++++++++++-------------
 1 files changed, 35 insertions(+), 13 deletions(-)

diff --git a/src/main/resources/mapper/quality/QualityInspectMapper.xml b/src/main/resources/mapper/quality/QualityInspectMapper.xml
index 6f84cc0..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,
@@ -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
 
@@ -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
 
@@ -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
 

--
Gitblit v1.9.3