From 2986ce86c5a49d1456b6be561358c42e2b19913e Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期日, 12 十月 2025 23:09:14 +0800
Subject: [PATCH] 1、 中空创建任务界面流程卡总量及笼内实际数量显示bug修复
---
hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowBigStorageCageDetailsMapper.xml | 153 ++++++++++++++++++++++++++++++++------------------
1 files changed, 97 insertions(+), 56 deletions(-)
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowBigStorageCageDetailsMapper.xml b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowBigStorageCageDetailsMapper.xml
index ba5ade2..cb5fb88 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowBigStorageCageDetailsMapper.xml
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowBigStorageCageDetailsMapper.xml
@@ -255,17 +255,21 @@
<select id="queryHollowAllFlowCard" resultType="com.mes.hollow.entity.dto.FlowCardGlassInfoDTO">
WITH hollow_flow_temp AS (
- SELECT DISTINCT flow_card_id
- FROM hollow_big_storage_cage_details
- WHERE state = 100
+ SELECT DISTINCT
+ flow_card_id
+ FROM
+ hollow_big_storage_cage_details
+ WHERE
+ state = 100
<if test="flowCardId != null and flowCardId != ''">
- AND flow_card_id LIKE CONCAT('%', #{flowCardId}, '%')
+ AND flow_card_id LIKE CONCAT(
+ '%',#{flowCardId}, '%')
</if>
<if test="filmsId != null and filmsId != ''">
- AND films_id LIKE CONCAT('%', #{filmsId}, '%')
+ AND films_id LIKE CONCAT( '%', #{filmsId}, '%')
</if>
<if test="thickness != 0">
- AND thickness = #{thickness}
+ AND thickness = #{thickness}
</if>
),
hollow_details_temp AS (
@@ -277,50 +281,50 @@
layer,
total_layer,
hollow_sequence
- FROM hollow_big_storage_cage_details
- WHERE state = 100
+ FROM
+ hollow_big_storage_cage_details
+ WHERE
+ state = 100
<if test="flowCardId != null and flowCardId != ''">
- AND flow_card_id LIKE CONCAT('%', #{flowCardId}, '%')
+ AND flow_card_id LIKE CONCAT(
+ '%',#{flowCardId}, '%')
</if>
<if test="filmsId != null and filmsId != ''">
- AND films_id LIKE CONCAT('%', #{filmsId}, '%')
+ AND films_id LIKE CONCAT( '%', #{filmsId}, '%')
</if>
<if test="thickness != 0">
- AND thickness = #{thickness}
+ AND thickness = #{thickness}
</if>
),
- hollow_through_temp AS (
- SELECT
- flow_card_id,
- MIN(hollow_sequence) as hollow_sequence,
- MAX(total_layer) as total_layer
- FROM hollow_details_temp
- GROUP BY flow_card_id
- ),
+ hollow_through_temp AS ( SELECT flow_card_id, MIN( hollow_sequence ) AS hollow_sequence, MAX( total_layer ) AS
+ total_layer FROM hollow_details_temp GROUP BY flow_card_id ),
hollow_pair_temp AS (
SELECT
t1.flow_card_id,
COUNT(*) AS pair_count
- FROM hollow_details_temp t1
- INNER JOIN hollow_details_temp t2
- ON t1.flow_card_id = t2.flow_card_id
+ FROM
+ hollow_details_temp t1
+ INNER JOIN hollow_details_temp t2 ON t1.flow_card_id = t2.flow_card_id
AND t1.virtual_slot = t2.virtual_slot
AND t1.sequence = t2.sequence
- AND t1.layer = 1 AND t2.layer = 2
- WHERE NOT EXISTS (
- SELECT 1
- FROM hollow_through_temp ht
- WHERE ht.flow_card_id = t1.flow_card_id
- AND ht.total_layer = 3
- ) OR EXISTS (
- SELECT 1
- FROM hollow_details_temp t3
- WHERE t3.flow_card_id = t1.flow_card_id
+ AND t1.layer = 1
+ AND t2.layer = 2
+ WHERE
+ NOT EXISTS ( SELECT 1 FROM hollow_through_temp ht WHERE ht.flow_card_id = t1.flow_card_id AND ht.total_layer = 3
+ )
+ OR EXISTS (
+ SELECT
+ 1
+ FROM
+ hollow_details_temp t3
+ WHERE
+ t3.flow_card_id = t1.flow_card_id
AND t3.virtual_slot = t1.virtual_slot
AND t3.sequence = t1.sequence
AND t3.layer = 3
)
- GROUP BY t1.flow_card_id
+ GROUP BY
+ t1.flow_card_id
),
glass_info_temp AS (
SELECT
@@ -330,50 +334,87 @@
gi.layer,
gi.thickness,
gi.filmsId
- FROM hollow_flow_temp hft
+ FROM
+ hollow_flow_temp hft
INNER JOIN glass_info gi ON hft.flow_card_id = gi.flow_card_id
+ ),
+ glass_engineer_temp AS (
+ SELECT
+ flow_card_id,
+ engineer_id
+ FROM
+ (
+ SELECT
+ gi.flow_card_id,
+ gi.engineer_id,
+ ROW_NUMBER() OVER ( PARTITION BY gi.flow_card_id, gi.layer ORDER BY COUNT( gi.glass_id ) DESC ) AS rn
+ FROM
+ hollow_flow_temp hft
+ INNER JOIN glass_info gi ON hft.flow_card_id = gi.flow_card_id
+ GROUP BY
+ gi.flow_card_id,
+ gi.layer,
+ gi.engineer_id
+ ) t
+ WHERE
+ rn = 1
+ ),
+ glass_result AS (
+ SELECT
+ count( t1.id ) AS sum_count,
+ t1.flow_card_id,
+ t1.layer
+ FROM
+ glass_engineer_temp t
+ INNER JOIN glass_info t1 ON t.engineer_id = t1.engineer_id
+ AND t.flow_card_id = t1.flow_card_id
+ GROUP BY
+ t1.flow_card_id,
+ t1.layer
),
damage_ranked AS (
SELECT
d.glass_id,
d.type,
- d.status,
- ROW_NUMBER() OVER(PARTITION BY d.glass_id ORDER BY d.id DESC) as rn
- FROM hollow_flow_temp hft
+ d.STATUS,
+ ROW_NUMBER() OVER ( PARTITION BY d.glass_id ORDER BY d.id DESC ) AS rn
+ FROM
+ hollow_flow_temp hft
INNER JOIN damage d ON hft.flow_card_id = d.process_id
),
- damage_latest AS (
- SELECT
- glass_id,
- type,
- status
- FROM damage_ranked
- WHERE rn = 1
- ),
+ damage_latest AS ( SELECT glass_id, type, STATUS FROM damage_ranked WHERE rn = 1 ),
result_temp AS (
SELECT
t.flow_card_id,
t.layer,
t.thickness,
t.filmsId,
- COUNT(DISTINCT t.id) as sum_count,
- COUNT(DISTINCT t1.glass_id) as real_count,
- COUNT(DISTINCT t.id) - COUNT(DISTINCT t1.glass_id) as lack_count,
- COUNT(DISTINCT CASE WHEN t2.type IN (7,8) AND t2.status = 1 THEN t.glass_id END) as damage_count
- FROM glass_info_temp t
+ COUNT( DISTINCT t1.glass_id ) AS real_count,
+ COUNT( DISTINCT CASE WHEN t2.type IN ( 7, 8 ) AND t2.STATUS = 1 THEN t.glass_id END ) AS damage_count
+ FROM
+ glass_info_temp t
LEFT JOIN hollow_details_temp t1 ON t.glass_id = t1.glass_id
LEFT JOIN damage_latest t2 ON t.glass_id = t2.glass_id
- GROUP BY t.flow_card_id, t.layer, t.thickness, t.filmsId
- )
- SELECT
+ GROUP BY
+ t.flow_card_id,
+ t.layer,
+ t.thickness,
+ t.filmsId
+ ) SELECT
t.*,
- COALESCE(t1.pair_count, 0) as pair_count,
+ t3.sum_count,
+ t3.sum_count - t.real_count AS lack_count,
+ COALESCE ( t1.pair_count, 0 ) AS pair_count,
t2.hollow_sequence,
t2.total_layer
- FROM result_temp t
+ FROM
+ result_temp t
LEFT JOIN hollow_pair_temp t1 ON t.flow_card_id = t1.flow_card_id
LEFT JOIN hollow_through_temp t2 ON t.flow_card_id = t2.flow_card_id
- ORDER BY t.flow_card_id
+ LEFT JOIN glass_result t3 ON t.flow_card_id = t3.flow_card_id
+ AND t.layer = t3.layer
+ ORDER BY
+ t.flow_card_id
</select>
--
Gitblit v1.8.0