4 Commits b8ac4da3b3 ... 0297d92a88

Author SHA1 Message Date
  zhanghan 0297d92a88 优化逻辑 2 weeks ago
  zhanghan e7367b695e merge 2 weeks ago
  zhanghan bbfb260163 merge 2 weeks ago
  zhanghan a0ff8e4ede merge 4 months ago

+ 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/>

+ 94 - 57
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) {
@@ -271,13 +307,14 @@ public class AddressQueryEngine {
      * yysz_address地名搜索
      */
     public AddressResult yyszSearchByName(String address){
-        ResponseEntity response = AddressNetTools.getInstance().requestGet(yyszAddressService+"/search/searchByName?address="+address, null, null, 10);
+        ResponseEntity response = AddressNetTools.getInstance().requestGet(yyszAddressService+"/search/searchByNameV3?address="+address, null, null, 10);
         if (response != null) {
             String body = response.getBody() + "";
             if (!StringUtils.hasText(body))
                 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) {

+ 13 - 0
src/main/java/com/skyversation/poiaddr/test/Test1.java

@@ -0,0 +1,13 @@
+package com.skyversation.poiaddr.test;
+
+import com.skyversation.poiaddr.bean.GeoJsonBean;
+import com.skyversation.poiaddr.service.AreaService;
+
+public class Test1 {
+
+    public static void main(String[] args) {
+        GeoJsonBean cjBean = AreaService.getInstance().isInCJPolygon(121.19152338468379, 31.151264000353283);
+        cjBean.toString();
+    }
+
+}

+ 0 - 23
src/main/java/com/skyversation/poiaddr/util/ExcelReaderUtils.java

@@ -1,7 +1,6 @@
 package com.skyversation.poiaddr.util;
 
 import com.skyversation.poiaddr.addquery.Constant;
-import com.skyversation.poiaddr.ignore.YyszAddressV3;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.apache.poi.ss.usermodel.*;
 
@@ -63,28 +62,6 @@ public class ExcelReaderUtils {
         }
     }
 
-    public static void writeYToExcel(List<YyszAddressV3> target,String filePath) throws IOException {
-
-        List<Map<String, Object>> excel = new ArrayList<>();
-        for (YyszAddressV3 address : target) {
-            Map<String, Object> row = new HashMap<>();
-            row.put("oid", address.getId() == null ? "" : address.getId().toString());
-            row.put("sourceaddress", address.getSourceaddress() == null ? "" : address.getSourceaddress());
-            row.put("city", address.getCity() == null ? "" : address.getCity());
-            row.put("county", address.getCounty() == null ? "" : address.getCounty());
-            row.put("Createtime", address.getCreatetime() == null ? "" : address.getCreatetime().toString());
-            row.put("no1", address.getNo1() == null ? "" : address.getNo1());
-            row.put("lon", address.getLon() == null ? "" : address.getLon().toString());
-            row.put("lat", address.getLat() == null ? "" : address.getLat().toString());
-            row.put("x", address.getX() == null ? "" : address.getX());
-            row.put("y", address.getY() == null ? "" : address.getY());
-            row.put("town", address.getTown() == null ? "" : address.getTown());
-            row.put("community", address.getCommunity() == null ? "" : address.getCommunity());
-            excel.add(row);
-        }
-        writeToExcel(excel,filePath);
-    }
-
     public static List<Map<String, Object>> readExcel(String filePath) throws IOException {
         List<Map<String, Object>> resultList = new ArrayList<>();
         FileInputStream fis = new FileInputStream(filePath);

+ 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成功,数据库查询成功
 
 }

+ 3 - 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
@@ -14,11 +14,8 @@ spring.datasource.password=${DMS_DB_PASSWORD:Yysz@1234}
 #spring.datasource.driver-class-name=org.postgresql.Driver
 
 # \u6570\u636E\u5E93\u914D\u7F6E\uFF08\u672C\u5730\u8C03\u8BD5\u73AF\u5883\uFF09
-#spring.datasource.url=jdbc:postgresql://192.168.2.22:5432/postgres?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
-#spring.datasource.username=postgres
-#spring.datasource.password=SKYversation0816
-#spring.datasource.driver-class-name=org.postgresql.Driver
 
+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
 #spring.datasource.username=dev_sjbdc_kjyy

File diff suppressed because it is too large
+ 0 - 0
src/main/resources/geojson/qp_cunju.geojson


File diff suppressed because it is too large
+ 0 - 0
src/main/resources/geojson/sh_all_administrative_division.geojson


File diff suppressed because it is too large
+ 5 - 0
src/main/resources/geojson/sh_all_towns.geojson


File diff suppressed because it is too large
+ 0 - 0
src/main/resources/geojson/zerenwangluo.json


File diff suppressed because it is too large
+ 0 - 0
src/main/resources/geojson/责任网格-wgs84.geojson


File diff suppressed because it is too large
+ 0 - 0
src/main/resources/geojson/青浦区微网格-wgs84.geojson


File diff suppressed because it is too large
+ 0 - 0
src/main/resources/geojson/青浦区综合网格.geojson


Some files were not shown because too many files changed in this diff