Commit bbd30541 authored by wanghao's avatar wanghao

1 扫托盘 上料 测试

parent 55ab50e2
...@@ -81,26 +81,42 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -81,26 +81,42 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectNearestFreeStorey" resultMap="TStoreyInfoResult"> <select id="selectNearestFreeStorey" resultMap="TStoreyInfoResult">
SELECT SELECT
f_storey_id, f_equipment_id, f_storey_code, f_ip, f_status, f_port, f_storey_id,
f_aging_start_time, f_update_time, f_create_time, f_alarm_time, f_blanking_command, f_feeding_command f_equipment_id,
f_storey_code,
f_ip,
f_status,
f_port,
f_aging_start_time,
f_update_time,
f_create_time,
f_alarm_time,
f_blanking_command,
f_feeding_command
FROM ( FROM (
SELECT SELECT
*, *,
-- 计算距离:北边(1-15)距离范围1-150,南边(16-30)距离范围151-300(确保北边优先)
CASE CASE
-- 北边柜子:(柜子编号-1)*10 + 层号(1-1→1,1-10→10,15-10→150)
WHEN cabinet_num BETWEEN 1 AND 15 THEN (cabinet_num - 1) * 10 + layer_num WHEN cabinet_num BETWEEN 1 AND 15 THEN (cabinet_num - 1) * 10 + layer_num
WHEN cabinet_num BETWEEN 16 AND 36 THEN (cabinet_num - 16) * 10 + layer_num -- 南边柜子:在北边最大距离(150)基础上累加,确保所有南边距离>北边(16-1→151,30-10→300)
WHEN cabinet_num BETWEEN 16 AND 30 THEN 150 + (cabinet_num - 16) * 10 + layer_num
END AS distance END AS distance
FROM ( FROM (
SELECT SELECT
*, *,
-- 拆分柜子编号(如1-1中的“1”)
CAST(SUBSTRING_INDEX(f_storey_code, '-', 1) AS UNSIGNED) AS cabinet_num, CAST(SUBSTRING_INDEX(f_storey_code, '-', 1) AS UNSIGNED) AS cabinet_num,
-- 拆分层号(如1-1中的“1”)
CAST(SUBSTRING_INDEX(f_storey_code, '-', -1) AS UNSIGNED) AS layer_num CAST(SUBSTRING_INDEX(f_storey_code, '-', -1) AS UNSIGNED) AS layer_num
FROM t_storey_info FROM t_storey_info
WHERE f_status = '0' -- 空闲状态 WHERE f_status = '0' -- 只筛选空闲状态
) AS parsed ) AS parsed
) AS calculated ) AS calculated
-- 按距离升序排序(北边先于南边,同区域内近的在前)
ORDER BY distance ASC ORDER BY distance ASC
LIMIT 1 LIMIT 1;
</select> </select>
<insert id="insertBatch" parameterType="list"> <insert id="insertBatch" parameterType="list">
insert into t_storey_info ( f_equipment_id, f_storey_code, f_ip, f_status, f_port, f_create_time) values insert into t_storey_info ( f_equipment_id, f_storey_code, f_ip, f_status, f_port, f_create_time) values
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment