From 288c8e2d24ee2db081ba818e6b42ea52eb9c4ca2 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期三, 01 七月 2026 11:14:43 +0800
Subject: [PATCH] 不合格处理调整&合格率统计调整

---
 inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml |   66 +++++++++-----------------------
 1 files changed, 19 insertions(+), 47 deletions(-)

diff --git a/inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml b/inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml
index dac3f18..d0b90ba 100644
--- a/inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml
+++ b/inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml
@@ -85,8 +85,8 @@
         SELECT
         DATE(io1.send_time) AS day,
         COUNT(*) AS total,
-        SUM(CASE WHEN iiq.inspect_status = 1 or (iuh.id is null) THEN 1 ELSE 0 END) AS qualified,
-        SUM(CASE WHEN iiq.inspect_status = 2 or (iuh.id is not null) THEN 1 ELSE 0 END) AS unQualified
+        SUM(CASE WHEN iiq.inspect_status = 1 and (iuh.id is null) THEN 1 ELSE 0 END) AS qualified,
+        SUM(CASE WHEN iiq.inspect_status != 1 or (iuh.id is not null) THEN 1 ELSE 0 END) AS unQualified
         FROM ifs_inventory_quantity iiq
         LEFT JOIN ins_order io1
         ON io1.ifs_inventory_id = iiq.id
@@ -95,18 +95,11 @@
         AND io1.send_time BETWEEN #{dto.beginDate} AND #{dto.endDate}
         LEFT JOIN (
             SELECT
-                iuh.id,
-                coa.operation,
+                MAX(iuh.id) AS id,
                 iuh.inventory_quantity_id
             FROM ins_unqualified_handler iuh
-            LEFT JOIN (
-            SELECT
-            *,
-            ROW_NUMBER() OVER (PARTITION BY workflow_id ORDER BY approval_date DESC,approval_time DESC, id DESC) AS rn
-            FROM
-            common_oa
-            ) AS coa ON iuh.request_id = coa.workflow_id AND coa.rn = 1
-            WHERE coa.operation !='閫�鍥�' AND coa.operation is not null
+            WHERE iuh.oa_state !=4 AND iuh.oa_state is not null
+            GROUP BY iuh.inventory_quantity_id
         ) iuh ON iiq.id = iuh.inventory_quantity_id
         LEFT JOIN (
         SELECT ins_order_id, MAX(sample) AS sample, MAX(model) AS model
@@ -174,8 +167,8 @@
         SELECT
         MONTH(io1.send_time) AS month,
         COUNT(*) AS total,
-        SUM(CASE WHEN iiq.inspect_status = 1 or (iuh.id is null) THEN 1 ELSE 0 END) AS qualified,
-        SUM(CASE WHEN iiq.inspect_status = 2 or (iuh.id is not null) THEN 1 ELSE 0 END) AS unQualified
+        SUM(CASE WHEN iiq.inspect_status = 1 and (iuh.id is null) THEN 1 ELSE 0 END) AS qualified,
+        SUM(CASE WHEN iiq.inspect_status != 1 or (iuh.id is not null) THEN 1 ELSE 0 END) AS unQualified
         FROM ifs_inventory_quantity iiq
         LEFT JOIN ins_order io1
         ON io1.ifs_inventory_id = iiq.id
@@ -184,18 +177,11 @@
         AND io1.send_time BETWEEN #{dto.beginDate} AND #{dto.endDate}
         LEFT JOIN (
             SELECT
-            iuh.id,
-            coa.operation,
+            MAX(iuh.id) AS id,
             iuh.inventory_quantity_id
             FROM ins_unqualified_handler iuh
-            LEFT JOIN (
-            SELECT
-            *,
-            ROW_NUMBER() OVER (PARTITION BY workflow_id ORDER BY approval_date DESC,approval_time DESC, id DESC) AS rn
-            FROM
-            common_oa
-            ) AS coa ON iuh.request_id = coa.workflow_id AND coa.rn = 1
-            WHERE coa.operation !='閫�鍥�' AND coa.operation is not null
+            WHERE iuh.oa_state !=4 AND iuh.oa_state is not null
+            GROUP BY iuh.inventory_quantity_id
         ) iuh ON iiq.id = iuh.inventory_quantity_id
         LEFT JOIN (
         SELECT ins_order_id, MAX(sample) AS sample, MAX(model) AS model
@@ -232,26 +218,19 @@
         SELECT
         COUNT(*) AS sum,
         /* 鍚堟牸 */
-        SUM(CASE WHEN iiq.inspect_status = 1 or (iuh.id is null) THEN 1 ELSE 0 END) AS qualified,
+        SUM(CASE WHEN iiq.inspect_status = 1 and (iuh.id is null) THEN 1 ELSE 0 END) AS qualified,
         /* 涓嶅悎鏍� */
-        SUM(CASE WHEN iiq.inspect_status = 2 or (iuh.id is not null) THEN 1 ELSE 0 END) AS unQualified
+        SUM(CASE WHEN iiq.inspect_status != 1 or (iuh.id is not null) THEN 1 ELSE 0 END) AS unQualified
         FROM ifs_inventory_quantity iiq
         INNER JOIN ins_order io1
         ON io1.ifs_inventory_id = iiq.id
         LEFT JOIN (
             SELECT
-            iuh.id,
-            coa.operation,
+            MAX(iuh.id) AS id,
             iuh.inventory_quantity_id
             FROM ins_unqualified_handler iuh
-            LEFT JOIN (
-            SELECT
-            *,
-            ROW_NUMBER() OVER (PARTITION BY workflow_id ORDER BY approval_date DESC,approval_time DESC, id DESC) AS rn
-            FROM
-            common_oa
-            ) AS coa ON iuh.request_id = coa.workflow_id AND coa.rn = 1
-            WHERE coa.operation !='閫�鍥�' AND coa.operation is not null
+            WHERE iuh.oa_state !=4 AND iuh.oa_state is not null
+            GROUP BY iuh.inventory_quantity_id
         ) iuh ON iiq.id = iuh.inventory_quantity_id
         LEFT JOIN (
         SELECT
@@ -290,7 +269,7 @@
         SELECT
         iiq.supplier_name AS supplierName,
         COUNT(iiq.id) AS totalBatch,
-        SUM(CASE WHEN iiq.inspect_status = 2 or (iuh.id is not null) THEN 1 ELSE 0 END) AS unqualifiedBatch,
+        SUM(CASE WHEN iiq.inspect_status != 1 or (iuh.id is not null) THEN 1 ELSE 0 END) AS unqualifiedBatch,
         ROUND(SUM(CASE WHEN iiq.inspect_status = 1 and iuh.id is null THEN 1 ELSE 0 END) / COUNT(*)* 100, 2 ) AS passRate
         FROM ifs_inventory_quantity iiq
         INNER JOIN ins_order io1
@@ -300,18 +279,11 @@
         AND io1.send_time BETWEEN #{dto.beginDate} AND #{dto.endDate}
         LEFT JOIN (
             SELECT
-            iuh.id,
-            coa.operation,
+            MAX(iuh.id) AS id,
             iuh.inventory_quantity_id
             FROM ins_unqualified_handler iuh
-            LEFT JOIN (
-            SELECT
-            *,
-            ROW_NUMBER() OVER (PARTITION BY workflow_id ORDER BY approval_date DESC,approval_time DESC, id DESC) AS rn
-            FROM
-            common_oa
-            ) AS coa ON iuh.request_id = coa.workflow_id AND coa.rn = 1
-            WHERE coa.operation !='閫�鍥�' AND coa.operation is not null
+            WHERE iuh.oa_state !=4 AND iuh.oa_state is not null
+            GROUP BY iuh.inventory_quantity_id
         ) iuh ON iiq.id = iuh.inventory_quantity_id
         LEFT JOIN (
         SELECT

--
Gitblit v1.9.3