zhanghan 3 månader sedan
förälder
incheckning
0297d92a88

+ 40 - 2
.gitattributes

@@ -1,2 +1,40 @@
-/mvnw text eol=lf
-*.cmd text eol=crlf
+HELP.md
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+target/
+out/
+
+/sky-proxy.iml
+
+src/main/resources/geojson/

BIN
out/artifacts/poiAddr/poiAddr.war


+ 1 - 2
pom.xml

@@ -10,8 +10,7 @@
     </parent>
     <groupId>com.skyversation</groupId>
     <artifactId>poiaddr</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
-    <name>poiaddr</name>
+    <name>poiAddr</name>
     <description>poiaddr</description>
     <packaging>war</packaging>
     <url/>

+ 93 - 56
src/main/java/com/skyversation/poiaddr/addquery/AddressQueryEngine.java

@@ -155,18 +155,26 @@ public class AddressQueryEngine {
      */
     private AddressResult yyszMultiSearch(List<String> addrs, AddressLevel level) {
         try{
-            for (String addr : addrs) {
-                AddressResult.ContentBean contentBean = verificaData(yyszSearchByName(addr), level, addr);
-                if (contentBean != null) {
-                    contentBean.setSearchAddress(addr);
-
-                    List<com.skyversation.poiaddr.bean.AddressResult.ContentBean> contentBeans = new ArrayList<>();
-                    contentBeans.add(contentBean);
-                    AddressResult addressResult = new AddressResult();
-                    addressResult.setData(contentBeans);
-                    addressResult.setCode(AddressResultEnum.YYSZ_SUCCESS);
-                    addressResult.setMessage("成功");
-                    return addressResult;
+
+            if(addrs != null && addrs.size() == 1){
+                AddressResult addressResult = yyszSearchByName(addrs.get(0));
+                addressResult.setCode(AddressResultEnum.YYSZ_SUCCESS);
+                addressResult.setMessage("成功");
+                return addressResult;
+            } else {
+                for (String addr : addrs) {
+                    AddressResult.ContentBean contentBean = verificaData(yyszSearchByName(addr), level, addr);
+                    if (contentBean != null) {
+                        contentBean.setSearchAddress(addr);
+
+                        List<com.skyversation.poiaddr.bean.AddressResult.ContentBean> contentBeans = new ArrayList<>();
+                        contentBeans.add(contentBean);
+                        AddressResult addressResult = new AddressResult();
+                        addressResult.setData(contentBeans);
+                        addressResult.setCode(AddressResultEnum.YYSZ_SUCCESS);
+                        addressResult.setMessage("成功");
+                        return addressResult;
+                    }
                 }
             }
         }catch (Exception e){
@@ -179,17 +187,24 @@ public class AddressQueryEngine {
      */
     private AddressResult wdMultiSearch(List<String> addrs, AddressLevel level) {
         try {
-            for (String addr : addrs) {
-                AddressResult.ContentBean contentBean = verificaData(wdjaSearchByName(addr), level, addr);
-                if (contentBean != null) {
-                    contentBean.setSearchAddress(addr);
-                    List<com.skyversation.poiaddr.bean.AddressResult.ContentBean> contentBeans = new ArrayList<>();
-                    contentBeans.add(contentBean);
-                    AddressResult addressResult = new AddressResult();
-                    addressResult.setData(contentBeans);
-                    addressResult.setCode(AddressResultEnum.WDJA_SUCCESS);
-                    addressResult.setMessage("成功");
-                    return addressResult;
+            if(addrs != null && addrs.size() == 1){
+                AddressResult addressResult = yyszSearchByName(addrs.get(0));
+                addressResult.setCode(AddressResultEnum.WDJA_SUCCESS);
+                addressResult.setMessage("成功");
+                return addressResult;
+            } else {
+                for (String addr : addrs) {
+                    AddressResult.ContentBean contentBean = verificaData(wdjaSearchByName(addr), level, addr);
+                    if (contentBean != null) {
+                        contentBean.setSearchAddress(addr);
+                        List<com.skyversation.poiaddr.bean.AddressResult.ContentBean> contentBeans = new ArrayList<>();
+                        contentBeans.add(contentBean);
+                        AddressResult addressResult = new AddressResult();
+                        addressResult.setData(contentBeans);
+                        addressResult.setCode(AddressResultEnum.WDJA_SUCCESS);
+                        addressResult.setMessage("成功");
+                        return addressResult;
+                    }
                 }
             }
         } catch (Exception e) {
@@ -202,17 +217,24 @@ public class AddressQueryEngine {
      */
     private AddressResult szxMultiSearch(List<String> addrs, AddressLevel level) {
         try {
-            for (String addr : addrs) {
-                AddressResult.ContentBean contentBean = verificaData(szxSearchByName(addr), level, addr);
-                if (contentBean != null) {
-                    contentBean.setSearchAddress(addr);
-                    List<com.skyversation.poiaddr.bean.AddressResult.ContentBean> contentBeans = new ArrayList<>();
-                    contentBeans.add(contentBean);
-                    AddressResult addressResult = new AddressResult();
-                    addressResult.setData(contentBeans);
-                    addressResult.setCode(AddressResultEnum.SZX_SUCCESS);
-                    addressResult.setMessage("成功");
-                    return addressResult;
+            if(addrs != null && addrs.size() == 1){
+                AddressResult addressResult = yyszSearchByName(addrs.get(0));
+                addressResult.setCode(AddressResultEnum.SZX_SUCCESS);
+                addressResult.setMessage("成功");
+                return addressResult;
+            } else {
+                for (String addr : addrs) {
+                    AddressResult.ContentBean contentBean = verificaData(szxSearchByName(addr), level, addr);
+                    if (contentBean != null) {
+                        contentBean.setSearchAddress(addr);
+                        List<com.skyversation.poiaddr.bean.AddressResult.ContentBean> contentBeans = new ArrayList<>();
+                        contentBeans.add(contentBean);
+                        AddressResult addressResult = new AddressResult();
+                        addressResult.setData(contentBeans);
+                        addressResult.setCode(AddressResultEnum.SZX_SUCCESS);
+                        addressResult.setMessage("成功");
+                        return addressResult;
+                    }
                 }
             }
         } catch (Exception e) {
@@ -225,17 +247,24 @@ public class AddressQueryEngine {
      */
     private AddressResult gdMultiSearch(List<String> addrs, AddressLevel level) {
         try {
-            for (String addr : addrs) {
-                AddressResult.ContentBean contentBean = verificaData(gdSearchByName(addr), level, addr);
-                if (contentBean != null) {
-                    contentBean.setSearchAddress(addr);
-                    List<com.skyversation.poiaddr.bean.AddressResult.ContentBean> contentBeans = new ArrayList<>();
-                    contentBeans.add(contentBean);
-                    AddressResult addressResult = new AddressResult();
-                    addressResult.setData(contentBeans);
-                    addressResult.setCode(AddressResultEnum.GD_SUCCESS);
-                    addressResult.setMessage("成功");
-                    return addressResult;
+            if(addrs != null && addrs.size() == 1){
+                AddressResult addressResult = yyszSearchByName(addrs.get(0));
+                addressResult.setCode(AddressResultEnum.GD_SUCCESS);
+                addressResult.setMessage("成功");
+                return addressResult;
+            } else {
+                for (String addr : addrs) {
+                    AddressResult.ContentBean contentBean = verificaData(gdSearchByName(addr), level, addr);
+                    if (contentBean != null) {
+                        contentBean.setSearchAddress(addr);
+                        List<com.skyversation.poiaddr.bean.AddressResult.ContentBean> contentBeans = new ArrayList<>();
+                        contentBeans.add(contentBean);
+                        AddressResult addressResult = new AddressResult();
+                        addressResult.setData(contentBeans);
+                        addressResult.setCode(AddressResultEnum.GD_SUCCESS);
+                        addressResult.setMessage("成功");
+                        return addressResult;
+                    }
                 }
             }
         } catch (Exception e) {
@@ -247,17 +276,24 @@ public class AddressQueryEngine {
      */
     public AddressResult gdV3MultiSearch(List<String> addrs, AddressLevel level) {
         try {
-            for (String addr : addrs) {
-                AddressResult.ContentBean contentBean = verificaData(gdV3SearchByName(addr), level, addr);
-                if (contentBean != null) {
-                    contentBean.setSearchAddress(addr);
-                    List<com.skyversation.poiaddr.bean.AddressResult.ContentBean> contentBeans = new ArrayList<>();
-                    contentBeans.add(contentBean);
-                    AddressResult addressResult = new AddressResult();
-                    addressResult.setData(contentBeans);
-                    addressResult.setCode(AddressResultEnum.GDV3_SUCCESS);
-                    addressResult.setMessage("成功");
-                    return addressResult;
+            if(addrs != null && addrs.size() == 1){
+                AddressResult addressResult = yyszSearchByName(addrs.get(0));
+                addressResult.setCode(AddressResultEnum.GDV3_SUCCESS);
+                addressResult.setMessage("成功");
+                return addressResult;
+            } else {
+                for (String addr : addrs) {
+                    AddressResult.ContentBean contentBean = verificaData(gdV3SearchByName(addr), level, addr);
+                    if (contentBean != null) {
+                        contentBean.setSearchAddress(addr);
+                        List<com.skyversation.poiaddr.bean.AddressResult.ContentBean> contentBeans = new ArrayList<>();
+                        contentBeans.add(contentBean);
+                        AddressResult addressResult = new AddressResult();
+                        addressResult.setData(contentBeans);
+                        addressResult.setCode(AddressResultEnum.GDV3_SUCCESS);
+                        addressResult.setMessage("成功");
+                        return addressResult;
+                    }
                 }
             }
         } catch (Exception e) {
@@ -278,6 +314,7 @@ public class AddressQueryEngine {
                 return AddressTools.getInstance().faildQuery(AddressResultEnum.RESULT_NULL, "搜索无结果");
             try {
                 AddressResult addressResult = yyszResultToResult(JSONObject.parseObject(body));
+                if(addressResult.getCode() == AddressResultEnum.DB_RECOMMEND_SUCCESS) return null;
                 return addressResult;
             } catch (Exception e) {
                 System.err.println(e);

+ 3 - 1
src/main/java/com/skyversation/poiaddr/addquery/TransfromDataTool.java

@@ -169,7 +169,9 @@ public class TransfromDataTool {
         if(json==null){return null;}
         AddressResult result = new AddressResult();
         JSONArray array = json.getJSONObject("content").getJSONArray("data");
-        if (array == null || array.isEmpty()) {
+        if (AddressResultEnum.DB_RECOMMEND_SUCCESS.toString().equals(json.getJSONObject("content").get("code"))
+                || AddressResultEnum.FAILED.toString().equals(json.getJSONObject("content").get("code"))
+                || array == null || array.isEmpty()) {
             result.setCode(AddressResultEnum.RESULT_NULL);
             return result;
         }

+ 12 - 9
src/main/java/com/skyversation/poiaddr/controller/PoiAddressController.java

@@ -4,10 +4,7 @@ import com.skyversation.poiaddr.addquery.AddressQueryEngine;
 import com.skyversation.poiaddr.bean.AddressResult;
 import com.skyversation.poiaddr.entity.FileDataDto;
 import com.skyversation.poiaddr.service.impl.TestDataServiceImpl;
-import com.skyversation.poiaddr.util.ExcelReaderUtils;
-import com.skyversation.poiaddr.util.MessageManage;
-import com.skyversation.poiaddr.util.RequestUtils;
-import com.skyversation.poiaddr.util.SerializationUtils;
+import com.skyversation.poiaddr.util.*;
 import com.skyversation.poiaddr.util.dms.DmsTools;
 import com.skyversation.poiaddr.util.fileTools.ReadFileData;
 import com.skyversation.poiaddr.util.geotools.GeoJsonIntersector;
@@ -17,11 +14,13 @@ import com.skyversation.poiaddr.util.zipunit.DataExportUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.json.simple.JSONObject;
 import org.springframework.http.MediaType;
+import org.springframework.util.StringUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.*;
 import java.util.*;
@@ -49,13 +48,17 @@ public class PoiAddressController {
     }
 
 
-    @RequestMapping("/selectPoi/{address}")
-    public Object selectPoi(@PathVariable("address") String address){
+    @RequestMapping("/selectPoi")
+    public Object selectPoi(HttpServletRequest request){
+        String address = request.getParameter("address");
+        if(!StringUtils.hasText(address)){
+            return MessageManage.getInstance().getResultContent(Constant.PARAM_ERROR, "参数错误", "参数错误");
+        }
         AddressResult addressResult = addressQueryEngine.commonSearchByName(address,AddressLevel.LEVEL_1);
-        if (addressResult.getMessage().equals("失败")){
-            return MessageManage.getInstance().getAddressResultContent(200,addressResult,"未找到");
+        if (addressResult == null || addressResult.getData() == null || addressResult.getData().size() < 1 || addressResult.getMessage().equals("失败")){
+            return MessageManage.getInstance().getResultContent(Constant.NO_DATA,"无数据","未找到");
         }else {
-            return MessageManage.getInstance().getAddressResultContent(200,addressResult,"成功");
+            return MessageManage.getInstance().getAddressResultContent(Constant.SUCCESS,addressResult,"成功");
         }
     }
     //  根据街镇名称和村居名称返回符合条件的geojson集合文件

+ 2 - 1
src/main/java/com/skyversation/poiaddr/service/AreaService.java

@@ -24,6 +24,7 @@ import org.springframework.stereotype.Service;
 import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
 import java.io.*;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -144,7 +145,7 @@ public class AreaService {
                 // 创建 ClassPathResource 对象,指定静态文件的路径
                 ClassPathResource resource = new ClassPathResource(path[j]);
                 // 获取文件的输入流
-                reader = new BufferedReader(new InputStreamReader(resource.getInputStream()));
+                reader = new BufferedReader(new InputStreamReader(resource.getInputStream(), StandardCharsets.UTF_8));
                 String line;
                 StringBuilder sb = new StringBuilder();
                 while ((line = reader.readLine()) != null) {

+ 3 - 1
src/main/java/com/skyversation/poiaddr/util/status/AddressResultEnum.java

@@ -10,6 +10,8 @@ public enum AddressResultEnum {
     SZX_SUCCESS,// 市四中心成功
     GD_SUCCESS,// 高德成功
     GDV3_SUCCESS,// 高德v3成功
-    YYSZ_SUCCESS,//yysz_address成功
+    DB_RECOMMEND_SUCCESS,// 数据库结果推荐
+    FAILED,// 搜索失败,无结果
+    YYSZ_SUCCESS,//yysz_address成功,数据库查询成功
 
 }

+ 2 - 6
src/main/resources/application.properties

@@ -1,5 +1,5 @@
-server.port=8081
-server.servlet.context-path=/poiApi/
+server.port=10015
+server.servlet.context-path=/poiAddr/
 spring.application.name=poiAddr
 spring.servlet.multipart.max-file-size=300MB
 spring.servlet.multipart.max-request-size=300MB
@@ -15,10 +15,6 @@ spring.datasource.password=${DMS_DB_PASSWORD:Yysz@1234}
 
 # \u6570\u636E\u5E93\u914D\u7F6E\uFF08\u672C\u5730\u8C03\u8BD5\u73AF\u5883\uFF09
 
-spring.datasource.url=jdbc:postgresql://${DMS_DB_IP:121.43.55.7}:${DMS_DB_PORT:5433}/${ADDRESS_DB_TABLE_NAME:address}?stringtype=unspecified&u003fuseUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&serverTimezone=PRC&useSSL=false&tinyInt1isBit=false&postgis=true
-spring.datasource.username=${DMS_DB_ACCOUNT:yysz}
-spring.datasource.password=${DMS_DB_PASSWORD:Yysz@1234}
-
 spring.datasource.driver-class-name=org.postgresql.Driver
 # \u6570\u636E\u5E93\u8FDE\u63A5\u4FE1\u606F\uFF08\u5F00\u53D1\u73AF\u5883\uFF09
 #spring.datasource.url=jdbc:transwarp2://172.30.75.126:31768/dws

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
src/main/resources/geojson/qp_cunju.geojson


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
src/main/resources/geojson/sh_all_administrative_division.geojson


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 5 - 0
src/main/resources/geojson/sh_all_towns.geojson


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
src/main/resources/geojson/zerenwangluo.json


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
src/main/resources/geojson/责任网格-wgs84.geojson


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
src/main/resources/geojson/青浦区微网格-wgs84.geojson


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
src/main/resources/geojson/青浦区综合网格.geojson


Vissa filer visades inte eftersom för många filer har ändrats