From eae026a90011e77c1a3947021c87a2eea786d1b1 Mon Sep 17 00:00:00 2001
From: ZengTao <2773468879@qq.com>
Date: 星期六, 11 十月 2025 13:57:35 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml |  115 +++++++++++++++++++++++++++++++--------------------------
 1 files changed, 62 insertions(+), 53 deletions(-)

diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml
index f2abd90..aafab27 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml
@@ -5,10 +5,10 @@
     <resultMap id="lackBaseMap" type="com.mes.hollow.entity.dto.LackDetailsDTO">
         <result column="flow_card_id" property="flowCardId"/>
         <result column="layer" property="layer"/>
-        <result column="order_sort" property="glassType"/>
-        <result column="films_id" property="filmsId"/>
-        <result column="first_length" property="width"/>
-        <result column="second_Length" property="height"/>
+        <result column="glass_type" property="glassType"/>
+        <result column="filmsid" property="filmsId"/>
+        <result column="width" property="width"/>
+        <result column="height" property="height"/>
         <result column="thickness" property="thickness"/>
         <result column="lack_count" property="lackCount"/>
         <result column="damage_count" property="damageCount"/>
@@ -59,58 +59,67 @@
 
     </select>
     <select id="queryAllLackByFlowCard" resultMap="lackBaseMap">
-        with flow_card_id_info as (
-            select distinct flow_card_id from hollow_big_storage_cage_details where state = 100
+        WITH flow_card_id_info AS (
+            SELECT DISTINCT flow_card_id
+            FROM hollow_big_storage_cage_details
+            WHERE state = 100
         ),
-             relation_length as (
-                 select flow_card_id,
-                        layer,
-                        order_sort,
-                        tempering_layout_id,
-                        tempering_feed_sequence,
-                        GREATEST(width, height) as first_length,
-                        LEAST(width, height)    as second_Length,
-                        width,
-                        height,
-                        thickness,
-                        films_id
-                 from hollow_glass_relation_info
-                 where flow_card_id in (select flow_card_id from flow_card_id_info)
-                   and tempering_layout_id is null
-                   and tempering_feed_sequence is null
+             glass_temp AS (
+                 SELECT t.*
+                 FROM glass_info t
+                          INNER JOIN flow_card_id_info t1 ON t.flow_card_id = t1.flow_card_id
              ),
-             lack_count_temp as (
-                 select flow_card_id,
-                        layer,
-                        order_sort,
-                        first_length,
-                        films_id,
-                        second_Length,
-                        thickness,
-                        count(*) as lack_count
-                 from relation_length
-                 group by flow_card_id, layer, order_sort, films_id, first_length, second_Length, thickness
+             detail_temp AS (
+                 SELECT t.*
+                 FROM glass_temp t
+                 WHERE NOT EXISTS (
+                         SELECT 1
+                         FROM hollow_big_storage_cage_details t1
+                         WHERE t1.glass_id = t.glass_id
+                           AND t1.state NOT IN (8,9)
+                     )
              ),
-             damage_count_temp as (
-                 select process_id                                                                     as flow_card_id,
-                        technology_number                                                              as layer,
-                        order_number                                                                   as order_sort,
-                        count(distinct
-                              case when type = 8 and status &lt; 3 then glass_id else null end)        as damage_count,
-                        count(distinct case when type = 8 and status >= 3 then glass_id else null end) as patch_count
-                 from damage
-                 where process_id in (select flow_card_id from flow_card_id_info)
-                 group by process_id, technology_number, order_number
+             damage_latest AS (
+                 SELECT
+                     dr.glass_id,
+                     dr.type,
+                     dr.status
+                 FROM (
+                          SELECT
+                              t1.glass_id,
+                              t1.type,
+                              t1.status,
+                              ROW_NUMBER() OVER(PARTITION BY t1.glass_id ORDER BY t1.id DESC) as rn
+                          FROM detail_temp t
+                                   INNER JOIN damage t1 ON t.flow_card_id = t1.process_id
+                      ) dr
+                 WHERE dr.rn = 1
              ),
-             result_count as (
-                 select t.*, IFNULL(t1.damage_count, 0) damage_count, IFNULL(t1.patch_count, 0) patch_count
-                 from lack_count_temp t
-                          left join damage_count_temp t1 on t.flow_card_id = t1.flow_card_id and t.layer = t1.layer and
-                                                            t.order_sort = t1.order_sort
-                 order by t.flow_card_id, t.layer
+             result_temp AS (
+                 SELECT
+                     t.flow_card_id,
+                     t.layer,
+                     t.glass_type,
+                     t.thickness,
+                     t.filmsId,
+                     t.width,
+                     t.height,
+                     COUNT(DISTINCT t.glass_id) as lack_count,
+                     COUNT(DISTINCT CASE WHEN t1.type IN (7,8) AND t1.status = 1 THEN t.glass_id END) as damage_count
+                 FROM detail_temp t
+                          LEFT JOIN damage_latest t1 ON t.glass_id = t1.glass_id
+                 GROUP BY
+                     t.flow_card_id,
+                     t.layer,
+                     t.glass_type,
+                     t.thickness,
+                     t.filmsId,
+                     t.width,
+                     t.height
              )
-        select *
-        from result_count
+        SELECT *
+        FROM result_temp
+        ORDER BY flow_card_id, layer;
     </select>
     <select id="queryLayerByFlowCardId" resultType="java.lang.Integer">
         select count(distinct layer)
@@ -128,8 +137,8 @@
            , detail_temp as (
             select t.*
             from glass_temp t
-                     left join hollow_big_storage_cage_details t1 on t.glass_id = t1.glass_id and t1.state not in (8, 9)
-            WHERE t1.glass_id is null
+                     left join hollow_big_storage_cage_details t1 on t.glass_id = t1.glass_id and t1.state  not in (8,9)
+            where t1.glass_id is null
         )
            , damage_ranked AS (
             SELECT t.flow_card_id,

--
Gitblit v1.8.0