From d3df1630ad3e1c71b61d177ee818d5c5c94e97c0 Mon Sep 17 00:00:00 2001
From: wangfei <3597712270@qq.com>
Date: 星期六, 11 十月 2025 18:45:29 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10105/r/YiWuProject
---
hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml | 187 +++++++++++++++++++++++++++++++---------------
1 files changed, 126 insertions(+), 61 deletions(-)
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml
index f59fda8..f63ee25 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml
@@ -13,10 +13,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"/>
@@ -105,59 +105,68 @@
select *
from result
</select>
- <select id="queryLackByFlowCard" resultMap="lackBaseMap">
- with flow_card_id_info as (
- select distinct flow_card_id from hollow_big_storage_cage_details where state = 100
+ <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
),
- 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(1) as damage_count
- from damage
- where process_id in (select flow_card_id from flow_card_id_info)
- and type in (8, 9)
- and status < 3
- 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
- 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)
@@ -181,19 +190,75 @@
)
limit 1
</select>
+ <select id="queryLackGlassByFlowCard" resultType="com.mes.glassinfo.entity.GlassInfo">
+ with glass_id_info as (
+ select glass_id,order_sort from hollow_glass_relation_info where flow_card_id=#{flowCardId} and
+ order_sort=#{orderSort} and layer=#{layer} and glass_id is not null
+ ),
+ damage_glass_id as (
+ select glass_id from damage where process_id=#{flowCardId} and order_number=#{orderSort} and
+ technology_number=#{layer} and type=8 and status < 3 and glass_id is not null
+ )
+ select t.* from glass_info t left join glass_id_info t1 on t.glass_id=t1.glass_id
+ left join damage_glass_id t2 on t.glass_id=t2.glass_id
+ where t.flow_card_id=#{flowCardId} and t.glass_type=#{orderSort} and t.layer=#{layer} and t1.glass_id is null
+ and t2.glass_id is null
+ </select>
+ <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>
+ )
+ , 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 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 (7, 8) 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>
<update id="clearDirtyFlowCardData">
- update hollow_glass_relation_info
- set glass_id = null,
- tempering_layout_id = null,
- tempering_feed_sequence = null,
- engineer_id = null,
- state = 0
+ update tempering_glass_relation_info
+ set shelf_order = null
+ , state = 0
where flow_card_id = #{flowCardId}
and layer = #{layer}
- and glass_id not in (
- select glass_id
- from hollow_big_storage_cage_details
+ and shelf_order not in (
+ select shelf_order
+ from vertical_sheet_cage_details
where flow_card_id = #{flowCardId}
and layer = #{layer}
and state in (100, 102, 103, 104)
--
Gitblit v1.8.0