<?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.edgstoragecage.mapper.EdgStorageCageDetailsMapper">
|
|
<resultMap id="baseMap" type="com.mes.edgstoragecage.entity.EdgStorageCageDetails">
|
<id column="id" property="id"/>
|
<result column="engineer_id" property="engineerId"/>
|
<result column="device_id" property="deviceId"/>
|
<result column="slot" property="slot"/>
|
<result column="glass_id" property="glassId"/>
|
<result column="sequence" property="sequence"/>
|
<result column="flow_card_id" property="flowCardId"/>
|
<result column="glass_type" property="glassType"/>
|
<result column="width" property="width"/>
|
<result column="height" property="height"/>
|
<result column="thickness" property="thickness"/>
|
<result column="edg_width" property="edgWidth"/>
|
<result column="edg_height" property="edgHeight"/>
|
<result column="tempering_layout_id" property="temperingLayoutId"/>
|
<result column="tempering_feed_sequence" property="temperingFeedSequence"/>
|
<result column="pattern_sequence" property="patternSequence"/>
|
<result column="state" property="state"/>
|
<result column="gap" property="gap"/>
|
<result column="glass_count" property="count"/>
|
</resultMap>
|
|
<select id="queryEdgStorageDetailsBySize" resultMap="baseMap">
|
with min_id_temp as (
|
select slot, min(id) as id, count(*) as glass_count
|
from edg_storage_cage_details
|
where state = 100
|
and device_id = #{deviceId}
|
group by slot
|
),
|
size_max_temp as (
|
select width, height, count(*) as total_count
|
from edg_storage_cage_details t
|
inner join min_id_temp t1 on t.id = t1.id
|
group by width, height
|
),
|
slot_temp as (
|
select t.*, t1.glass_count
|
from edg_storage_cage_details t
|
inner join min_id_temp t1 on t.id = t1.id
|
inner join size_max_temp t2 on t.width = t2.width and t.height = t2.height
|
<where>
|
<if test="width != 0">
|
and t.width = #{width}
|
</if>
|
<if test="height != 0">
|
and t.height = #{height}
|
</if>
|
<if test="cell == 2">
|
and t.thickness < #{maxThickness}
|
</if>
|
</where>
|
order by total_count desc, glass_count, abs(t.slot - #{currentSlot})
|
)
|
select *
|
from slot_temp limit 1
|
</select>
|
<select id="queryCutDrawingByEngineerId" resultType="com.mes.edgstoragecage.entity.vo.CutDrawingVO">
|
with glass_temp as (
|
select * from glass_info where engineer_id = #{engineerId} and pattern_sequence = #{patternSequence}
|
), cut_drawing_temp as (
|
select t.*,
|
case when t2.glass_id is not null then t2.type
|
when t1.glass_id is not null then t1.state
|
else 0 end as state
|
from glass_temp t
|
left join edg_storage_cage_details t1 on t.glass_id = t1.glass_id
|
left join damage t2 on t.glass_id = t2.glass_id and t2.type in (8,9)
|
)select * from cut_drawing_temp where 1=1
|
<if test="isAll == 1">
|
and state = 0
|
</if>
|
|
</select>
|
<select id="querySlotRemainWidth" resultType="com.mes.edgstoragecage.entity.vo.EdgSlotRemainVO">
|
select device_id,
|
slot,
|
if(#{cellLength} - sum(GREATEST(width, height) + #{glassGap}) < 0, 0, #{cellLength} -
|
sum(GREATEST(width, height) + #{glassGap})) as
|
remain_width
|
from edg_storage_cage_details
|
where state = 100
|
group by device_id, slot
|
</select>
|
<select id="queryEdgStorageDetailsByLimitSize" resultMap="baseMap">
|
SELECT t1.*
|
FROM edg_storage_cage t
|
LEFT JOIN edg_storage_cage_details t1 ON t.device_id = t1.device_id
|
AND t.slot = t1.slot
|
<where>
|
t.enable_state = 1
|
AND t1.state = 100
|
AND t1.device_id = #{deviceId}
|
<if test="width != 0">
|
and t1.width = #{width}
|
</if>
|
<if test="height != 0">
|
and t1.height = #{height}
|
</if>
|
<if test="cell == 1">
|
and #{minOneFirstLength} <= GREATEST(t1.width, t1.height)
|
and #{minOneSecondLength} <= least(t1.width, t1.height)
|
</if>
|
<if test="cell == 2">
|
and #{maxTwoFirstLength} >= GREATEST(t1.width, t1.height)
|
and #{maxTwoSecondLength} >= least(t1.width, t1.height)
|
and t1.thickness < #{maxThickness}
|
</if>
|
</where>
|
ORDER BY abs(t.slot - #{currentCell})
|
limit 1
|
</select>
|
<select id="queryPieChart" resultType="com.mes.largenscreen.entity.PieChartVO">
|
SELECT round(sum(CASE WHEN e.station_cell = 5 THEN 1 ELSE 0 END), 2) as oneCompletedQuantity,
|
round(sum(CASE WHEN e.station_cell = 5 THEN escd.width * escd.height / 1000000 ELSE 0 END),
|
2) as oneCompletedArea,
|
round(sum(CASE WHEN e.station_cell = 6 THEN 1 ELSE 0 END), 2) as twoCompletedQuantity,
|
round(sum(CASE WHEN e.station_cell = 6 THEN escd.width * escd.height / 1000000 ELSE 0 END),
|
2) as twoCompletedArea,
|
round(sum(CASE WHEN e.station_cell = 5 and escd.device_id is null THEN 1 ELSE 0 END),
|
2) as oneUncompletedQuantity,
|
round(sum(CASE
|
WHEN e.station_cell = 5 and escd.device_id is null THEN gi.width * gi.height / 1000000
|
ELSE 0 END),
|
2) as oneUncompletedArea,
|
round(sum(CASE WHEN e.station_cell = 6 and escd.device_id is null THEN 1 ELSE 0 END),
|
2) as twoUncompletedQuantity,
|
round(sum( CASE WHEN e.station_cell = 6 and escd.device_id is null THEN gi.width*gi.height/1000000 ELSE 0 END ),2) as twoUncompletedArea
|
FROM
|
glass_info gi
|
left join edg_storage_cage_details escd ON gi.glass_id = escd.glass_id
|
left join engineering e on gi.engineer_id=e.engineer_id
|
WHERE
|
date(e.create_time) = date(now())
|
</select>
|
</mapper>
|