Browse Source

修复bug

master
前端-胡立永 1 week ago
parent
commit
dca4e27861
1 changed files with 38 additions and 11 deletions
  1. +38
    -11
      module-common/src/main/java/org/jeecg/api/service/impl/LogisticsUtil.java

+ 38
- 11
module-common/src/main/java/org/jeecg/api/service/impl/LogisticsUtil.java View File

@ -20,7 +20,6 @@ import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
@Slf4j
@ -359,23 +358,51 @@ public class LogisticsUtil {
if (provinceMatcher.find()) {
province = provinceMatcher.group(1);
list.add(province);
// 特殊处理直辖市北京天津上海重庆
if ("北京市".equals(province) || "天津市".equals(province) ||
"上海市".equals(province) || "重庆市".equals(province)) {
// 对于直辖市省份和城市是同一个
city = province;
list.add(city);
// 直接匹配区县从省份名称后开始匹配
java.util.regex.Pattern municipalityDistrictPattern =
java.util.regex.Pattern.compile("(?<=" + java.util.regex.Pattern.quote(province) + ")(.*?区|.*?县)");
java.util.regex.Matcher municipalityDistrictMatcher = municipalityDistrictPattern.matcher(address);
if (municipalityDistrictMatcher.find()) {
district = municipalityDistrictMatcher.group(1);
list.add(district);
}
log.info("直辖市地址解析 - 省份:{},城市:{},区县:{}", province, city, district);
return list;
}
}
// 非直辖市的处理逻辑
// 匹配城市以市自治州地区盟结尾
java.util.regex.Pattern cityPattern = java.util.regex.Pattern.compile("(?<=" + province + ")(.*?市|.*?自治州|.*?地区|.*?盟)");
java.util.regex.Matcher cityMatcher = cityPattern.matcher(address);
if (cityMatcher.find()) {
city = cityMatcher.group(1);
list.add(city);
if (!province.isEmpty()) {
java.util.regex.Pattern cityPattern = java.util.regex.Pattern.compile("(?<=" + java.util.regex.Pattern.quote(province) + ")(.*?市|.*?自治州|.*?地区|.*?盟)");
java.util.regex.Matcher cityMatcher = cityPattern.matcher(address);
if (cityMatcher.find()) {
city = cityMatcher.group(1);
list.add(city);
}
}
// 匹配区县以区旗结尾
java.util.regex.Pattern districtPattern = java.util.regex.Pattern.compile("(?<=" + city + ")(.*?区|.*?县|.*?旗|.*?市)");
java.util.regex.Matcher districtMatcher = districtPattern.matcher(address);
if (districtMatcher.find()) {
district = districtMatcher.group(1);
list.add(district);
if (!city.isEmpty()) {
java.util.regex.Pattern districtPattern = java.util.regex.Pattern.compile("(?<=" + java.util.regex.Pattern.quote(city) + ")(.*?区|.*?县|.*?旗|.*?市)");
java.util.regex.Matcher districtMatcher = districtPattern.matcher(address);
if (districtMatcher.find()) {
district = districtMatcher.group(1);
list.add(district);
}
}
log.info("地址解析结果 - 省份:{},城市:{},区县:{}", province, city, district);
}
return list;


Loading…
Cancel
Save