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 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 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}
ORDER BY SLOT_COUNT DESC
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}
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
update big_storage_cage_details
state = #{state}
(glass_id,slot) in (
(#{item.glassId}, #{item.targetSlot})
)
and state !=101
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 (
#{item}
)
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
and tempering_layout_id = 0
and tempering_layout_id != 0
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
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
#{item}
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
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
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 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
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
and tempering_layout_id = 0
and tempering_layout_id != 0
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