From aa5d2f68e1d97f7a1b20fa15e1bde9195544bb3e Mon Sep 17 00:00:00 2001
From: ZengTao <2773468879@qq.com>
Date: 星期二, 11 十一月 2025 15:15:06 +0800
Subject: [PATCH] 1、钢化查询添加显示工程名称 2、中空任务界面缺片详情修改

---
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml |  307 +++++++++++++++++++++++++++++---------------------
 1 files changed, 177 insertions(+), 130 deletions(-)

diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml
index 286e3ff..4d66e4d 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml
@@ -2,150 +2,197 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="com.mes.hollow.mapper.HollowGlassRelationInfoMapper">
 
-    <resultMap id="baseMap" type="com.mes.hollow.entity.dto.HollowGlassDetailsDTO">
-        <result column="process_id" property="flowCardId"/>
-        <result column="child_width" property="width"/>
-        <result column="child_height" property="height"/>
-        <result column="order_number" property="orderSort"/>
-        <result column="technology_number" property="layer"/>
-        <result column="quantity" property="quantity"/>
-    </resultMap>
     <resultMap id="lackBaseMap" type="com.mes.hollow.entity.dto.LackDetailsDTO">
         <result column="flow_card_id" property="flowCardId"/>
         <result column="layer" property="layer"/>
-        <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_cout" property="lackCount"/>
+        <result column="lack_count" property="lackCount"/>
+        <result column="damage_count" property="damageCount"/>
     </resultMap>
-
-    <select id="queryFlowCardIdMaxLayerGlassInfo" resultMap="baseMap">
-        with temp_flow as (SELECT t.process_id,
-                                  t.order_id,
-                                  t.order_number,
-                                  t.technology_number,
-                                  t.quantity,
-                                  t1.child_width,
-                                  t1.child_height
-
-                           from pp.flow_card t
-                                    LEFT JOIN sd.order_glass_detail t1
-                                              on t.order_id = t1.order_id
-                                                  and t.order_number = t1.order_number
-                                                  and t.technology_number = t1.technology_number
-                           where t.process_id = #{flowCardId}),
-             glass_info_temp as (
-                 select process_id,
-                        order_id,
-                        GREATEST(child_width, child_height) as first_length,
-                        least(child_width, child_height)    as second_length,
-                        child_width,
-                        child_height,
-                        order_number,
-                        technology_number,
-                        quantity
-                 from temp_flow
-                 where technology_number = #{totalLayer}
-             )
-        select row_number() over (order by second_length desc,first_length desc) as rn, t.*
-        from glass_info_temp t
-    </select>
-
-    <select id="queryFlowCardIdLayerGlassInfo" resultMap="baseMap">
-        with temp_flow as (SELECT t.process_id,
-                                  t.order_id,
-                                  t.order_number,
-                                  t.technology_number,
-                                  t.quantity,
-                                  t1.child_width,
-                                  t1.child_height
-                           from pp.flow_card t
-                                    LEFT JOIN sd.order_glass_detail t1
-                                              on t.order_id = t1.order_id
-                                                  and t.order_number = t1.order_number
-                                                  and t.technology_number = t1.technology_number
-                           where t.process_id = #{flowCardId}),
-             glass_info_max_layer_temp as (
-                 select process_id,
-                        order_id,
-                        GREATEST(child_width, child_height) as first_length,
-                        least(child_width, child_height)    as second_length,
-                        child_width,
-                        child_height,
-                        order_number,
-                        technology_number,
-                        quantity
-                 from temp_flow
-                 where technology_number = #{totalLayer}
-             ),
-             glass_info_layer_temp as (
-                 select process_id,
-                        order_id,
-                        GREATEST(child_width, child_height) as first_length,
-                        least(child_width, child_height)    as second_length,
-                        child_width,
-                        child_height,
-                        order_number,
-                        technology_number,
-                        quantity
-                 from temp_flow
-                 where technology_number = #{layer}
-             ),
-             max_layer_sequence as (
-                 select row_number() over (order by second_length desc,first_length desc) as rn, t.order_number
-                 from glass_info_max_layer_temp t
-             ),
-             result as (select t.*
-                        from glass_info_layer_temp t
-                                 INNER join max_layer_sequence t1 on t.order_number = t1.order_number
-                        order by t1.rn)
-        select *
-        from result
-    </select>
-    <select id="queryLackByFlowCard" resultMap="lackBaseMap">
-        with relation_length as (
-            select flow_card_id,
-                   layer,
-                   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 = #{flowCardId}
-              and tempering_layout_id is null
-              and tempering_feed_sequence is null
+    <select id="queryLackByFlowCard" resultType="com.mes.hollow.entity.dto.LackDetailsDTO">
+        with hollow_flow_temp AS (
+        SELECT DISTINCT flow_card_id
+        FROM hollow_big_storage_cage_details
+        WHERE state = 100
+        <if test="flowCardId != null and flowCardId != ''">
+            and flow_card_id = #{flowCardId}
+        </if>
         )
-        select flow_card_id, layer, first_length, films_id, second_Length, thickness, count(*) as lack_cout
-        from relation_length
-        group by flow_card_id, layer, films_id, first_length, second_Length, thickness
+        , glass_temp as (
+        select t1.*
+        from hollow_flow_temp t
+        INNER JOIN glass_info t1 on t.flow_card_id = t1.flow_card_id
+        )
+        , detail_temp as (
+        select t.*
+        from glass_temp t
+        left join hollow_big_storage_cage_details t1 on t.glass_id = t1.glass_id
+        where t1.glass_id is null
+        )
+        , damage_ranked AS (
+        SELECT t.flow_card_id,
+        t.layer,
+        t.glass_id,
+        t.glass_type,
+        t.width,
+        t.height,
+        t.filmsId,
+        t.thickness,
+        case
+        when type in (8, 9) and status = 1 then ''
+        else t1.working_procedure end as working_procedure,
+        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.glass_id = t1.glass_id
+        )
+        , damage_latest AS (
+        SELECT *
+        FROM damage_ranked
+        WHERE rn = 1
+        )
+        select *
+        from damage_latest
+
+    </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
+        ),
+             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
+             ),
+             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_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_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 (8, 9) 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_temp
+        ORDER BY flow_card_id, layer;
     </select>
     <select id="queryLayerByFlowCardId" resultType="java.lang.Integer">
         select count(distinct layer)
         from hollow_glass_relation_info
         where flow_card_id = #{flowCardId}
     </select>
-    <select id="queryProductNameByFlowCardId" resultType="com.mes.hollow.entity.dto.OrderDetailsDTO">
-        select t.product_name, t1.customer_name
-        from sd.order_detail t
-        inner join sd.order t1 on t.order_id = t1.order_id
-        where (t.order_id, t.order_number) = (
-        select min(order_id) as order_id, min(order_number) as order_number
-        from pp.flow_card
-        where process_id = #{flowCardId}
-        <if test="productName != null and productName != ''">
-            and t.product_name like concat('%', #{productName}, '%')
-        </if>
-        <if test="customerName != null and customerName != ''">
-            and t1.customer_name like concat('%', #{customerName}, '%')
-        </if>
+    <select id="queryLackGlassByFlowCard" resultType="com.mes.hollow.entity.dto.LackDetailsDTO">
+        with glass_temp as (
+            select *
+            from glass_info
+            where flow_card_id = #{flowCardId}
+              and glass_type = #{orderSort}
+              and layer = #{layer}
         )
-        limit 1
+           , 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
+        )
+           , damage_ranked AS (
+            SELECT t.flow_card_id,
+                   t.layer,
+                   t.glass_id,
+                   t.glass_type,
+                   t.width,
+                   t.height,
+                   t.filmsId,
+                   t.thickness,
+                   case
+                       when type in (8, 9) and status = 1 then ''
+                       else t1.working_procedure end as working_procedure,
+                   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.glass_id = t1.glass_id
+        )
+           , damage_latest AS (
+            SELECT *
+            FROM damage_ranked
+            WHERE rn = 1
+        )
+        select *
+        from damage_latest
     </select>
+    <select id="queryLackByFlowCardByERP" resultType="com.mes.hollow.entity.dto.LackDetailsDTO">
+        WITH RECURSIVE nums(n) AS (
+        SELECT 1
+        UNION ALL
+        SELECT n + 1 FROM nums WHERE n &lt; (SELECT MAX(quantity) FROM (
+        <foreach collection="flowCardIdList" item="item" separator="UNION ALL">
+            SELECT #{item.lackQuantity} AS quantity
+        </foreach>
+        ) t)
+        )
+        <foreach collection="flowCardIdList" item="item" separator="UNION ALL">
+            SELECT t1.*
+            FROM (
+            SELECT
+            g.flow_card_id AS flowCardId,
+            g.layer AS layer,
+            g.glass_type AS glassType,
+            g.filmsid AS filmsId,
+            g.width AS width,
+            g.height AS height,
+            g.thickness AS thickness
+            FROM glass_info g
+            WHERE g.flow_card_id = #{item.processId}
+            AND g.layer = #{item.technologyNumber}
+            AND g.glass_type = #{item.orderNumber}
+            LIMIT 1
+            ) t1
+            CROSS JOIN nums
+            WHERE nums.n &lt;= #{item.lackQuantity}
+        </foreach>
+    </select>
+
 
     <update id="clearDirtyFlowCardData">
         update hollow_glass_relation_info

--
Gitblit v1.8.0