From 2eaeb19b16af087d17c186c6220bf64f2fc07f4f Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期四, 07 五月 2026 14:51:57 +0800
Subject: [PATCH] 手动下单:检验中订单撤销报错问题修复

---
 inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml |   85 ++++++++++++++++++++++++++++++++++--------
 1 files changed, 69 insertions(+), 16 deletions(-)

diff --git a/inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml b/inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml
index 40c572b..dac3f18 100644
--- a/inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml
+++ b/inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml
@@ -85,14 +85,29 @@
         SELECT
         DATE(io1.send_time) AS day,
         COUNT(*) AS total,
-        SUM(CASE WHEN iiq.inspect_status = 1 THEN 1 ELSE 0 END) AS qualified,
-        SUM(CASE WHEN iiq.inspect_status = 2 or iiq.inspect_status = 4 THEN 1 ELSE 0 END) AS unQualified
+        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
         FROM ifs_inventory_quantity iiq
         LEFT JOIN ins_order io1
         ON io1.ifs_inventory_id = iiq.id
         AND io1.order_type = #{dto.orderType}
         AND io1.state != -1
         AND io1.send_time BETWEEN #{dto.beginDate} AND #{dto.endDate}
+        LEFT JOIN (
+            SELECT
+                iuh.id,
+                coa.operation,
+                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
+        ) iuh ON iiq.id = iuh.inventory_quantity_id
         LEFT JOIN (
         SELECT ins_order_id, MAX(sample) AS sample, MAX(model) AS model
         FROM ins_sample
@@ -159,14 +174,29 @@
         SELECT
         MONTH(io1.send_time) AS month,
         COUNT(*) AS total,
-        SUM(CASE WHEN iiq.inspect_status = 1 THEN 1 ELSE 0 END) AS qualified,
-        SUM(CASE WHEN iiq.inspect_status = 2 or iiq.inspect_status = 4 THEN 1 ELSE 0 END) AS unQualified
+        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
         FROM ifs_inventory_quantity iiq
         LEFT JOIN ins_order io1
         ON io1.ifs_inventory_id = iiq.id
         AND io1.order_type = #{dto.orderType}
         AND io1.state != -1
         AND io1.send_time BETWEEN #{dto.beginDate} AND #{dto.endDate}
+        LEFT JOIN (
+            SELECT
+            iuh.id,
+            coa.operation,
+            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
+        ) iuh ON iiq.id = iuh.inventory_quantity_id
         LEFT JOIN (
         SELECT ins_order_id, MAX(sample) AS sample, MAX(model) AS model
         FROM ins_sample
@@ -202,17 +232,27 @@
         SELECT
         COUNT(*) AS sum,
         /* 鍚堟牸 */
-        SUM(CASE WHEN iiq.inspect_status = 1 THEN 1 ELSE 0 END) AS qualified,
+        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 iiq.inspect_status = 4 THEN 1 ELSE 0 END) AS unQualified,
-        ROUND(
-        SUM(CASE WHEN iiq.inspect_status = 1 THEN 1 ELSE 0 END)
-        / COUNT(*) * 100,
-        2
-        ) AS passRate
+        SUM(CASE WHEN iiq.inspect_status = 2 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,
+            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
+        ) iuh ON iiq.id = iuh.inventory_quantity_id
         LEFT JOIN (
         SELECT
         is2.ins_order_id,
@@ -249,17 +289,30 @@
     <select id="getMaterialPropTable" resultType="com.ruoyi.inspect.dto.MaterialPropTableDTO">
         SELECT
         iiq.supplier_name AS supplierName,
-        COUNT(*) AS totalBatch,
-        SUM(CASE WHEN iiq.inspect_status = 2 or iiq.inspect_status = 4 THEN 1 ELSE 0 END) AS unqualifiedBatch,
-        ROUND(SUM(CASE WHEN iiq.inspect_status = 1 THEN 1 ELSE 0 END) / COUNT(*)* 100, 2 ) AS passRate
-
+        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,
+        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
         ON io1.ifs_inventory_id = iiq.id
         AND io1.order_type = #{dto.orderType}
         AND io1.state != -1
         AND io1.send_time BETWEEN #{dto.beginDate} AND #{dto.endDate}
-
+        LEFT JOIN (
+            SELECT
+            iuh.id,
+            coa.operation,
+            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
+        ) iuh ON iiq.id = iuh.inventory_quantity_id
         LEFT JOIN (
         SELECT
         ins_order_id,

--
Gitblit v1.9.3