Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
Z
zhmes-agecal
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
耿迪迪
zhmes-agecal
Commits
2e997ea1
Commit
2e997ea1
authored
Dec 04, 2025
by
wanghao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1 空闲柜子查找优化
parent
3d79e866
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
10 additions
and
10 deletions
+10
-10
TStoreyInfoMapper.xml
...em/src/main/resources/mapper/system/TStoreyInfoMapper.xml
+10
-10
No files found.
zhmes-agecal-system/src/main/resources/mapper/system/TStoreyInfoMapper.xml
View file @
2e997ea1
...
@@ -104,26 +104,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
...
@@ -104,26 +104,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
FROM (
FROM (
SELECT
SELECT
*,
*,
-- 计算
距离:北边(1-15)距离范围1-150,南边(16-30)距离范围151-300(确保北边优先)
-- 计算
排序权重:实现1,16,2,17,3,18,...的交替顺序
CASE
CASE
--
北边柜子:(柜子编号-1)*10 + 层号(1-1→1,1-10→10,15-10→150)
--
1-15号柜:奇数权重 1,3,5,7,...
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) *
2 + 1
--
南边柜子:在北边最大距离(150)基础上累加,确保所有南边距离>北边(16-1→151,30-10→300
)
--
16-30号柜:偶数权重 2,4,6,8,...(对应对面的柜子
)
WHEN cabinet_num BETWEEN 16 AND 30 THEN
150 + (cabinet_num - 16) * 10 + layer_num
WHEN cabinet_num BETWEEN 16 AND 30 THEN
(cabinet_num - 16) * 2 + 2
END AS
distance
END AS
sort_weight
FROM (
FROM (
SELECT
SELECT
*,
*,
-- 拆分柜子编号(如1-1中的
“1”
)
-- 拆分柜子编号(如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”
)
-- 拆分层号(如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
sort_weight ASC, layer_num
ASC
LIMIT 1;
LIMIT 1;
</select>
</select>
<insert
id=
"insertBatch"
parameterType=
"list"
>
<insert
id=
"insertBatch"
parameterType=
"list"
>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment