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 | 57 +++++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 41 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..d0b90ba 100644
--- a/inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml
+++ b/inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml
@@ -85,14 +85,22 @@
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 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
AND io1.order_type = #{dto.orderType}
AND io1.state != -1
AND io1.send_time BETWEEN #{dto.beginDate} AND #{dto.endDate}
+ LEFT JOIN (
+ SELECT
+ MAX(iuh.id) AS id,
+ iuh.inventory_quantity_id
+ FROM ins_unqualified_handler iuh
+ 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
FROM ins_sample
@@ -159,14 +167,22 @@
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 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
AND io1.order_type = #{dto.orderType}
AND io1.state != -1
AND io1.send_time BETWEEN #{dto.beginDate} AND #{dto.endDate}
+ LEFT JOIN (
+ SELECT
+ MAX(iuh.id) AS id,
+ iuh.inventory_quantity_id
+ FROM ins_unqualified_handler iuh
+ 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
FROM ins_sample
@@ -202,17 +218,20 @@
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 and (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 != 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
+ MAX(iuh.id) AS id,
+ iuh.inventory_quantity_id
+ FROM ins_unqualified_handler iuh
+ 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
is2.ins_order_id,
@@ -249,17 +268,23 @@
<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 != 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
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
+ MAX(iuh.id) AS id,
+ iuh.inventory_quantity_id
+ FROM ins_unqualified_handler iuh
+ 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,
--
Gitblit v1.9.3