feature(地址清洗):地址清洗开发
1. 地址分为3类(单套、楼栋、小区、包含多个楼栋或者单套) 2. 基于联城数库中的路名拆分,保证联城中的路名完全匹配; 3. 联城数库中的小区路名清洗(XX路、XX大道)
This commit is contained in:
parent
5dda87a984
commit
d552b7da05
@ -0,0 +1,33 @@
|
||||
package com.ruoyi.project.tool.address;
|
||||
|
||||
import com.ruoyi.project.tool.address.model.CleanAddress;
|
||||
import com.ruoyi.project.tool.address.model.CleanAddressBuilder;
|
||||
import com.ruoyi.project.tool.address.service.impl.NoSignalAddressHandler;
|
||||
import com.ruoyi.project.tool.address.service.impl.SignalAddressHandler;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 地址清洗
|
||||
*
|
||||
* @author lihe
|
||||
*/
|
||||
public class CleanUtil {
|
||||
|
||||
/**
|
||||
* 清洗
|
||||
*
|
||||
* @param rawAddress
|
||||
* @return
|
||||
*/
|
||||
public static CleanAddress clear(String rawAddress) {
|
||||
CleanAddress cleanAddress = new CleanAddress(rawAddress);
|
||||
if (cleanAddress.getContainsSpecialChar()) {
|
||||
new SignalAddressHandler().clear(cleanAddress);
|
||||
} else {
|
||||
new NoSignalAddressHandler().clear(cleanAddress);
|
||||
}
|
||||
return cleanAddress;
|
||||
}
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
package com.ruoyi.project.tool.address.model;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 室地址
|
||||
*
|
||||
* @author lihe
|
||||
*/
|
||||
public class BuildingAddress extends PartialAddress {
|
||||
|
||||
public BuildingAddress(String address) {
|
||||
super(address);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PartialAddress> getPartialAddress() {
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
@ -0,0 +1,221 @@
|
||||
package com.ruoyi.project.tool.address.model;
|
||||
|
||||
import com.ruoyi.project.tool.address.service.impl.SignalAddressHandler;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 清洗地址
|
||||
*
|
||||
* @author lihe
|
||||
*/
|
||||
public class CleanAddress {
|
||||
/**
|
||||
* 原地址
|
||||
*/
|
||||
private String rawAddress;
|
||||
/**
|
||||
* 待处理的地址
|
||||
*/
|
||||
private StringBuilder boundAddress;
|
||||
/**
|
||||
* 区域
|
||||
*/
|
||||
private String district;
|
||||
/**
|
||||
* 镇
|
||||
*/
|
||||
private String region;
|
||||
/**
|
||||
* 板块
|
||||
*/
|
||||
private String block;
|
||||
/**
|
||||
* 路名(可能交叉路)
|
||||
*/
|
||||
private String road;
|
||||
/**
|
||||
* 小区名称
|
||||
*/
|
||||
private String communityName;
|
||||
/**
|
||||
* 楼层
|
||||
* (和地下有关系)
|
||||
*/
|
||||
private Integer floor;
|
||||
/**
|
||||
* 小区地址
|
||||
*/
|
||||
private PartialAddress communityAddress;
|
||||
/**
|
||||
* 楼栋地址
|
||||
*/
|
||||
private PartialAddress buildingAddress;
|
||||
/**
|
||||
* 单套地址
|
||||
*/
|
||||
private PartialAddress condoAddress;
|
||||
/**
|
||||
* 物业(普通、车位)
|
||||
*/
|
||||
private String propertyType;
|
||||
/**
|
||||
* 独栋
|
||||
*/
|
||||
private Boolean independent;
|
||||
/**
|
||||
* 多个地址
|
||||
*/
|
||||
private List<PartialAddress> addressList;
|
||||
|
||||
|
||||
private Boolean containsSpecialChar;
|
||||
|
||||
private static List<String> specialChar = new LinkedList<>();
|
||||
|
||||
static {
|
||||
specialChar.add("。");
|
||||
specialChar.add(".");
|
||||
specialChar.add(",");
|
||||
specialChar.add(",");
|
||||
specialChar.add("-");
|
||||
specialChar.add("——");
|
||||
specialChar.add("_");
|
||||
specialChar.add("、");
|
||||
specialChar.add("(");
|
||||
specialChar.add(")");
|
||||
specialChar.add("(");
|
||||
specialChar.add(")");
|
||||
specialChar.add("《");
|
||||
specialChar.add("》");
|
||||
}
|
||||
|
||||
public CleanAddress(String rawAddress) {
|
||||
this.rawAddress = rawAddress;
|
||||
|
||||
}
|
||||
|
||||
public String getRawAddress() {
|
||||
return rawAddress;
|
||||
}
|
||||
|
||||
public void setRawAddress(String rawAddress) {
|
||||
this.rawAddress = rawAddress;
|
||||
}
|
||||
|
||||
public String getDistrict() {
|
||||
return district;
|
||||
}
|
||||
|
||||
public void setDistrict(String district) {
|
||||
this.district = district;
|
||||
}
|
||||
|
||||
public String getRegion() {
|
||||
return region;
|
||||
}
|
||||
|
||||
public void setRegion(String region) {
|
||||
this.region = region;
|
||||
}
|
||||
|
||||
public String getBlock() {
|
||||
return block;
|
||||
}
|
||||
|
||||
public void setBlock(String block) {
|
||||
this.block = block;
|
||||
}
|
||||
|
||||
public String getRoad() {
|
||||
return road;
|
||||
}
|
||||
|
||||
public void setRoad(String road) {
|
||||
this.road = road;
|
||||
}
|
||||
|
||||
public String getCommunityName() {
|
||||
return communityName;
|
||||
}
|
||||
|
||||
public void setCommunityName(String communityName) {
|
||||
this.communityName = communityName;
|
||||
}
|
||||
|
||||
public Integer getFloor() {
|
||||
return floor;
|
||||
}
|
||||
|
||||
public void setFloor(Integer floor) {
|
||||
this.floor = floor;
|
||||
}
|
||||
|
||||
public PartialAddress getCommunityAddress() {
|
||||
return communityAddress;
|
||||
}
|
||||
|
||||
public void setCommunityAddress(PartialAddress communityAddress) {
|
||||
this.communityAddress = communityAddress;
|
||||
}
|
||||
|
||||
public PartialAddress getBuildingAddress() {
|
||||
return buildingAddress;
|
||||
}
|
||||
|
||||
public void setBuildingAddress(PartialAddress buildingAddress) {
|
||||
this.buildingAddress = buildingAddress;
|
||||
}
|
||||
|
||||
public PartialAddress getCondoAddress() {
|
||||
return condoAddress;
|
||||
}
|
||||
|
||||
public void setCondoAddress(PartialAddress condoAddress) {
|
||||
this.condoAddress = condoAddress;
|
||||
}
|
||||
|
||||
public String getPropertyType() {
|
||||
return propertyType;
|
||||
}
|
||||
|
||||
public void setPropertyType(String propertyType) {
|
||||
this.propertyType = propertyType;
|
||||
}
|
||||
|
||||
public List<PartialAddress> getAddressList() {
|
||||
return addressList;
|
||||
}
|
||||
|
||||
public void setAddressList(List<PartialAddress> addressList) {
|
||||
this.addressList = addressList;
|
||||
}
|
||||
|
||||
public Boolean getIndependent() {
|
||||
return independent;
|
||||
}
|
||||
|
||||
public void setIndependent(Boolean independent) {
|
||||
this.independent = independent;
|
||||
}
|
||||
|
||||
public StringBuilder getBoundAddress() {
|
||||
return boundAddress;
|
||||
}
|
||||
|
||||
public Boolean getContainsSpecialChar() {
|
||||
String todoAddress = rawAddress.trim()
|
||||
.replace("\t", "")
|
||||
.replace(" ", "");
|
||||
|
||||
this.boundAddress = new StringBuilder(rawAddress);
|
||||
for (int i = 0; i < specialChar.size(); i++) {
|
||||
if (todoAddress.contains(specialChar.get(i))) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
@ -0,0 +1,89 @@
|
||||
package com.ruoyi.project.tool.address.model;
|
||||
|
||||
import com.ruoyi.common.utils.LoadUtil;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 清洗地址构建
|
||||
*
|
||||
* @author lihe
|
||||
*/
|
||||
public class CleanAddressBuilder {
|
||||
|
||||
private Map<String, String> districtMap = LoadUtil.loadDict("address-dict/district.dict");
|
||||
private List<String> regionList = LoadUtil.loadList("address-dict/region.dict");
|
||||
private List<String> blockList = LoadUtil.loadList("address-dict/block.dict");
|
||||
private CleanAddress cleanAddress;
|
||||
|
||||
private CleanAddressBuilder(CleanAddress cleanAddress) {
|
||||
this.cleanAddress = cleanAddress;
|
||||
}
|
||||
|
||||
public static CleanAddressBuilder builder(CleanAddress cleanAddress) {
|
||||
return new CleanAddressBuilder(cleanAddress);
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析区域
|
||||
* 前面7个字符
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public void parseDistrict() {
|
||||
String shanghaiAndDistrict = "上" + cleanAddress.getBoundAddress().substring(0, 7).replace("上上", "");
|
||||
for (Map.Entry<String, String> district : districtMap.entrySet()) {
|
||||
if (shanghaiAndDistrict.startsWith(district.getKey())) {
|
||||
cleanAddress.setDistrict(district.getKey());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析镇
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public void parseRegion() {
|
||||
for (int i = 0; i < regionList.size(); i++) {
|
||||
if (-1 != cleanAddress.getBoundAddress().indexOf(regionList.get(i))) {
|
||||
cleanAddress.setRegion(regionList.get(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析板块
|
||||
*/
|
||||
public void parseBlock() {
|
||||
for (int i = 0; i < blockList.size(); i++) {
|
||||
if (-1 != cleanAddress.getBoundAddress().indexOf(blockList.get(i))) {
|
||||
cleanAddress.setBlock(regionList.get(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析路(可能缺失“路”)
|
||||
*/
|
||||
public void parseRoad() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析小区名称(路名和小区名称重定义)
|
||||
*/
|
||||
public void parseCommunityName() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否独栋?“全”“全幢”
|
||||
*/
|
||||
public void parseIndependent() {
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
package com.ruoyi.project.tool.address.model;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 小区地址
|
||||
*
|
||||
* @author lihe
|
||||
*/
|
||||
public class CommunityAddress extends PartialAddress {
|
||||
|
||||
public CommunityAddress(String address) {
|
||||
super(address);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PartialAddress> getPartialAddress() {
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
package com.ruoyi.project.tool.address.model;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* 室地址
|
||||
*
|
||||
* @author lihe
|
||||
*/
|
||||
public class CondoAddress extends PartialAddress {
|
||||
|
||||
public CondoAddress(String address) {
|
||||
super(address);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PartialAddress> getPartialAddress() {
|
||||
Pattern pattern = Pattern.compile(SHI_PATTERN);
|
||||
Matcher matcher = pattern.matcher(this.address);
|
||||
// 这个需要优化,地下层没有考虑
|
||||
if (matcher.find()) {
|
||||
this.shi = parseShi();
|
||||
this.floor = parseFloor();
|
||||
this.hao = parseHAO();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
@ -0,0 +1,105 @@
|
||||
package com.ruoyi.project.tool.address.model;
|
||||
|
||||
import com.ruoyi.common.exception.CustomException;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import io.swagger.models.auth.In;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* 清洗地址
|
||||
*
|
||||
* @author lihe
|
||||
*/
|
||||
public abstract class PartialAddress {
|
||||
protected String address;
|
||||
protected String hao;
|
||||
protected String shi;
|
||||
protected Integer floor;
|
||||
protected final static String SHI_PATTERN = "([\\dA-Za-z]+)室$";
|
||||
protected final static String HAO_PATTERN = "([\\dA-Za-z]+)(甲乙丙丁戊己庚辛仍亏)?号";
|
||||
protected final static String NUMBER_PATTERN = "\\d+";
|
||||
protected final int HUNDRED = 100;
|
||||
protected final int TEN_THOUSAND = 10 * 1000;
|
||||
|
||||
public PartialAddress(String address) {
|
||||
this.address = address;
|
||||
}
|
||||
|
||||
public String getHao() {
|
||||
return hao;
|
||||
}
|
||||
|
||||
public String getShi() {
|
||||
return shi;
|
||||
}
|
||||
|
||||
public Integer getFloor() {
|
||||
return floor;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取地址(单套、楼栋、小区)
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public abstract List<PartialAddress> getPartialAddress();
|
||||
|
||||
/**
|
||||
* 室解析
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
protected String parseShi() {
|
||||
Pattern pattern = Pattern.compile(SHI_PATTERN);
|
||||
Matcher matcher = pattern.matcher(this.address);
|
||||
// 这个需要优化,地下层没有考虑
|
||||
if (matcher.find()) {
|
||||
return matcher.group(1);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 楼层解析
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
protected Integer parseFloor() {
|
||||
if (StringUtils.isEmpty(this.shi)) {
|
||||
return null;
|
||||
}
|
||||
Pattern pattern = Pattern.compile(NUMBER_PATTERN);
|
||||
Matcher matcher = pattern.matcher(this.shi);
|
||||
// 这个需要优化,地下层没有考虑
|
||||
if (matcher.find()) {
|
||||
Integer num = new Integer(matcher.group(0));
|
||||
if (num <= HUNDRED) {
|
||||
return num / 10;
|
||||
} else if (num > HUNDRED && num <= TEN_THOUSAND) {
|
||||
return num / 100;
|
||||
} else {
|
||||
throw new CustomException("室号太大");
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 号
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
protected String parseHAO() {
|
||||
Pattern pattern = Pattern.compile(HAO_PATTERN);
|
||||
Matcher matcher = pattern.matcher(this.address);
|
||||
// 这个需要优化,地下层没有考虑
|
||||
if (matcher.find()) {
|
||||
return matcher.group(1);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
package com.ruoyi.project.tool.address.service;
|
||||
|
||||
import com.ruoyi.project.tool.address.model.CleanAddress;
|
||||
|
||||
/**
|
||||
* 地址处理方法
|
||||
*
|
||||
* @author lihe
|
||||
*/
|
||||
public interface AddressHandler {
|
||||
|
||||
/**
|
||||
* 地址清洗
|
||||
*
|
||||
* @param cleanAddress
|
||||
*/
|
||||
void clear(CleanAddress cleanAddress);
|
||||
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
package com.ruoyi.project.tool.address.service.impl;
|
||||
|
||||
import com.ruoyi.project.tool.address.model.CleanAddress;
|
||||
import com.ruoyi.project.tool.address.model.CleanAddressBuilder;
|
||||
import com.ruoyi.project.tool.address.service.AddressHandler;
|
||||
|
||||
/**
|
||||
* 没有特殊符号的地址清洗
|
||||
*
|
||||
* @author lihe
|
||||
*/
|
||||
public class NoSignalAddressHandler implements AddressHandler {
|
||||
|
||||
@Override
|
||||
public void clear(CleanAddress cleanAddress) {
|
||||
CleanAddressBuilder.builder(cleanAddress).parseDistrict();
|
||||
}
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
package com.ruoyi.project.tool.address.service.impl;
|
||||
|
||||
import com.ruoyi.project.tool.address.model.CleanAddress;
|
||||
import com.ruoyi.project.tool.address.service.AddressHandler;
|
||||
|
||||
/**
|
||||
* 带有字符的地址
|
||||
*
|
||||
* @author lihe
|
||||
*/
|
||||
public class SignalAddressHandler implements AddressHandler {
|
||||
|
||||
|
||||
@Override
|
||||
public void clear(CleanAddress cleanAddress) {
|
||||
|
||||
}
|
||||
}
|
121
ruoyi/src/main/resources/address-dict/block.dict
Normal file
121
ruoyi/src/main/resources/address-dict/block.dict
Normal file
@ -0,0 +1,121 @@
|
||||
大华
|
||||
青浦新城
|
||||
老西门
|
||||
曲阳
|
||||
佘山
|
||||
龙华
|
||||
江川路
|
||||
洋泾
|
||||
长寿
|
||||
黄兴
|
||||
新华路
|
||||
曹杨
|
||||
临港新城
|
||||
大宁
|
||||
华漕
|
||||
曹家渡
|
||||
张江
|
||||
安亭汽车城
|
||||
桃浦
|
||||
彭浦
|
||||
衡山路
|
||||
颛桥
|
||||
黄浦滨江
|
||||
朱泾
|
||||
长桥
|
||||
东外滩
|
||||
长兴岛
|
||||
武宁
|
||||
南京西路
|
||||
花木
|
||||
金山新城
|
||||
海湾
|
||||
江宁路
|
||||
金山中部
|
||||
曹路
|
||||
松江南部
|
||||
松江新城东区
|
||||
青浦北部
|
||||
田林
|
||||
浦江
|
||||
嘉定北部
|
||||
打浦桥
|
||||
碧云
|
||||
九亭
|
||||
庄行
|
||||
亭林
|
||||
外高桥
|
||||
松江中部
|
||||
新江湾城
|
||||
张庙
|
||||
横沙岛
|
||||
崇明其他
|
||||
古美罗阳
|
||||
大场
|
||||
唐镇
|
||||
七宝
|
||||
塘桥
|
||||
南桥新城
|
||||
西郊
|
||||
北蔡
|
||||
凉城
|
||||
虹桥
|
||||
淞南高境
|
||||
柘林
|
||||
长风
|
||||
莘庄
|
||||
马桥
|
||||
枫泾
|
||||
光新
|
||||
泗泾
|
||||
月浦
|
||||
梅陇春申
|
||||
金汇
|
||||
真新
|
||||
陈家镇
|
||||
北外滩
|
||||
江桥
|
||||
中原
|
||||
华泾
|
||||
长征
|
||||
嘉定主城区
|
||||
南翔
|
||||
四川北路
|
||||
枫林
|
||||
惠南
|
||||
淮海中路
|
||||
金虹桥
|
||||
淞宝
|
||||
南站
|
||||
古北
|
||||
松江新城西区
|
||||
万里
|
||||
吴泾
|
||||
新场
|
||||
杨行
|
||||
徐家汇
|
||||
赵巷
|
||||
漕泾
|
||||
人民广场
|
||||
不夜城
|
||||
三林
|
||||
祝桥
|
||||
川沙
|
||||
浦东世博
|
||||
中山公园
|
||||
金桥
|
||||
罗店
|
||||
真如
|
||||
周康
|
||||
陆家嘴滨江
|
||||
顾村
|
||||
航头
|
||||
徐泾
|
||||
五角场
|
||||
朱家角
|
||||
新桥
|
||||
崇明新城
|
||||
堡镇
|
||||
奉城
|
||||
罗泾
|
||||
鞍山
|
70
ruoyi/src/main/resources/address-dict/district.dict
Normal file
70
ruoyi/src/main/resources/address-dict/district.dict
Normal file
@ -0,0 +1,70 @@
|
||||
宝山
|
||||
宝山区
|
||||
长宁
|
||||
长宁区
|
||||
崇明
|
||||
崇明区
|
||||
奉贤
|
||||
奉贤区
|
||||
虹口
|
||||
虹口区
|
||||
黄浦
|
||||
黄浦区
|
||||
嘉定
|
||||
嘉定区
|
||||
金山
|
||||
金山区
|
||||
静安
|
||||
静安区
|
||||
卢湾
|
||||
闵行
|
||||
闵行区
|
||||
普陀
|
||||
普陀区
|
||||
浦东
|
||||
浦东南汇
|
||||
浦东新区
|
||||
青浦
|
||||
青浦区
|
||||
上海市宝山
|
||||
上海市宝山区
|
||||
上海市长宁
|
||||
上海市长宁区
|
||||
上海市崇明
|
||||
上海市崇明区
|
||||
上海市奉贤
|
||||
上海市奉贤区
|
||||
上海市虹口
|
||||
上海市虹口区
|
||||
上海市黄浦
|
||||
上海市黄浦区
|
||||
上海市嘉定
|
||||
上海市嘉定区
|
||||
上海市金山
|
||||
上海市金山区
|
||||
上海市静安
|
||||
上海市静安区
|
||||
上海市卢湾区
|
||||
上海市闵行
|
||||
上海市闵行区
|
||||
上海市南汇区
|
||||
上海市普陀
|
||||
上海市普陀区
|
||||
上海市浦东
|
||||
上海市浦东新区
|
||||
上海市青浦
|
||||
上海市青浦区
|
||||
上海市松江
|
||||
上海市松江区
|
||||
上海市徐汇
|
||||
上海市徐汇区
|
||||
上海市杨浦
|
||||
上海市杨浦区
|
||||
上海市闸北区
|
||||
松江
|
||||
松江区
|
||||
徐汇
|
||||
徐汇区
|
||||
杨浦
|
||||
杨浦区
|
||||
闸北
|
431
ruoyi/src/main/resources/address-dict/region.dict
Normal file
431
ruoyi/src/main/resources/address-dict/region.dict
Normal file
@ -0,0 +1,431 @@
|
||||
艾镇镇
|
||||
安亭镇
|
||||
八滧镇
|
||||
白鹤镇
|
||||
白玉路街道
|
||||
半淞园路街道
|
||||
浜镇镇
|
||||
保安镇
|
||||
堡镇
|
||||
堡镇镇
|
||||
北蔡镇
|
||||
北川沙镇
|
||||
北桥镇
|
||||
北新泾街道
|
||||
北新泾镇
|
||||
北新桥镇
|
||||
北闸镇
|
||||
蔡路镇
|
||||
仓桥镇
|
||||
曹行镇
|
||||
曹家渡街道
|
||||
曹路镇
|
||||
曹王镇
|
||||
曹杨新村街道
|
||||
漕河泾镇
|
||||
漕泾镇
|
||||
草棚镇
|
||||
草镇镇
|
||||
长白新村街道
|
||||
长浜镇
|
||||
长风新村街道
|
||||
长江农场
|
||||
长桥街道
|
||||
长兴乡
|
||||
长兴镇
|
||||
长征镇
|
||||
车墩镇
|
||||
辰山镇
|
||||
陈坊桥镇
|
||||
陈行镇
|
||||
陈家行镇
|
||||
陈家镇
|
||||
城北镇
|
||||
城桥镇
|
||||
城厢镇
|
||||
澄桥镇
|
||||
盛桥镇
|
||||
盛梓庙镇
|
||||
程家桥街道
|
||||
储店镇
|
||||
川沙县
|
||||
川沙镇
|
||||
大场镇
|
||||
大椿镇
|
||||
大港镇
|
||||
大宁路街道
|
||||
大桥街道
|
||||
大团镇
|
||||
大新镇
|
||||
大盈镇
|
||||
邓镇镇
|
||||
丁棚镇
|
||||
定海路街道
|
||||
东风农场
|
||||
东沟镇
|
||||
东海镇
|
||||
东新路街道
|
||||
东新镇
|
||||
董家渡街道
|
||||
洞泾镇
|
||||
杜坊镇
|
||||
杜行镇
|
||||
二堡镇
|
||||
二条竖河镇
|
||||
蕃瓜弄镇
|
||||
方家窑镇
|
||||
方泰镇
|
||||
彷徨镇
|
||||
丰乐镇
|
||||
封浜镇
|
||||
枫泾镇
|
||||
凤凰镇
|
||||
凤溪镇
|
||||
奉城镇
|
||||
奉浦工业区
|
||||
奉贤镇
|
||||
奉新镇
|
||||
富民镇
|
||||
干巷镇
|
||||
港东乡
|
||||
港口镇
|
||||
港西镇
|
||||
港沿镇
|
||||
高东镇
|
||||
高行镇
|
||||
高桥镇
|
||||
葛隆镇
|
||||
龚路镇
|
||||
共和新路街道
|
||||
顾村镇
|
||||
顾路镇
|
||||
关港镇
|
||||
光明镇
|
||||
广福镇
|
||||
广富林镇
|
||||
广中路街道
|
||||
海滨新村街道
|
||||
海桥乡
|
||||
海桥镇
|
||||
海湾镇
|
||||
航头镇
|
||||
合庆镇
|
||||
合兴乡
|
||||
合兴镇
|
||||
合作镇
|
||||
横沔镇
|
||||
横沙乡
|
||||
洪庙镇
|
||||
红卫镇
|
||||
红星农场
|
||||
红星镇
|
||||
虹桥街道
|
||||
虹桥镇
|
||||
侯家镇
|
||||
后岗镇
|
||||
胡桥镇
|
||||
花木镇
|
||||
华漕镇
|
||||
华泾镇
|
||||
华路镇
|
||||
华亭镇
|
||||
华新镇
|
||||
华阳桥镇
|
||||
华阳镇
|
||||
欢庵镇
|
||||
黄埔区
|
||||
黄渡镇
|
||||
黄楼镇
|
||||
黄路镇
|
||||
惠南镇
|
||||
机杨镇
|
||||
汲浜镇
|
||||
纪王镇
|
||||
嘉定工业区
|
||||
嘉定工业园区
|
||||
嘉定镇
|
||||
戬浜桥镇
|
||||
戬浜镇
|
||||
建设镇
|
||||
江海镇
|
||||
江口镇
|
||||
江浦路街道
|
||||
江桥镇
|
||||
江湾镇
|
||||
江镇镇
|
||||
蒋庄镇
|
||||
界排镇
|
||||
金汇镇
|
||||
金桥镇
|
||||
金山工业区
|
||||
金山区镇
|
||||
金山卫
|
||||
金山卫镇
|
||||
金山嘴镇
|
||||
金卫镇
|
||||
金泽镇
|
||||
九亭镇
|
||||
菊园新区
|
||||
康桥镇
|
||||
控江路街道
|
||||
廊下镇
|
||||
老港镇
|
||||
老西门街道
|
||||
李塔汇镇
|
||||
莲盛镇
|
||||
练塘镇
|
||||
燎原农场
|
||||
凌桥镇
|
||||
刘行镇
|
||||
刘夏镇
|
||||
六里镇
|
||||
六团镇
|
||||
六灶镇
|
||||
龙华镇
|
||||
娄塘镇
|
||||
芦潮港
|
||||
芦潮港镇
|
||||
鲁汇镇
|
||||
陆行镇
|
||||
陆家巷镇
|
||||
陆家嘴街道
|
||||
罗店镇
|
||||
罗泾镇
|
||||
罗南镇
|
||||
吕巷镇
|
||||
绿华镇
|
||||
马陆镇
|
||||
马桥镇
|
||||
毛家镇
|
||||
泖港镇
|
||||
泖桥镇
|
||||
梅陇镇
|
||||
梅园街道
|
||||
猛将庙镇
|
||||
庙行镇
|
||||
庙镇镇
|
||||
木杓镇
|
||||
南二条竖河镇
|
||||
南盘滧镇
|
||||
南桥镇
|
||||
南翔镇
|
||||
南星镇
|
||||
南苑镇
|
||||
泥彩镇
|
||||
泥城镇
|
||||
牛棚镇
|
||||
排衙镇
|
||||
潘桥镇
|
||||
潘石镇
|
||||
蟠龙镇
|
||||
彭浦镇
|
||||
彭镇镇
|
||||
平安镇
|
||||
平凉路街道
|
||||
浦东杨思
|
||||
浦江镇
|
||||
七宝镇
|
||||
七滧镇
|
||||
七灶镇
|
||||
戚家墩镇
|
||||
祁连镇
|
||||
齐贤镇
|
||||
前卫农场
|
||||
钱门塘镇
|
||||
钱桥镇
|
||||
钱圩镇
|
||||
秦镇镇
|
||||
青村
|
||||
青村镇
|
||||
青墩镇
|
||||
青浦镇
|
||||
邱移庙镇
|
||||
茸北镇
|
||||
阮巷镇
|
||||
三岔港镇
|
||||
三墩镇
|
||||
三光镇
|
||||
三林镇
|
||||
三桥镇
|
||||
三星镇
|
||||
三灶镇
|
||||
山阳镇
|
||||
商塌镇
|
||||
邵厂镇
|
||||
佘山镇
|
||||
申港街道
|
||||
莘庄镇
|
||||
沈巷镇
|
||||
沈家湾镇
|
||||
沈家镇
|
||||
沈庄镇
|
||||
施镇镇
|
||||
石湖荡镇
|
||||
石皮泐镇
|
||||
石泉路街道
|
||||
书院镇
|
||||
竖河镇
|
||||
竖新镇
|
||||
四平路街道
|
||||
四团镇
|
||||
四滧镇
|
||||
泗泾镇
|
||||
松江工业区
|
||||
松江新城区
|
||||
松江新桥
|
||||
松江镇
|
||||
松隐镇
|
||||
苏民镇
|
||||
孙桥镇
|
||||
泰日镇
|
||||
谈家港镇
|
||||
坦直镇
|
||||
唐行镇
|
||||
唐家行镇
|
||||
唐镇镇
|
||||
塘桥镇
|
||||
塘外镇
|
||||
塘湾镇
|
||||
桃浦镇
|
||||
题桥镇
|
||||
天马山镇
|
||||
天目西路街道
|
||||
田林街道
|
||||
亭林镇
|
||||
头桥镇
|
||||
瓦屑镇
|
||||
外冈镇
|
||||
湾镇镇
|
||||
万安镇
|
||||
万祥镇
|
||||
王港镇
|
||||
王鲁玙镇
|
||||
望仙桥镇
|
||||
望新镇
|
||||
邬桥镇
|
||||
吴店镇
|
||||
吴淞镇
|
||||
吴淞镇街道
|
||||
五角场镇
|
||||
五厍镇
|
||||
五四农场
|
||||
五滧乡
|
||||
五滧镇
|
||||
西岑镇
|
||||
西渡街道
|
||||
西渡镇
|
||||
西护塘镇
|
||||
西门镇
|
||||
西三江口镇
|
||||
下坊渡镇
|
||||
下三星镇
|
||||
下沙镇
|
||||
下协隆镇
|
||||
夏阳街道
|
||||
香花桥街道
|
||||
香花桥镇
|
||||
响哃镇
|
||||
向化镇
|
||||
萧塘镇
|
||||
小东门街道
|
||||
小横河镇
|
||||
小昆山镇
|
||||
小竖河镇
|
||||
小湾镇
|
||||
小营房镇
|
||||
小蒸镇
|
||||
滧村镇
|
||||
协隆镇
|
||||
斜土路街道
|
||||
新安镇
|
||||
新浜镇
|
||||
新场镇
|
||||
新城街道
|
||||
新城区
|
||||
新成街道
|
||||
新成路街道
|
||||
新村乡
|
||||
新村镇
|
||||
新风镇
|
||||
新港路街道
|
||||
新港镇
|
||||
新海农场
|
||||
新海镇
|
||||
新河镇
|
||||
新泾镇
|
||||
新绿镇
|
||||
新米行镇
|
||||
新民镇
|
||||
新农镇
|
||||
新桥镇
|
||||
新寺镇
|
||||
新镇镇
|
||||
兴塔镇
|
||||
星火开发区
|
||||
徐行镇
|
||||
徐家行镇
|
||||
徐家汇街道
|
||||
徐泾镇
|
||||
徐路镇
|
||||
宣桥镇
|
||||
殷行街道
|
||||
烟墩头镇
|
||||
严桥镇
|
||||
延吉新村街道
|
||||
盐仓镇
|
||||
杨行镇
|
||||
杨家桥镇
|
||||
杨家镇镇
|
||||
杨柳桥镇
|
||||
杨思镇
|
||||
杨园镇
|
||||
洋泾街道
|
||||
洋泾镇
|
||||
洋桥镇
|
||||
叶榭镇
|
||||
一号桥镇
|
||||
盈浦街道
|
||||
永隆镇
|
||||
油桥镇
|
||||
友谊路街道
|
||||
御桥镇
|
||||
裕安镇
|
||||
圆沙镇
|
||||
月浦镇
|
||||
跃进农场
|
||||
张家桥镇
|
||||
张江镇
|
||||
张桥镇
|
||||
张堰镇
|
||||
张泽镇
|
||||
章堰镇
|
||||
朝阳镇
|
||||
召楼镇
|
||||
赵港镇
|
||||
赵行镇
|
||||
赵巷镇
|
||||
赵屯镇
|
||||
柘林镇
|
||||
真如镇
|
||||
真新街道
|
||||
真新新村街道
|
||||
蒸淀镇
|
||||
芷江西路街道
|
||||
中港镇
|
||||
中山北路街道
|
||||
中山街道
|
||||
中兴镇
|
||||
重固镇
|
||||
周家渡
|
||||
周浦区
|
||||
周浦镇
|
||||
朱行镇
|
||||
朱家角镇
|
||||
朱家桥镇
|
||||
朱泾镇
|
||||
诸翟镇
|
||||
竹桥镇
|
||||
祝桥鎮
|
||||
祝桥镇
|
||||
颛桥镇
|
||||
庄行镇
|
3772
ruoyi/src/main/resources/address-dict/road.dict
Normal file
3772
ruoyi/src/main/resources/address-dict/road.dict
Normal file
File diff suppressed because it is too large
Load Diff
@ -2,6 +2,7 @@ package com.ruoyi;
|
||||
|
||||
|
||||
import com.ruoyi.common.utils.DateUtils;
|
||||
import com.ruoyi.common.utils.LoadUtil;
|
||||
import com.ruoyi.project.data.cases.domain.*;
|
||||
import com.ruoyi.project.data.price.domain.ComputeResidenceSaleBasePrice;
|
||||
import com.ruoyi.project.data.price.domain.UltimateOfficeBasePrice;
|
||||
@ -224,9 +225,23 @@ public class GenerateTableTests {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void printUUID() {
|
||||
System.out.println(UUID.randomUUID().toString().replace("-", ""));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void appendDouHao() {
|
||||
List<String> list = LoadUtil.loadList("temp.dict");
|
||||
|
||||
list.forEach(x -> {
|
||||
int index = x.indexOf("大道");
|
||||
if(-1 != index) {
|
||||
System.out.println(x.substring(0,index+2));
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
204
ruoyi/src/test/resources/temp.dict
Normal file
204
ruoyi/src/test/resources/temp.dict
Normal file
@ -0,0 +1,204 @@
|
||||
世博大道1859号
|
||||
世博大道2095号
|
||||
世界大道1710号
|
||||
世纪大道100号
|
||||
世纪大道1065号,世纪大道1701号
|
||||
世纪大道1118号
|
||||
世纪大道1128号
|
||||
世纪大道1168号
|
||||
世纪大道1192号
|
||||
世纪大道1200号
|
||||
世纪大道1217号
|
||||
世纪大道1500号
|
||||
世纪大道1501号
|
||||
世纪大道1568号
|
||||
世纪大道1589号
|
||||
世纪大道1600号
|
||||
世纪大道1700号
|
||||
世纪大道1777号
|
||||
世纪大道199号
|
||||
世纪大道2000号
|
||||
世纪大道201号
|
||||
世纪大道210号
|
||||
世纪大道211号
|
||||
世纪大道800号
|
||||
世纪大道88号
|
||||
世纪大道88号
|
||||
世纪大道8号
|
||||
东方路69号,浦东大道555号
|
||||
东方路与张扬路交叉口,福山路268号,世纪大道1217号,张杨路980号
|
||||
五莲路201弄,莱阳路451弄,利津路158弄,浦东大道2970弄
|
||||
五莲路201弄,莱阳路451弄,利津路158弄,浦东大道2970弄
|
||||
商城路800号,世纪大道1090号
|
||||
大道站路94弄,迎博路94弄(旧)
|
||||
奉浦大道95弄
|
||||
奉浦大道95弄
|
||||
奉浦大道95弄
|
||||
奉浦大道95弄
|
||||
奉浦大道95弄
|
||||
奉浦大道97号,奉浦大道99号,环城东路455弄,环城东路465弄
|
||||
山兰路446-462号,申港大道87号,水芸路445-473号
|
||||
崂山路80弄,浦东大道290弄,浦东大道310号,浦东大道312号
|
||||
崧泽大道6066号
|
||||
崧泽大道9188弄
|
||||
崧泽大道9288弄
|
||||
崧泽大道崧盈路
|
||||
巨野路22号,浦东大道1638号(旧)
|
||||
德平路12弄10号,浦东大道2346号
|
||||
德平路25弄,浦东大道2388弄,龙居路30弄
|
||||
新园路508弄,新园路509弄,崧泽大道9190弄
|
||||
昌邑路588弄,浦东大道580号
|
||||
昌邑路600号,浦东大道599号
|
||||
朱家角镇绿舟路228弄,朱家角镇绿舟路188弄,淀山湖大道3699弄
|
||||
杭州湾大道118弄
|
||||
杭州湾大道1858号
|
||||
杭州湾大道88号
|
||||
林荫大道1888弄,林荫新路255弄
|
||||
梅川路1518号,浦东大道2238号
|
||||
沪太路1717号,浦东大道1476号,浦东大道1482号
|
||||
浦东大道1000弄
|
||||
浦东大道1081-1089号,浦东大道1081号,浦东大道1083号,浦东大道1085号,浦东大道1087号,浦东大道1089号
|
||||
浦东大道1081-1089号,浦东大道1081号,浦东大道1083号,浦东大道1085号,浦东大道1087号,浦东大道1089号
|
||||
浦东大道1081号,浦东大道1085号,浦东大道1089号A座,浦东大道1089号B座
|
||||
浦东大道1093弄
|
||||
浦东大道1093弄
|
||||
浦东大道1093弄5号,浦东大道1093弄6号,浦东大道1093弄11号,浦东大道1093弄12号,浦东大道1093弄15号,浦东大道1093弄16号
|
||||
浦东大道1097弄
|
||||
浦东大道1097弄
|
||||
浦东大道1097弄12-16号
|
||||
浦东大道1139号,浦东大道1139弄
|
||||
浦东大道1139弄
|
||||
浦东大道1200号
|
||||
浦东大道1235号
|
||||
浦东大道136弄
|
||||
浦东大道138号
|
||||
浦东大道140弄
|
||||
浦东大道1460弄
|
||||
浦东大道1464-1470号
|
||||
浦东大道1525号,浦东大道1535号,浦东大道1539号
|
||||
浦东大道1585弄,浦东大道1615弄,浦东大道1591-1617号(单)
|
||||
浦东大道1608号
|
||||
浦东大道1608号
|
||||
浦东大道1623弄
|
||||
浦东大道1695弄16-51号
|
||||
浦东大道1695弄1号
|
||||
浦东大道1700弄
|
||||
浦东大道1700弄,浦东大道1666号
|
||||
浦东大道1819弄
|
||||
浦东大道1851弄
|
||||
浦东大道1868号
|
||||
浦东大道1号
|
||||
浦东大道2000号
|
||||
浦东大道2123号
|
||||
浦东大道2139弄
|
||||
浦东大道2160号,浦东大道2220号
|
||||
浦东大道2164、2188、2212号,浦东大道2160号,浦东大道2164号,浦东大道2188号,浦东大道2212号,浦东大道2220号
|
||||
浦东大道2330号
|
||||
浦东大道2406弄
|
||||
浦东大道2406弄
|
||||
浦东大道2440号
|
||||
浦东大道2511弄
|
||||
浦东大道2511弄
|
||||
浦东大道2515号
|
||||
浦东大道2515号,浦东大道2521号
|
||||
浦东大道2536号
|
||||
浦东大道2554号
|
||||
浦东大道2554弄
|
||||
浦东大道2556号
|
||||
浦东大道2567弄
|
||||
浦东大道2567弄
|
||||
浦东大道2568弄
|
||||
浦东大道2641弄,浦东大道2639弄
|
||||
浦东大道2738号
|
||||
浦东大道2742弄
|
||||
浦东大道2742弄2号,浦东大道2742弄3号
|
||||
浦东大道2762、2776号,浦东大道2762号,浦东大道2776号
|
||||
浦东大道2762、2776号,浦东大道2762号,浦东大道2776号
|
||||
浦东大道2769号,浦东大道2771号,浦东大道2773号
|
||||
浦东大道2778弄
|
||||
浦东大道2789号
|
||||
浦东大道288号
|
||||
浦东大道2926号,浦东大道2930号,五莲路2、4、6、18、20、28号,五莲路22号
|
||||
浦东大道2970弄
|
||||
浦东大道2970弄3号,浦东大道2970弄4号,浦东大道2970弄5号
|
||||
浦东大道3000号
|
||||
浦东大道3036弄
|
||||
浦东大道3040弄
|
||||
浦东大道3076弄,浦东大道3080弄
|
||||
浦东大道3号
|
||||
浦东大道3号,东城路180号
|
||||
浦东大道435号,浦东大道437号,浦东大道437号甲
|
||||
浦东大道501弄
|
||||
浦东大道592号
|
||||
浦东大道599号,昌邑路600号
|
||||
浦东大道604弄
|
||||
浦东大道637号
|
||||
浦东大道637号
|
||||
浦东大道651弄,浦东大道691弄
|
||||
浦东大道666号
|
||||
浦东大道720号
|
||||
浦东大道727弄
|
||||
浦东大道814号
|
||||
浦东大道834弄
|
||||
浦东大道900-988号,浦东大道900号,浦东大道988号
|
||||
浦东大道981号
|
||||
浦东大道988弄
|
||||
海港大道和沪城环路转角内侧
|
||||
海秀路83-139号,金山大道3898弄,卫宏路530号
|
||||
淀山湖大道218号
|
||||
淀山湖大道3600弄,淀山湖大道3800弄
|
||||
淀山湖大道399号
|
||||
淀山湖大道851号
|
||||
滨江大道1380弄,滨江大道1399弄
|
||||
滨江大道1773弄
|
||||
滨江大道1777号
|
||||
滨江大道399弄
|
||||
滨江大道999号、滨江大道993弄
|
||||
物流大道600弄
|
||||
环湖西二路568-624号,龙竹路102-120号,申港大道153-177号,云鹃路473-527号,申港大道588号
|
||||
瑞木路130号,申港大道158号,云娟路628号,云鹃路628_4号
|
||||
申港大道133号
|
||||
申港大道1号,申港大道33号,水芸路418号
|
||||
申港大道200号
|
||||
申港大道88号,水芸路501号,水芸路505号,水芸路523号,水芸路525号,水芸路527号
|
||||
福山路,浦东大道729号
|
||||
福山路268号,世纪大道1217号,张杨路980号
|
||||
莱阳路201弄,莱阳路301弄,浦东大道2920弄,五莲路100弄
|
||||
诸陆西路1088弄,崧泽大道2333弄
|
||||
金山大道2335号
|
||||
金山大道2335弄,卫零路886弄
|
||||
金山大道2335弄,卫零路886弄
|
||||
金山大道2335弄,卫零路886弄
|
||||
金桥路301弄,金桥路351弄,浦东大道2746弄
|
||||
青浦镇淀山湖大道199弄
|
||||
龙东大道1288号
|
||||
龙东大道1号
|
||||
龙东大道1号,龙东大道415弄
|
||||
龙东大道1号,龙东大道415弄
|
||||
龙东大道1号,龙东大道415弄
|
||||
龙东大道1号,龙东大道415弄
|
||||
龙东大道1号,龙东大道415弄
|
||||
龙东大道2001弄
|
||||
龙东大道2001弄
|
||||
龙东大道2001弄
|
||||
龙东大道2211弄
|
||||
龙东大道2211弄
|
||||
龙东大道2211弄
|
||||
龙东大道2255弄
|
||||
龙东大道2255弄
|
||||
龙东大道2255弄
|
||||
龙东大道2255弄
|
||||
龙东大道3000号
|
||||
龙东大道3158弄
|
||||
龙东大道3800弄
|
||||
龙东大道4028弄
|
||||
龙东大道4288弄
|
||||
龙东大道4288弄
|
||||
龙东大道4288弄
|
||||
龙东大道5385号
|
||||
龙东大道5401弄
|
||||
龙东大道5401弄
|
||||
龙东大道666弄,松涛路200弄
|
||||
龙东大道华东路
|
||||
龙腾大道2555-9
|
||||
龙腾大道2815号,龙腾大道2835号,龙腾大道2865号
|
Loading…
x
Reference in New Issue
Block a user