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