sort(EmsBaseMonitorInfo):优化监测点名称排序逻辑

- 新增数字序号提取功能,对包含数字序号的名称进行优先排序
- 调整特定顺序列表的索引返回值,确保数字序号在前
master
zch 7 months ago
parent 83721d61b0
commit dd464e2b41

@ -1,6 +1,8 @@
package com.os.ems.base.service.impl;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import com.os.common.utils.DateUtils;
@ -194,6 +196,18 @@ public class EmsBaseMonitorInfoServiceImpl implements IEmsBaseMonitorInfoService
"橡胶四厂", "三聚凯特", "世源", "联盛", "正兴", "天峰药业", "中科北方", "沃得",
"沈阳经济技术开发区管理委员会办公室", "管理中心", "科创", "博泰", "亿纬", "普利司通"
));
// 提取数字序号
Pattern pattern = Pattern.compile("(\\d+)[、]");
Matcher matcher = pattern.matcher(name);
if (matcher.find()) {
try {
int number = Integer.parseInt(matcher.group(1).trim());
return number;
} catch (NumberFormatException e) {
e.printStackTrace();
// 如果解析失败,继续按特定顺序列表排序
}
}
// 遍历特定顺序列表
for (int i = 0; i < specificOrder.size(); i++) {
@ -201,7 +215,7 @@ public class EmsBaseMonitorInfoServiceImpl implements IEmsBaseMonitorInfoService
String prefix = specificOrder.get(i);
// 如果名称包含当前前缀,则返回当前索引
if (kmpSearch(name, prefix) != -1) {
return i;
return i + 100000;
}
}
// 如果找不到匹配项,则返回最大值

Loading…
Cancel
Save