From 27db250c134c3d11bbf83c36ccccc00fad794a60 Mon Sep 17 00:00:00 2001 From: purple <purple_lihe@16> Date: Tue, 4 Aug 2020 23:55:32 +0800 Subject: [PATCH] =?UTF-8?q?feature=EF=BC=88=E5=9C=B0=E5=9D=80=E6=B8=85?= =?UTF-8?q?=E6=B4=97=EF=BC=89=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project/tool/address/AddressResult.java | 8 ++ .../tool/address/model/AddressType.java | 21 ++++ .../tool/address/model/BuildingAddress.java | 6 +- .../tool/address/model/CleanAddress.java | 28 ----- .../address/model/CleanAddressBuilder.java | 6 +- .../tool/address/model/CommunityAddress.java | 6 +- .../tool/address/model/CondoAddress.java | 24 +++- .../tool/address/model/PartialAddress.java | 34 +++--- .../tool/address/model/SegmentAddress.java | 103 ++++++++++++++++++ .../tool/address/service/AddressBuilder.java | 18 +++ .../tool/address/service/AddressModel.java | 45 ++++++++ .../address/service/BaseAddressBuilder.java | 14 +++ .../tool/address/service/CleanContext.java | 31 ++++++ .../java/com/ruoyi/GenerateTableTests.java | 1 + .../test/java/com/ruoyi/routine/GeoTests.java | 5 - 15 files changed, 294 insertions(+), 56 deletions(-) create mode 100644 ruoyi/src/main/java/com/ruoyi/project/tool/address/AddressResult.java create mode 100644 ruoyi/src/main/java/com/ruoyi/project/tool/address/model/AddressType.java create mode 100644 ruoyi/src/main/java/com/ruoyi/project/tool/address/model/SegmentAddress.java create mode 100644 ruoyi/src/main/java/com/ruoyi/project/tool/address/service/AddressBuilder.java create mode 100644 ruoyi/src/main/java/com/ruoyi/project/tool/address/service/AddressModel.java create mode 100644 ruoyi/src/main/java/com/ruoyi/project/tool/address/service/BaseAddressBuilder.java create mode 100644 ruoyi/src/main/java/com/ruoyi/project/tool/address/service/CleanContext.java diff --git a/ruoyi/src/main/java/com/ruoyi/project/tool/address/AddressResult.java b/ruoyi/src/main/java/com/ruoyi/project/tool/address/AddressResult.java new file mode 100644 index 000000000..5ec23b62c --- /dev/null +++ b/ruoyi/src/main/java/com/ruoyi/project/tool/address/AddressResult.java @@ -0,0 +1,8 @@ +package com.ruoyi.project.tool.address; + +public class AddressResult { + private String district; + private String region; + private Boolean multi; + +} diff --git a/ruoyi/src/main/java/com/ruoyi/project/tool/address/model/AddressType.java b/ruoyi/src/main/java/com/ruoyi/project/tool/address/model/AddressType.java new file mode 100644 index 000000000..2a71e069a --- /dev/null +++ b/ruoyi/src/main/java/com/ruoyi/project/tool/address/model/AddressType.java @@ -0,0 +1,21 @@ +package com.ruoyi.project.tool.address.model; + +public enum AddressType { + CONDO(1, "单套"), BUILDING(2, "楼栋"), COMMUNITY(3, "小区"); + private Integer code; + private String name; + + private AddressType(int code, String name) { + this.code = code; + this.name = name; + } + + public String getName() { + return name; + } + + public Integer getCode() { + return this.code; + } + +} diff --git a/ruoyi/src/main/java/com/ruoyi/project/tool/address/model/BuildingAddress.java b/ruoyi/src/main/java/com/ruoyi/project/tool/address/model/BuildingAddress.java index 56c7eb643..3a92740a5 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/tool/address/model/BuildingAddress.java +++ b/ruoyi/src/main/java/com/ruoyi/project/tool/address/model/BuildingAddress.java @@ -14,8 +14,12 @@ public class BuildingAddress extends PartialAddress { } @Override - public List<PartialAddress> getPartialAddress() { + public AddressType getAddressType() { + return null; + } + @Override + public Boolean multiAddress() { return null; } } diff --git a/ruoyi/src/main/java/com/ruoyi/project/tool/address/model/CleanAddress.java b/ruoyi/src/main/java/com/ruoyi/project/tool/address/model/CleanAddress.java index 2b1ad715c..75c950e04 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/tool/address/model/CleanAddress.java +++ b/ruoyi/src/main/java/com/ruoyi/project/tool/address/model/CleanAddress.java @@ -1,7 +1,5 @@ package com.ruoyi.project.tool.address.model; -import com.ruoyi.project.tool.address.service.impl.SignalAddressHandler; - import java.util.LinkedList; import java.util.List; @@ -44,14 +42,6 @@ public class CleanAddress { * (和地下有关系) */ private String floor; - /** - * 小区地址 - */ - private PartialAddress communityAddress; - /** - * 楼栋地址 - */ - private PartialAddress buildingAddress; /** * 单套地址 */ @@ -154,22 +144,6 @@ public class CleanAddress { 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; } @@ -231,8 +205,6 @@ public class CleanAddress { ", road='" + road + '\'' + ", communityName='" + communityName + '\'' + ", floor=" + floor + - ", communityAddress=" + communityAddress + - ", buildingAddress=" + buildingAddress + ", condoAddress=" + condoAddress + ", propertyType='" + propertyType + '\'' + ", independent=" + independent + diff --git a/ruoyi/src/main/java/com/ruoyi/project/tool/address/model/CleanAddressBuilder.java b/ruoyi/src/main/java/com/ruoyi/project/tool/address/model/CleanAddressBuilder.java index 70fe91752..ac66e00c2 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/tool/address/model/CleanAddressBuilder.java +++ b/ruoyi/src/main/java/com/ruoyi/project/tool/address/model/CleanAddressBuilder.java @@ -206,12 +206,8 @@ public class CleanAddressBuilder { String buildingAddressText = condoAddressText.substring(0, haoIndex + 1); BuildingAddress buildingAddress = new BuildingAddress(buildingAddressText); // 楼栋 - cleanAddress.setBuildingAddress(buildingAddress); + condoAddress.addPartialAddress(buildingAddress); cleanAddress.addAddress(condoAddress); - cleanAddress.addAddress(buildingAddress); - - cleanAddress.addAddress(condoAddress); - cleanAddress.addAddress(buildingAddress); getCommunityAddress(buildingAddressText); } else if (!StringUtils.isEmpty(cleanAddress.getCommunityName())) { diff --git a/ruoyi/src/main/java/com/ruoyi/project/tool/address/model/CommunityAddress.java b/ruoyi/src/main/java/com/ruoyi/project/tool/address/model/CommunityAddress.java index 2632e6fa2..67cad68a8 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/tool/address/model/CommunityAddress.java +++ b/ruoyi/src/main/java/com/ruoyi/project/tool/address/model/CommunityAddress.java @@ -14,8 +14,12 @@ public class CommunityAddress extends PartialAddress { } @Override - public List<PartialAddress> getPartialAddress() { + public AddressType getAddressType() { + return null; + } + @Override + public Boolean multiAddress() { return null; } } diff --git a/ruoyi/src/main/java/com/ruoyi/project/tool/address/model/CondoAddress.java b/ruoyi/src/main/java/com/ruoyi/project/tool/address/model/CondoAddress.java index 586e78c53..b5a62266c 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/tool/address/model/CondoAddress.java +++ b/ruoyi/src/main/java/com/ruoyi/project/tool/address/model/CondoAddress.java @@ -5,7 +5,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; /** - * 室地址 + * 单套地址 * * @author lihe */ @@ -19,7 +19,25 @@ public class CondoAddress extends PartialAddress { } @Override - public List<PartialAddress> getPartialAddress() { - return null; + public AddressType getAddressType() { + return AddressType.CONDO; } + + @Override + public Boolean multiAddress() { + return childrenAddress.size() > 0; + } + + public String getHao() { + return hao; + } + + public String getShi() { + return shi; + } + + public Integer getFloor() { + return floor; + } + } diff --git a/ruoyi/src/main/java/com/ruoyi/project/tool/address/model/PartialAddress.java b/ruoyi/src/main/java/com/ruoyi/project/tool/address/model/PartialAddress.java index 1e498ee7d..5d16641cb 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/tool/address/model/PartialAddress.java +++ b/ruoyi/src/main/java/com/ruoyi/project/tool/address/model/PartialAddress.java @@ -4,6 +4,7 @@ import com.ruoyi.common.exception.CustomException; import com.ruoyi.common.utils.StringUtils; import io.swagger.models.auth.In; +import java.util.LinkedList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -18,34 +19,32 @@ public abstract class PartialAddress { protected String hao; protected String shi; protected Integer floor; + + protected final int HUNDRED = 100; + protected final int TEN_THOUSAND = 10 * 1000; 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; - } + /** + * @return + */ + public abstract AddressType getAddressType(); - public String getShi() { - return shi; - } - - public Integer getFloor() { - return floor; - } /** * 获取地址(单套、楼栋、小区) * * @return */ - public abstract List<PartialAddress> getPartialAddress(); + protected List<PartialAddress> childrenAddress = new LinkedList<>(); + + public abstract Boolean multiAddress(); /** * 室解析 @@ -102,6 +101,15 @@ public abstract class PartialAddress { return null; } + /** + * 增加地址 + * + * @param partialAddress + */ + protected void addPartialAddress(PartialAddress partialAddress) { + this.childrenAddress.add(partialAddress); + } + @Override public String toString() { return "PartialAddress{" + diff --git a/ruoyi/src/main/java/com/ruoyi/project/tool/address/model/SegmentAddress.java b/ruoyi/src/main/java/com/ruoyi/project/tool/address/model/SegmentAddress.java new file mode 100644 index 000000000..dc5d8d788 --- /dev/null +++ b/ruoyi/src/main/java/com/ruoyi/project/tool/address/model/SegmentAddress.java @@ -0,0 +1,103 @@ +package com.ruoyi.project.tool.address.model; + +/** + * 地址分段 + */ +public class SegmentAddress { + /** + * 弄、支弄 + */ + private String nong; + /** + * 号 + */ + private String hao; + /** + * 是否有多个号 + */ + private Boolean multiHao; + /** + * 楼层(包含复式) + */ + private String floor; + /** + * 是否多楼层 + */ + private Boolean multiFloor; + /** + * 栋、幢、座 + */ + private String dong; + /** + * 室号 + */ + private String shi; + /** + * 多个室号 + */ + private Boolean multiShi; + + public String getNong() { + return nong; + } + + public void setNong(String nong) { + this.nong = nong; + } + + public String getHao() { + return hao; + } + + public void setHao(String hao) { + this.hao = hao; + } + + public Boolean getMultiHao() { + return multiHao; + } + + public void setMultiHao(Boolean multiHao) { + this.multiHao = multiHao; + } + + public String getFloor() { + return floor; + } + + public void setFloor(String floor) { + this.floor = floor; + } + + public Boolean getMultiFloor() { + return multiFloor; + } + + public void setMultiFloor(Boolean multiFloor) { + this.multiFloor = multiFloor; + } + + public String getDong() { + return dong; + } + + public void setDong(String dong) { + this.dong = dong; + } + + public String getShi() { + return shi; + } + + public void setShi(String shi) { + this.shi = shi; + } + + public Boolean getMultiShi() { + return multiShi; + } + + public void setMultiShi(Boolean multiShi) { + this.multiShi = multiShi; + } +} diff --git a/ruoyi/src/main/java/com/ruoyi/project/tool/address/service/AddressBuilder.java b/ruoyi/src/main/java/com/ruoyi/project/tool/address/service/AddressBuilder.java new file mode 100644 index 000000000..132084945 --- /dev/null +++ b/ruoyi/src/main/java/com/ruoyi/project/tool/address/service/AddressBuilder.java @@ -0,0 +1,18 @@ +package com.ruoyi.project.tool.address.service; + +/** + * 地址构建者模式 + */ +public interface AddressBuilder { + + String parseDistrict(); + String parseRegion(); + String parseBlock(); + String parseRoad(); + String parseCommunityName(); + String parseNONG(); + String parseHao(); + String parseShi(); + String parseFloor(); + +} diff --git a/ruoyi/src/main/java/com/ruoyi/project/tool/address/service/AddressModel.java b/ruoyi/src/main/java/com/ruoyi/project/tool/address/service/AddressModel.java new file mode 100644 index 000000000..f7b20e957 --- /dev/null +++ b/ruoyi/src/main/java/com/ruoyi/project/tool/address/service/AddressModel.java @@ -0,0 +1,45 @@ +package com.ruoyi.project.tool.address.service; + +import java.util.LinkedList; +import java.util.List; + +public abstract class AddressModel { + private String district; + private String region; + private String block; + private String road; + private String communityName; + private String nong; + private String complexHao; + /** + * 泛化的号(号、幢、座、连号) + */ + private String hao; + /** + * 是否有多个号 + * x号y号=x弄y号 + * x号y幢=x号 + * x幢y号=y号 + * x幢y号=x幢 + */ + private Boolean multiHao; + /** + * 是否包含楼层 + * 复式、多层 + */ + private String floor; + private String shi; + /** + * 是否独栋 + */ + private Boolean dependency; + /** + * 层级(每个层级只有一个,一对一) + */ + private AddressModel hierarchy; +// /** +// * 兄弟节点 +// */ +// private List<AddressModel> sibling = new LinkedList<>(); + +} diff --git a/ruoyi/src/main/java/com/ruoyi/project/tool/address/service/BaseAddressBuilder.java b/ruoyi/src/main/java/com/ruoyi/project/tool/address/service/BaseAddressBuilder.java new file mode 100644 index 000000000..bb61d4342 --- /dev/null +++ b/ruoyi/src/main/java/com/ruoyi/project/tool/address/service/BaseAddressBuilder.java @@ -0,0 +1,14 @@ +package com.ruoyi.project.tool.address.service; + +import com.ruoyi.project.tool.address.model.AddressType; + +public abstract class BaseAddressBuilder implements AddressBuilder { + + protected StringBuilder stringBuilder; + + public BaseAddressBuilder(String text) { + this.stringBuilder = new StringBuilder(text); + } + + public abstract AddressType getAddressType(); +} diff --git a/ruoyi/src/main/java/com/ruoyi/project/tool/address/service/CleanContext.java b/ruoyi/src/main/java/com/ruoyi/project/tool/address/service/CleanContext.java new file mode 100644 index 000000000..c503c2f30 --- /dev/null +++ b/ruoyi/src/main/java/com/ruoyi/project/tool/address/service/CleanContext.java @@ -0,0 +1,31 @@ +package com.ruoyi.project.tool.address.service; + +public class CleanContext { + private StringBuilder sb; + private Boolean multiHao; + private String address; + + public StringBuilder getSb() { + return sb; + } + + public void setSb(StringBuilder sb) { + this.sb = sb; + } + + public Boolean getMultiHao() { + return multiHao; + } + + public void setMultiHao(Boolean multiHao) { + this.multiHao = multiHao; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } +} diff --git a/ruoyi/src/test/java/com/ruoyi/GenerateTableTests.java b/ruoyi/src/test/java/com/ruoyi/GenerateTableTests.java index 5488ce3c8..33c4a5ebf 100644 --- a/ruoyi/src/test/java/com/ruoyi/GenerateTableTests.java +++ b/ruoyi/src/test/java/com/ruoyi/GenerateTableTests.java @@ -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; diff --git a/ruoyi/src/test/java/com/ruoyi/routine/GeoTests.java b/ruoyi/src/test/java/com/ruoyi/routine/GeoTests.java index 2bbc93f12..cd434bf3e 100644 --- a/ruoyi/src/test/java/com/ruoyi/routine/GeoTests.java +++ b/ruoyi/src/test/java/com/ruoyi/routine/GeoTests.java @@ -9,8 +9,6 @@ import com.microsoft.sqlserver.jdbc.spatialdatatypes.Point; import com.ruoyi.RuoYiApplication; import com.ruoyi.project.data.basis.domain.*; import com.ruoyi.project.data.basis.mapper.UvCommunityGeoMapper; -import com.sun.org.apache.regexp.internal.RE; -import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; @@ -18,9 +16,6 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.jdbc.core.RowMapper; -import org.springframework.security.web.PortResolverImpl; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringRunner;