From 0debf5b7bb0246eaef1397975cdb16f4adb9e8d9 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期四, 29 十月 2026 14:36:31 +0800
Subject: [PATCH] refactor(inspection-order): 1.检验委托单绑定机制支持多次下单 2.合格率统计口径调整 3.外购铜导体推送入库MES增加米重 4.报告英文字段调整
---
inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml | 64 ++++++++++++++++++++++++--------
1 files changed, 48 insertions(+), 16 deletions(-)
diff --git a/inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml b/inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml
index aaec27f..5950330 100644
--- a/inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml
+++ b/inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml
@@ -2,6 +2,16 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.ruoyi.inspect.mapper.DataAnalysisMapper">
+ <!-- 鏈夐潪绌虹櫧鎻忚堪涓旂鍚堝師鏈� OA 鏉′欢鐨勫鐞嗚褰曪紝鎵嶄綔涓轰笉鍚堟牸渚濇嵁銆� -->
+ <sql id="countableUnqualifiedBatch">
+ SELECT inventory_quantity_id, 1 AS has_unqualified
+ FROM ins_unqualified_handler
+ WHERE oa_state IS NOT NULL
+ AND oa_state != 4
+ AND unqualified_desc REGEXP '[^[:space:]銆�]'
+ GROUP BY inventory_quantity_id
+ </sql>
+
<!-- 鑾峰彇鏈湀鐨勭墿鏂欏睘鎬т俊鎭� -->
<!-- 鑾峰彇鏈湀鐨勭墿鏂欏睘鎬т俊鎭紙鎸夊ぉ锛岃ˉ鍏ㄦ棩鏈燂級 -->
<select id="getRawPassRateByBarChartByDay" resultType="java.util.Map">
@@ -25,17 +35,21 @@
SELECT
DATE(report_time) AS day,
COUNT(*) AS total,
- SUM(CASE WHEN inspect_status = 1 and (iuh_id is null) THEN 1 ELSE 0 END) AS qualified,
- SUM(CASE WHEN inspect_status != 1 or (iuh_id is not null) THEN 1 ELSE 0 END) AS unQualified
+ SUM(CASE WHEN has_unqualified = 0 THEN 1 ELSE 0 END) AS qualified,
+ SUM(CASE WHEN has_unqualified = 1 THEN 1 ELSE 0 END) AS unQualified
FROM (SELECT
IFNULL(iuh.feedback_time,io1.send_time) report_time,
iuh.id AS iuh_id,
+ COALESCE(counted_iuh.has_unqualified, 0) AS has_unqualified,
iiq.inspect_status
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
+ LEFT JOIN (
+ <include refid="countableUnqualifiedBatch"/>
+ ) counted_iuh ON counted_iuh.inventory_quantity_id = iiq.id
LEFT JOIN (
SELECT
MAX(iuh.id) AS id,
@@ -111,18 +125,22 @@
SELECT
MONTH(report_time) AS month,
COUNT(*) AS total,
- SUM(CASE WHEN inspect_status = 1 and (iuh_id is null) THEN 1 ELSE 0 END) AS qualified,
- SUM(CASE WHEN inspect_status != 1 or (iuh_id is not null) THEN 1 ELSE 0 END) AS unQualified
+ SUM(CASE WHEN has_unqualified = 0 THEN 1 ELSE 0 END) AS qualified,
+ SUM(CASE WHEN has_unqualified = 1 THEN 1 ELSE 0 END) AS unQualified
FROM (
SELECT
IFNULL(iuh.feedback_time,io1.send_time) report_time,
iuh.id AS iuh_id,
+ COALESCE(counted_iuh.has_unqualified, 0) AS has_unqualified,
iiq.inspect_status
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
+ LEFT JOIN (
+ <include refid="countableUnqualifiedBatch"/>
+ ) counted_iuh ON counted_iuh.inventory_quantity_id = iiq.id
LEFT JOIN (
SELECT
MAX(iuh.id) AS id,
@@ -168,16 +186,19 @@
SELECT
COUNT(*) AS sum,
/* 鍚堟牸 */
- SUM(CASE WHEN inspect_status = 1 and (iuh_id is null) THEN 1 ELSE 0 END) AS qualified,
+ SUM(CASE WHEN has_unqualified = 0 THEN 1 ELSE 0 END) AS qualified,
/* 涓嶅悎鏍� */
- SUM(CASE WHEN inspect_status != 1 or (iuh_id is not null) THEN 1 ELSE 0 END) AS unQualified
+ SUM(CASE WHEN has_unqualified = 1 THEN 1 ELSE 0 END) AS unQualified
FROM (
SELECT
iiq.inspect_status,
- iuh.id AS iuh_id
+ COALESCE(counted_iuh.has_unqualified, 0) AS has_unqualified
FROM ifs_inventory_quantity iiq
INNER JOIN ins_order io1
ON io1.ifs_inventory_id = iiq.id
+ LEFT JOIN (
+ <include refid="countableUnqualifiedBatch"/>
+ ) counted_iuh ON counted_iuh.inventory_quantity_id = iiq.id
LEFT JOIN (
SELECT
MAX(iuh.id) AS id,
@@ -224,20 +245,23 @@
SELECT
supplier_name,
COUNT(id) AS totalBatch,
- SUM(CASE WHEN inspect_status != 1 or (iuh_id is not null) THEN 1 ELSE 0 END) AS unqualifiedBatch,
- ROUND(SUM(CASE WHEN inspect_status = 1 and iuh_id is null THEN 1 ELSE 0 END) / COUNT(*)* 100, 2 ) AS passRate
+ SUM(CASE WHEN has_unqualified = 1 THEN 1 ELSE 0 END) AS unqualifiedBatch,
+ ROUND(SUM(CASE WHEN has_unqualified = 0 THEN 1 ELSE 0 END) / COUNT(*)* 100, 2 ) AS passRate
FROM
(
SELECT
iiq.supplier_name,
iiq.id,
- iuh.id AS iuh_id,
+ COALESCE(counted_iuh.has_unqualified, 0) AS has_unqualified,
iiq.inspect_status
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
+ LEFT JOIN (
+ <include refid="countableUnqualifiedBatch"/>
+ ) counted_iuh ON counted_iuh.inventory_quantity_id = iiq.id
LEFT JOIN (
SELECT
MAX(iuh.id) AS id,
@@ -382,13 +406,17 @@
<!-- 鏌ヨ鏈湀涓庝笂鏈堝悎鏍肩巼瀵规瘮 -->
<select id="getRawUpMonth" resultType="java.util.Map">
select DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m') as month,
- (select ROUND((COUNT(*) - SUM(CASE WHEN inspect_status in (2, 4) THEN 1 ELSE 0 END)) / COUNT(*) *
- 100,
- 2) passRate
+ (select ROUND(
+ SUM(CASE WHEN counted_iuh.has_unqualified IS NULL THEN 1 ELSE 0 END) / COUNT(*) *
+ 100,
+ 2) passRate
from ifs_inventory_quantity iiq
LEFT JOIN ins_order io1 on io1.ifs_inventory_id = iiq.id
and io1.order_type = '杩涘巶妫�楠�'
and io1.state != -1
+ LEFT JOIN (
+ <include refid="countableUnqualifiedBatch"/>
+ ) counted_iuh ON counted_iuh.inventory_quantity_id = iiq.id
where iiq.is_finish = 1
and iiq.inspect_status not in (0, 3)
and (io1.send_time between DATE_FORMAT(DATE_SUB(DATE_FORMAT(NOW(), '%Y-%m-01'), INTERVAL 1 MONTH),
@@ -396,13 +424,17 @@
and DATE_FORMAT(LAST_DAY(DATE_SUB(NOW(), INTERVAL 1 MONTH)), '%Y-%m-%d 23:59:59'))) passRate
UNION ALL
select DATE_FORMAT(CURRENT_DATE, '%Y-%m') as month,
- (select ROUND((COUNT(*) - SUM(CASE WHEN inspect_status in (2, 4) THEN 1 ELSE 0 END)) / COUNT(*) *
- 100,
- 2) passRate
+ (select ROUND(
+ SUM(CASE WHEN counted_iuh.has_unqualified IS NULL THEN 1 ELSE 0 END) / COUNT(*) *
+ 100,
+ 2) passRate
from ifs_inventory_quantity iiq
LEFT JOIN ins_order io1 on io1.ifs_inventory_id = iiq.id
and io1.order_type = '杩涘巶妫�楠�'
and io1.state != -1
+ LEFT JOIN (
+ <include refid="countableUnqualifiedBatch"/>
+ ) counted_iuh ON counted_iuh.inventory_quantity_id = iiq.id
where iiq.is_finish = 1
and iiq.inspect_status not in (0, 3)
and (io1.send_time between
--
Gitblit v1.9.3