| | |
| | | <result column="engineer_id" property="engineerId"/> |
| | | <result column="tempering_layout_id" property="temperingLayoutId"/> |
| | | <result column="slot" property="slot"/> |
| | | <result column="glass_count" property="glassCount"/> |
| | | <result column="max_sequence" property="maxSequence"/> |
| | | <result column="min_sequence" property="minSequence"/> |
| | | <result column="remain_width" property="remainWidth"/> |
| | | </resultMap> |
| | | |
| | | <resultMap id="virtualSlotSequenceDTO" type="com.mes.bigstorage.entity.dto.BigStorageRelationDTO"> |
| | | <result column="engineer_id" property="engineerId"/> |
| | | <result column="tempering_layout_id" property="temperingLayoutId"/> |
| | | <result column="virtual_slot" property="virtualSlot"/> |
| | | </resultMap> |
| | | <resultMap id="baseSlotSequenceDTO" type="com.mes.bigstorage.entity.dto.BigStorageSequenceDTO"> |
| | | <result column="slot" property="slot"/> |
| | | <result column="max_sequence" property="maxSequence"/> |
| | | <result column="min_sequence" property="minSequence"/> |
| | | </resultMap> |
| | | |
| | | <resultMap id="temperingGlassCount" type="com.mes.bigstorage.entity.dto.TemperingGlassCountDTO"> |
| | | <result column="engineer_id" property="engineerId"/> |
| | | <result column="tempering_layout_id" property="temperingLayoutId"/> |
| | | <result column="films_id" property="filmsId"/> |
| | | <result column="thickness" property="thickness"/> |
| | | <result column="total_count" property="totalCount"/> |
| | | <result column="real_count" property="realCount"/> |
| | | <result column="damage_count" property="damageCount"/> |
| | | <result column="lack_count" property="lackCount"/> |
| | | </resultMap> |
| | | |
| | | <resultMap id="glassInfoLackDTO" type="com.mes.bigstorage.entity.dto.GlassInfoLackDTO"> |
| | | <result column="flow_card_id" property="flowCardId"/> |
| | | <result column="width" property="width"/> |
| | | <result column="height" property="height"/> |
| | | <result column="thickness" property="thickness"/> |
| | | <result column="filmsid" property="filmsid"/> |
| | | <result column="total_layer" property="totalLayer"/> |
| | | <result column="layer" property="layer"/> |
| | | <result column="tempering_layout_id" property="temperingLayoutId"/> |
| | | <result column="tempering_feed_sequence" property="temperingFeedSequence"/> |
| | | <result column="x_coordinate" property="xCoordinate"/> |
| | | <result column="y_coordinate" property="yCoordinate"/> |
| | | <result column="angle" property="angle"/> |
| | | <result column="engineer_id" property="engineerId"/> |
| | | <result column="glass_id" property="glassId"/> |
| | | <result column="is_damage" property="isDamage"/> |
| | | </resultMap> |
| | | |
| | | <select id="temperingIsAllByTemperingLayoutId" resultMap="temperingLayoutDTO"> |
| | | SELECT T.* |
| | | FROM ( |
| | | SELECT ENGINEER_ID, TEMPERING_LAYOUT_ID, COUNT(distinct TEMPERING_FEED_SEQUENCE) AS COUNT |
| | | FROM BIG_STORAGE_CAGE_DETAILS |
| | | WHERE STATE = 100 |
| | | and ENGINEER_ID = #{engineerId} |
| | | AND TEMPERING_LAYOUT_ID = #{temperingLayoutId} |
| | | GROUP BY ENGINEER_ID, TEMPERING_LAYOUT_ID |
| | | ) T |
| | | INNER JOIN (SELECT ENGINEER_ID, |
| | | TEMPERING_LAYOUT_ID, |
| | | COUNT(distinct TEMPERING_FEED_SEQUENCE) AS COUNT |
| | | FROM GLASS_INFO |
| | | WHERE ENGINEER_ID = #{engineerId} |
| | | AND TEMPERING_LAYOUT_ID = #{temperingLayoutId} |
| | | GROUP BY ENGINEER_ID, |
| | | TEMPERING_LAYOUT_ID) T1 |
| | | ON T.ENGINEER_ID = T1.ENGINEER_ID |
| | | AND T.TEMPERING_LAYOUT_ID = T1.TEMPERING_LAYOUT_ID |
| | | AND T.COUNT = T1.COUNT |
| | | </select> |
| | | |
| | | <select id="temperingIsAll" resultMap="temperingLayoutDTO"> |
| | | SELECT T.ENGINEER_ID, |
| | | T.TEMPERING_LAYOUT_ID, |
| | | COUNT(T.TEMPERING_FEED_SEQUENCE) AS COUNT |
| | | FROM |
| | | GLASS_INFO T |
| | | LEFT JOIN DAMAGE T1 |
| | | ON T.ENGINEER_ID = T1.ENGINEER_ID |
| | | AND T.GLASS_ID = T1.GLASS_ID |
| | | LEFT JOIN BIG_STORAGE_CAGE_DETAILS T2 ON T.ENGINEER_ID = T2.ENGINEER_ID |
| | | AND T.GLASS_ID = T2.GLASS_ID |
| | | WHERE |
| | | T1.GLASS_ID IS NULL |
| | | AND T2.GLASS_ID IS NULL |
| | | AND ( T.ENGINEER_ID |
| | | , T.TEMPERING_LAYOUT_ID ) IN ( SELECT DISTINCT ENGINEER_ID |
| | | , TEMPERING_LAYOUT_ID FROM BIG_STORAGE_CAGE_DETAILS WHERE STATE = 100 ) |
| | | GROUP BY |
| | | T.ENGINEER_ID, |
| | | T.TEMPERING_LAYOUT_ID |
| | | HAVING |
| | | COUNT = 0 |
| | | ORDER BY |
| | | T.TEMPERING_LAYOUT_ID |
| | | LIMIT 1 |
| | | SELECT T2.* |
| | | FROM ( |
| | | SELECT T.ENGINEER_ID, |
| | | T.TEMPERING_LAYOUT_ID, |
| | | COUNT(T.TEMPERING_FEED_SEQUENCE) AS COUNT |
| | | FROM GLASS_INFO T |
| | | LEFT JOIN DAMAGE T1 |
| | | ON T.ENGINEER_ID = T1.ENGINEER_ID |
| | | AND T.GLASS_ID = T1.GLASS_ID |
| | | AND (T1.TYPE = 8 |
| | | OR T1.TYPE = 9) |
| | | WHERE T1.GLASS_ID IS NULL |
| | | GROUP BY T.ENGINEER_ID, |
| | | T.TEMPERING_LAYOUT_ID |
| | | ) T2 |
| | | INNER JOIN (SELECT ENGINEER_ID, TEMPERING_LAYOUT_ID, COUNT(TEMPERING_FEED_SEQUENCE) AS COUNT |
| | | FROM BIG_STORAGE_CAGE_DETAILS |
| | | WHERE STATE in (100) |
| | | GROUP BY ENGINEER_ID, TEMPERING_LAYOUT_ID) T3 ON T2.ENGINEER_ID = T3.ENGINEER_ID |
| | | AND T2.TEMPERING_LAYOUT_ID = T3.TEMPERING_LAYOUT_ID |
| | | AND T2.COUNT = T3.COUNT |
| | | INNER JOIN ENGINEERING T4 ON T2.ENGINEER_ID = T4.ENGINEER_ID |
| | | ORDER BY T4.ID, T2.TEMPERING_LAYOUT_ID |
| | | </select> |
| | | |
| | | <select id="queryTemperingOccupySlot" resultMap="temperingLayoutDTO"> |
| | | SELECT TEMPERING_LAYOUT_ID, |
| | | SELECT ENGINEER_ID, |
| | | TEMPERING_LAYOUT_ID, |
| | | COUNT(DISTINCT SLOT) as SLOT_COUNT |
| | | FROM BIG_STORAGE_CAGE_DETAILS |
| | | WHERE STATE = 100 |
| | | GROUP BY ENGINEER_ID, |
| | | TEMPERING_LAYOUT_ID |
| | | HAVING SLOT_COUNT >= #{count} LIMIT 1 |
| | | HAVING SLOT_COUNT >= #{count} |
| | | ORDER BY SLOT_COUNT DESC |
| | | </select> |
| | | <select id="queryGlassMaxAndMin" resultMap="slotSequenceDTO"> |
| | | SELECT T.*, |
| | |
| | | SELECT ENGINEER_ID, |
| | | TEMPERING_LAYOUT_ID, |
| | | SLOT, |
| | | count(*) as glass_count, |
| | | MAX(TEMPERING_FEED_SEQUENCE) AS MAX_SEQUENCE, |
| | | MIN(TEMPERING_FEED_SEQUENCE) AS MIN_SEQUENCE |
| | | FROM BIG_STORAGE_CAGE_DETAILS |
| | |
| | | INNER JOIN BIG_STORAGE_CAGE T1 ON T.SLOT = T1.SLOT |
| | | ORDER BY T.MAX_SEQUENCE DESC |
| | | </select> |
| | | |
| | | <update id="updateBySlot"> |
| | | update big_storage_cage_details |
| | | <set> |
| | | state = #{state} |
| | | </set> |
| | | <where> |
| | | (glass_id,slot) in ( |
| | | <foreach collection="list" item="item" separator=","> |
| | | (#{item.glassId}, #{item.targetSlot}) |
| | | </foreach> |
| | | ) |
| | | and state !=101 |
| | | </where> |
| | | </update> |
| | | <update id="updateDeviceIdBySlot"> |
| | | update big_storage_cage_details t inner join big_storage_cage t1 on t.slot = t1.slot |
| | | set t.device_id = t1.device_id |
| | | where t.slot in ( |
| | | <foreach collection="list" item="item" separator=","> |
| | | #{item} |
| | | </foreach> |
| | | ) |
| | | </update> |
| | | |
| | | <select id="selectTemperingGlassCount" resultMap="temperingGlassCount"> |
| | | with glass_info_temp as ( |
| | | select engineer_id, tempering_layout_id, count(*) as total_count |
| | | from glass_info |
| | | group by engineer_id, tempering_layout_id |
| | | ), |
| | | big_details_temp as ( |
| | | select engineer_id, tempering_layout_id, count(*) as real_count, films_id, thickness |
| | | from big_storage_cage_details |
| | | where state = 100 |
| | | <if test="isTempering == 0"> |
| | | and tempering_layout_id = 0 |
| | | </if> |
| | | <if test="isTempering == 1"> |
| | | and tempering_layout_id != 0 |
| | | </if> |
| | | |
| | | group by engineer_id, tempering_layout_id, films_id, thickness |
| | | ), |
| | | damage_temp as ( |
| | | select engineer_id, tempering_layout_id, count(*) as damage_count |
| | | from damage |
| | | where type in(8,9) and STATUS = 1 |
| | | group by engineer_id, tempering_layout_id |
| | | ), |
| | | result as ( |
| | | select t.engineer_id, |
| | | t.tempering_layout_id, |
| | | t.films_id, |
| | | t.thickness, |
| | | total_count, |
| | | real_count, |
| | | ifnull(damage_count, 0) as damage_count, |
| | | case when total_count - real_count - ifnull(damage_count, 0) < 0 then 0 else |
| | | total_count - real_count - ifnull(damage_count, 0) end as lack_count |
| | | from big_details_temp t |
| | | inner join glass_info_temp t1 on t.engineer_id = t1.engineer_id and |
| | | t.tempering_layout_id = t1.tempering_layout_id |
| | | left join damage_temp t2 |
| | | on t.engineer_id = t2.engineer_id and t.tempering_layout_id = t2.tempering_layout_id |
| | | ) |
| | | select * |
| | | from result |
| | | order by engineer_id,tempering_layout_id |
| | | </select> |
| | | |
| | | <select id="queryIsAllNeedDispatchVirtualSlot" resultMap="virtualSlotSequenceDTO"> |
| | | with relation_temp as ( |
| | | select engineer_id, tempering_layout_id, virtual_slot, count(1) as slot_count |
| | | from big_storage_glass_relation_info |
| | | group by engineer_id, tempering_layout_id, virtual_slot |
| | | ), |
| | | details_temp as ( |
| | | select t.engineer_id, t.tempering_layout_id, t.virtual_slot, count(1) as slot_count |
| | | from big_storage_glass_relation_info t |
| | | left join big_storage_cage_details t1 on |
| | | t.engineer_id = t1.engineer_id and t.tempering_layout_id = t1.tempering_layout_id and |
| | | t.tempering_feed_sequence = t1.tempering_feed_sequence |
| | | where t1.state = 100 |
| | | AND T1.DEVICE_ID IN |
| | | <foreach collection="deviceIdList" item="item" open='(' close=')' separator=','> |
| | | #{item} |
| | | </foreach> |
| | | group by t.engineer_id, t.tempering_layout_id, t.virtual_slot |
| | | ), |
| | | result_one as ( |
| | | select t.*, t1.slot_count as tslot_count |
| | | from relation_temp t |
| | | INNER JOIN details_temp t1 on t.engineer_id = t1.engineer_id and |
| | | t.tempering_layout_id = t1.tempering_layout_id and |
| | | t.virtual_slot = t1.virtual_slot |
| | | where t.slot_count = t1.slot_count |
| | | ) |
| | | select engineer_id, tempering_layout_id, virtual_slot |
| | | from result_one |
| | | order by engineer_id, tempering_layout_id |
| | | </select> |
| | | |
| | | <select id="queryNeedDispatchSlot" resultMap="baseSlotSequenceDTO"> |
| | | with glass_id_temp as ( |
| | | select engineer_id, tempering_layout_id, tempering_feed_sequence |
| | | from big_storage_glass_relation_info |
| | | where (engineer_id, tempering_layout_id, virtual_slot) = |
| | | (#{engineerId}, #{temperingLayoutId}, #{virtualSlot}) |
| | | ) |
| | | select t.slot, max(t1.tempering_feed_sequence) as max_sequence, min(t1.tempering_feed_sequence) as min_sequence |
| | | from big_storage_cage_details t |
| | | inner join big_storage_glass_relation_info t1 |
| | | on t.engineer_id = t1.engineer_id and t.tempering_layout_id = t1.tempering_layout_id and |
| | | t.tempering_feed_sequence = t1.tempering_feed_sequence |
| | | where (t.engineer_id, t.tempering_layout_id, t.tempering_feed_sequence) in |
| | | (select engineer_id, tempering_layout_id, tempering_feed_sequence from glass_id_temp) |
| | | and t.state = 100 |
| | | group by t.slot |
| | | order by max_sequence desc |
| | | </select> |
| | | <select id="queryLackGlassInfo" resultMap="glassInfoLackDTO"> |
| | | WITH glass_info_temp AS (SELECT * |
| | | FROM glass_info |
| | | WHERE engineer_id = #{engineerId} |
| | | AND tempering_layout_id = #{temperingLayoutId}), |
| | | big_details_temp AS (SELECT * |
| | | FROM big_storage_cage_details |
| | | WHERE state = 100 |
| | | AND engineer_id = #{engineerId} |
| | | AND tempering_layout_id = #{temperingLayoutId}), |
| | | damage_temp AS (SELECT * |
| | | FROM damage |
| | | WHERE type IN (8, 9) |
| | | AND engineer_id = #{engineerId} |
| | | AND tempering_layout_id = #{temperingLayoutId}), |
| | | result_lack AS (SELECT t.* |
| | | FROM glass_info_temp t |
| | | LEFT JOIN big_details_temp t1 ON t.glass_id = t1.glass_id |
| | | WHERE t1.glass_id IS NULL), |
| | | result AS ( |
| | | SELECT t.*, |
| | | CASE |
| | | |
| | | WHEN t1.glass_id is null THEN |
| | | 0 |
| | | ELSE 1 |
| | | END AS is_damage |
| | | FROM result_lack t |
| | | LEFT JOIN damage_temp t1 ON t.glass_id = t1.glass_id |
| | | ) |
| | | SELECT * |
| | | FROM result |
| | | </select> |
| | | <select id="querybigStorageCageDetail" resultType="com.mes.base.entity.vo.BigStorageVO"> |
| | | select bsc.device_id, bsc.slot, count(bscd.glass_id) as count |
| | | from big_storage_cage bsc |
| | | left join big_storage_cage_details bscd |
| | | on bsc.slot = bscd.slot and bscd.state in (100, 102, 103, 104) |
| | | group by bsc.device_id, bsc.slot |
| | | order by bsc.device_id, bsc.slot |
| | | </select> |
| | | <select id="queryTemperingGlassCountSummary" resultMap="temperingGlassCount"> |
| | | with glass_info_temp as ( |
| | | select engineer_id, tempering_layout_id, count(*) as total_count |
| | | from glass_info |
| | | group by engineer_id, tempering_layout_id |
| | | ), |
| | | big_details_temp as ( |
| | | select engineer_id, tempering_layout_id, count(*) as real_count, films_id, thickness |
| | | from big_storage_cage_details |
| | | where state = 100 |
| | | <if test="isTempering == 0"> |
| | | and tempering_layout_id = 0 |
| | | </if> |
| | | <if test="isTempering == 1"> |
| | | and tempering_layout_id != 0 |
| | | </if> |
| | | |
| | | group by engineer_id, tempering_layout_id, films_id, thickness |
| | | ), |
| | | damage_temp as ( |
| | | select engineer_id, tempering_layout_id, count(*) as damage_count |
| | | from damage |
| | | where type in(8,9) and STATUS = 1 |
| | | group by engineer_id, tempering_layout_id |
| | | ), |
| | | result as ( |
| | | select t.engineer_id, |
| | | t.tempering_layout_id, |
| | | t.films_id, |
| | | t.thickness, |
| | | total_count, |
| | | real_count, |
| | | ifnull(damage_count, 0) as damage_count, |
| | | case when total_count - real_count - ifnull(damage_count, 0) < 0 then 0 else |
| | | total_count - real_count - ifnull(damage_count, 0) end as lack_count |
| | | from big_details_temp t |
| | | inner join glass_info_temp t1 on t.engineer_id = t1.engineer_id and |
| | | t.tempering_layout_id = t1.tempering_layout_id |
| | | left join damage_temp t2 |
| | | on t.engineer_id = t2.engineer_id and t.tempering_layout_id = t2.tempering_layout_id |
| | | ), |
| | | -- 二次汇总层 |
| | | secondary_summary as ( |
| | | select |
| | | engineer_id, |
| | | films_id, |
| | | thickness, |
| | | count(distinct tempering_layout_id) as total_count, -- 计算totalCount的累计数(去重计数) |
| | | sum(total_count) as real_count -- 计算realCount的总和 |
| | | from result |
| | | group by engineer_id, films_id, thickness |
| | | ) |
| | | select * |
| | | from secondary_summary |
| | | order by engineer_id, films_id, thickness |
| | | </select> |
| | | </mapper> |