From c80a342eacd6b639c486eb47afdf04984d54183e Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期二, 03 二月 2026 13:25:13 +0800
Subject: [PATCH] 不合格管理:重新提交oa功能调整3

---
 inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml |   54 ++++++++++++++++++++++++++++++------------------------
 1 files changed, 30 insertions(+), 24 deletions(-)

diff --git a/inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml b/inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml
index 749041b..d678343 100644
--- a/inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml
+++ b/inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml
@@ -26,7 +26,7 @@
         SELECT
         DAYOFWEEK(io1.send_time) AS week,
         SUM(CASE WHEN iiq.inspect_status = 1 THEN 1 ELSE 0 END) AS qualified,
-        SUM(CASE WHEN iiq.inspect_status = 2 THEN 1 ELSE 0 END) AS unQualified
+        SUM(CASE WHEN iiq.inspect_status = 2 or iiq.inspect_status = 4 THEN 1 ELSE 0 END) AS unQualified
         FROM ifs_inventory_quantity iiq
         INNER JOIN ins_order io1
         ON io1.ifs_inventory_id = iiq.id
@@ -37,7 +37,7 @@
         ) ins ON ins.ins_order_id = io1.id
         WHERE
         iiq.is_finish = 1
-        AND iiq.inspect_status IN (1, 2)
+        AND iiq.inspect_status IN (1, 2,4)
         AND io1.order_type = #{dto.orderType}
         AND io1.state != -1
         AND io1.send_time BETWEEN #{dto.beginDate} AND #{dto.endDate}
@@ -85,14 +85,15 @@
         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 THEN 1 ELSE 0 END) AS unQualified
+        SUM(CASE WHEN iiq.inspect_status = 1 or (iiq.inspect_status = 4 AND iuh.id is null) THEN 1 ELSE 0 END) AS qualified,
+        SUM(CASE WHEN iiq.inspect_status = 2 or (iiq.inspect_status = 4 AND 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 ins_unqualified_handler 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
@@ -100,7 +101,7 @@
         ) ins ON ins.ins_order_id = io1.id
         WHERE
         iiq.is_finish = 1
-        AND iiq.inspect_status IN (1,2)
+        AND iiq.inspect_status IN (1,2,4)
 
         <if test="dto.materialProp != null and dto.materialProp != ''">
             AND IFNULL(iiq.material_prop,'') LIKE CONCAT('%',#{dto.materialProp},'%')
@@ -114,7 +115,9 @@
         <if test="dto.supplierName != null and dto.supplierName != ''">
             AND IFNULL(iiq.supplier_name,'') LIKE CONCAT('%',#{dto.supplierName},'%')
         </if>
-
+        <if test="dto.contract != null and dto.contract != ''">
+            AND IFNULL(iiq.contract,'') = #{dto.contract}
+        </if>
         GROUP BY DATE(io1.send_time)
         ) sub ON ad.day = sub.day
         ORDER BY ad.day
@@ -157,14 +160,15 @@
         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 THEN 1 ELSE 0 END) AS unQualified
+        SUM(CASE WHEN iiq.inspect_status = 1 or (iiq.inspect_status = 4 AND iuh.id is null) THEN 1 ELSE 0 END) AS qualified,
+        SUM(CASE WHEN iiq.inspect_status = 2 or (iiq.inspect_status = 4 AND 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 ins_unqualified_handler 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
@@ -172,7 +176,7 @@
         ) ins ON ins.ins_order_id = io1.id
         WHERE
         iiq.is_finish = 1
-        AND iiq.inspect_status IN (1,2)
+        AND iiq.inspect_status IN (1,2,4)
 
         <if test="dto.materialProp != null and dto.materialProp != ''">
             AND IFNULL(iiq.material_prop,'') LIKE CONCAT('%',#{dto.materialProp},'%')
@@ -186,7 +190,9 @@
         <if test="dto.supplierName != null and dto.supplierName != ''">
             AND IFNULL(iiq.supplier_name,'') LIKE CONCAT('%',#{dto.supplierName},'%')
         </if>
-
+        <if test="dto.contract != null and dto.contract != ''">
+            AND IFNULL(iiq.contract,'') = #{dto.contract}
+        </if>
         GROUP BY MONTH(io1.send_time)
         ) sub ON am.month = sub.month
         ORDER BY am.month
@@ -198,17 +204,13 @@
         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 (iiq.inspect_status = 4 AND iuh.id is null) THEN 1 ELSE 0 END) AS qualified,
         /* 涓嶅悎鏍� */
-        SUM(CASE WHEN iiq.inspect_status = 2 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 (iiq.inspect_status = 4 AND 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 ins_unqualified_handler iuh ON iiq.id = iuh.inventory_quantity_id
         LEFT JOIN (
         SELECT
         is2.ins_order_id,
@@ -220,7 +222,7 @@
         ) ins ON ins.ins_order_id = io1.id
         WHERE
         iiq.is_finish = 1
-        AND iiq.inspect_status IN (1, 2)
+        AND iiq.inspect_status IN (1, 2,4)
         AND io1.order_type = #{dto.orderType}
         AND io1.state != -1
         AND io1.send_time BETWEEN #{dto.beginDate} AND #{dto.endDate}
@@ -237,22 +239,24 @@
         <if test="dto.supplierName != null and dto.supplierName.trim() != ''">
             AND IFNULL(iiq.supplier_name, '') LIKE CONCAT('%', #{dto.supplierName}, '%')
         </if>
+        <if test="dto.contract != null and dto.contract != ''">
+            AND IFNULL(iiq.contract,'') = #{dto.contract}
+        </if>
     </select>
 
     <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 THEN 1 ELSE 0 END) AS unqualifiedBatch,
+        COUNT(iiq.id) AS totalBatch,
+        SUM(CASE WHEN iiq.inspect_status = 2 or (iiq.inspect_status = 4 AND iuh.id is not null) 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
-
         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 ins_unqualified_handler iuh ON iiq.id = iuh.inventory_quantity_id
         LEFT JOIN (
         SELECT
         ins_order_id,
@@ -264,7 +268,7 @@
 
         WHERE
         iiq.is_finish = 1
-        AND iiq.inspect_status IN (1,2)
+        AND iiq.inspect_status IN (1,2,4)
 
         <if test="dto.materialProp != null and dto.materialProp != ''">
             AND IFNULL(iiq.material_prop,'') LIKE CONCAT('%',#{dto.materialProp},'%')
@@ -281,7 +285,9 @@
         <if test="dto.supplierName != null and dto.supplierName != ''">
             AND IFNULL(iiq.supplier_name,'') LIKE CONCAT('%',#{dto.supplierName},'%')
         </if>
-
+        <if test="dto.contract != null and dto.contract != ''">
+            AND IFNULL(iiq.contract,'') = #{dto.contract}
+        </if>
         GROUP BY
         iiq.supplier_name
 

--
Gitblit v1.9.3