From 5e0e61bd8cea8ab9ed410190dc8a368266e696f4 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期一, 26 十月 2026 16:48:42 +0800
Subject: [PATCH] fix(order): 1.修正检验订单进度统计逻辑及导出字段 2.下单时间改成送样时间
---
inspect-server/src/main/resources/mapper/InsOrderMapper.xml | 70 ++++++++++++++++++++++-------------
1 files changed, 44 insertions(+), 26 deletions(-)
diff --git a/inspect-server/src/main/resources/mapper/InsOrderMapper.xml b/inspect-server/src/main/resources/mapper/InsOrderMapper.xml
index 8c68db8..dfa7c0d 100644
--- a/inspect-server/src/main/resources/mapper/InsOrderMapper.xml
+++ b/inspect-server/src/main/resources/mapper/InsOrderMapper.xml
@@ -66,6 +66,46 @@
ip.cable_tag
</sql>
+ <!-- 鐩寸粦璁㈠崟鎸夋ā鏉跨粨璁虹粺璁★紱浼犵粺璁㈠崟鎸夋湁鏁堜笖闈炵粦瀹氱殑妫�楠岄」鐩粺璁°�� -->
+ <sql id="inspectionProgressColumn">
+ CONCAT(COALESCE(ROUND(
+ CASE WHEN template_progress.total_count > 0
+ THEN template_progress.completed_count * 100.0 / template_progress.total_count
+ ELSE product_progress.completed_count * 100.0 / NULLIF(product_progress.total_count, 0)
+ END, 2), 0), '%') AS insProgress
+ </sql>
+
+ <sql id="inspectionProgressJoins">
+ LEFT JOIN (
+ SELECT s.ins_order_id, COUNT(*) AS total_count,
+ SUM(CASE WHEN p.ins_result IN (0, 1, 3) THEN 1 ELSE 0 END) AS completed_count
+ FROM ins_product p
+ JOIN ins_sample s ON p.ins_sample_id = s.id
+ WHERE p.state = 1 AND (p.is_binding IS NULL OR p.is_binding != 1)
+ GROUP BY s.ins_order_id
+ ) product_progress ON io.id = product_progress.ins_order_id
+ LEFT JOIN (
+ SELECT t.ins_order_id, COUNT(*) AS total_count,
+ SUM(CASE WHEN t.ins_result IN (0, 1) THEN 1 ELSE 0 END) AS completed_count
+ FROM ins_order_standard_template t
+ JOIN ins_order template_order ON template_order.id = t.ins_order_id
+ WHERE EXISTS (
+ SELECT 1
+ FROM ins_sample s
+ LEFT JOIN ins_product p ON p.ins_sample_id = s.id
+ WHERE s.ins_order_id = t.ins_order_id
+ AND (p.template_row_index IS NOT NULL
+ OR (s.standard_method_list_id IS NULL
+ AND COALESCE(TRIM(s.factory), '') = ''
+ AND COALESCE(TRIM(s.sample_type), '') = ''
+ AND COALESCE(TRIM(s.model), '') = ''
+ AND COALESCE(TRIM(template_order.factory), '') = ''
+ AND COALESCE(TRIM(template_order.sample_type), '') = ''))
+ )
+ GROUP BY t.ins_order_id
+ ) template_progress ON io.id = template_progress.ins_order_id
+ </sql>
+
<sql id="selectInsOrderExport">
SELECT
io.*,
@@ -74,7 +114,7 @@
ir.url,
ir.url_s,
sample_counts.sample_num,
- CONCAT(ROUND(approved_product_counts.approved_count / total_product_counts.total_count * 100, 2), '%') AS insProgress,
+ <include refid="inspectionProgressColumn"/>,
io.sample_view AS sample_name,
GROUP_CONCAT(DISTINCT isa.model SEPARATOR ' ') AS sample_model,
u.name,
@@ -101,18 +141,7 @@
FROM ins_sample
WHERE id in(select id1 from (select is2.id id1 ,ip.id from ins_sample is2 left join ins_product ip on is2.id = ip.ins_sample_id where ip.id is not null)s )
GROUP BY ins_order_id) sample_counts ON io.id = sample_counts.ins_order_id
- LEFT JOIN
- (SELECT ins_sample.ins_order_id, COUNT(*) AS total_count
- FROM ins_product
- JOIN ins_sample ON ins_product.ins_sample_id = ins_sample.id
- WHERE ins_product.state = 1
- GROUP BY ins_sample.ins_order_id) total_product_counts ON io.id = total_product_counts.ins_order_id
- LEFT JOIN
- (SELECT ins_sample.ins_order_id, COUNT(*) AS approved_count
- FROM ins_product
- JOIN ins_sample ON ins_product.ins_sample_id = ins_sample.id
- WHERE ins_product.state = 1 AND ins_product.ins_result IS NOT NULL
- GROUP BY ins_sample.ins_order_id) approved_product_counts ON io.id = approved_product_counts.ins_order_id
+ <include refid="inspectionProgressJoins"/>
LEFT JOIN (SELECT ins_sample_id, GROUP_CONCAT(DISTINCT uu.name SEPARATOR ',') AS testing_name
FROM ins_sample_user u
LEFT JOIN user uu ON u.user_id = uu.id
@@ -131,7 +160,7 @@
ir.url,
ir.url_s,
sample_counts.sample_num,
- CONCAT(ROUND(approved_product_counts.approved_count / total_product_counts.total_count * 100, 2), '%') AS insProgress,
+ <include refid="inspectionProgressColumn"/>,
io.sample_view AS sample_name,
GROUP_CONCAT(DISTINCT isa.model SEPARATOR ' ') AS sample_model,
u.name,
@@ -155,18 +184,7 @@
FROM ins_sample
WHERE id in(select id1 from (select is2.id id1 ,ip.id from ins_sample is2 left join ins_product ip on is2.id = ip.ins_sample_id where ip.id is not null)s )
GROUP BY ins_order_id) sample_counts ON io.id = sample_counts.ins_order_id
- LEFT JOIN
- (SELECT ins_sample.ins_order_id, COUNT(*) AS total_count
- FROM ins_product
- JOIN ins_sample ON ins_product.ins_sample_id = ins_sample.id
- WHERE ins_product.state = 1 and is_binding !=1
- GROUP BY ins_sample.ins_order_id) total_product_counts ON io.id = total_product_counts.ins_order_id
- LEFT JOIN
- (SELECT ins_sample.ins_order_id, COUNT(*) AS approved_count
- FROM ins_product
- JOIN ins_sample ON ins_product.ins_sample_id = ins_sample.id
- WHERE ins_product.state = 1 and is_binding !=1 AND ins_product.ins_result IS NOT NULL
- GROUP BY ins_sample.ins_order_id) approved_product_counts ON io.id = approved_product_counts.ins_order_id
+ <include refid="inspectionProgressJoins"/>
LEFT JOIN (SELECT ins_sample_id, GROUP_CONCAT(DISTINCT uu.name SEPARATOR ',') AS testing_name
FROM ins_sample_user u
LEFT JOIN user uu ON u.user_id = uu.id
--
Gitblit v1.9.3