<?xml version="1.0" encoding="UTF-8" ?>
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
<mapper namespace="com.mes.bigstorage.mapper.BigStorageCageDetailsMapper">
|
|
<resultMap id="temperingLayoutDTO" type="com.mes.bigstorage.entity.dto.TemperingLayoutDTO">
|
<result column="engineer_id" property="engineerId"/>
|
<result column="tempering_layout_id" property="temperingLayoutId"/>
|
<result column="count" property="count"/>
|
<result column="slot_count" property="slotCount"/>
|
</resultMap>
|
|
<resultMap id="slotSequenceDTO" type="com.mes.bigstorage.entity.dto.SlotSequenceDTO">
|
<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>
|
|
<select id="temperingIsAll" resultMap="temperingLayoutDTO">
|
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 ENGINEER_ID,
|
TEMPERING_LAYOUT_ID,
|
COUNT(DISTINCT SLOT) as SLOT_COUNT
|
FROM BIG_STORAGE_CAGE_DETAILS
|
WHERE STATE = 100
|
AND TEMPERING_LAYOUT_ID!=0 AND THICKNESS < 8
|
GROUP BY ENGINEER_ID,
|
TEMPERING_LAYOUT_ID
|
HAVING SLOT_COUNT >= #{count}
|
ORDER BY ID
|
</select>
|
<select id="queryGlassMaxAndMin" resultMap="slotSequenceDTO">
|
SELECT T.*,
|
T1.REMAIN_WIDTH
|
FROM (
|
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
|
WHERE ENGINEER_ID = #{engineerId}
|
AND TEMPERING_LAYOUT_ID = #{temperingLayoutId}
|
AND STATE = 100
|
GROUP BY ENGINEER_ID,
|
TEMPERING_LAYOUT_ID,
|
SLOT
|
) T
|
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>
|
|
<select id="selectTemperingGlassCount" resultType="java.util.Map">
|
select a.engineer_id,
|
a.tempering_layout_id,
|
count2,
|
count1,
|
count2 - count1 as count3,
|
count(c.glass_id) as count4,
|
slots
|
from (select engineer_id,
|
tempering_layout_id,
|
count(*) as count1,
|
group_concat(distinct slot order by tempering_feed_sequence) as slots
|
from big_storage_cage_details
|
where state = 100
|
and tempering_layout_id!=0
|
group by engineer_id, tempering_layout_id) as a
|
left join
|
(select engineer_id, tempering_layout_id, count(*) as count2
|
from glass_info
|
group by engineer_id, tempering_layout_id) as b
|
on a.engineer_id = b.engineer_id and a.tempering_layout_id = b.tempering_layout_id
|
left join damage as c
|
on a.engineer_id = c.engineer_id and a.tempering_layout_id = c.tempering_layout_id and
|
(type = 8 or type = 9)
|
group by a.engineer_id, a.tempering_layout_id
|
order by a.engineer_id, a.tempering_layout_id
|
</select>
|
|
<select id="selectFlowCardCount" resultType="com.mes.bigstorage.entity.dto.FlowCardDTO">
|
SELECT fc.engineer_id AS engineerId,
|
count(DISTINCT fc.flow_card_id, fc.layer) AS flowCardIdCount,
|
count(DISTINCT gi.tempering_layout_id) AS totalTemper,
|
e.glass_total_area,
|
count(distinct bscd.tempering_layout_id) as cageTemper,
|
round(sum(bscd.width*bscd.height/1000000),2) as cageArea
|
FROM (
|
SELECT engineer_id,
|
flow_card_id,
|
IF
|
(combine = 0, layer, 1) AS layer,
|
combine
|
FROM glass_info
|
WHERE engineer_id IN (SELECT DISTINCT engineer_id FROM big_storage_cage_details WHERE state = 100)
|
GROUP BY engineer_id,
|
flow_card_id,
|
IF
|
(combine = 0, layer, 1),
|
combine
|
) AS fc
|
INNER JOIN glass_info gi ON fc.engineer_id = gi.engineer_id
|
AND gi.tempering_layout_id != 0
|
INNER JOIN engineering e
|
ON fc.engineer_id = e.engineer_id
|
left join big_storage_cage_details bscd on gi.glass_id=bscd.glass_id and bscd.state=100 and fc.flow_card_id=bscd.flow_card_id and fc.layer=bscd.layer
|
GROUP BY
|
fc.engineer_id
|
</select>
|
</mapper>
|