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

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

@ -1,6 +1,8 @@
package com.os.ems.base.service.impl; package com.os.ems.base.service.impl;
import java.util.*; import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.os.common.utils.DateUtils; 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++) { for (int i = 0; i < specificOrder.size(); i++) {
@ -201,7 +215,7 @@ public class EmsBaseMonitorInfoServiceImpl implements IEmsBaseMonitorInfoService
String prefix = specificOrder.get(i); String prefix = specificOrder.get(i);
// 如果名称包含当前前缀,则返回当前索引 // 如果名称包含当前前缀,则返回当前索引
if (kmpSearch(name, prefix) != -1) { if (kmpSearch(name, prefix) != -1) {
return i; return i + 100000;
} }
} }
// 如果找不到匹配项,则返回最大值 // 如果找不到匹配项,则返回最大值

Loading…
Cancel
Save