Browse Source

zhh_merge

zhanghan 1 week ago
parent
commit
f9016edc5d

+ 16 - 0
pom.xml

@@ -30,6 +30,8 @@
     <properties>
         <geotools.version>25.2</geotools.version>
         <java.version>8</java.version>
+        <maven.compiler.source>11</maven.compiler.source>
+        <maven.compiler.target>11</maven.compiler.target>
     </properties>
     <dependencies>
         <dependency>
@@ -87,6 +89,16 @@
             <artifactId>commons-lang3</artifactId>
             <version>3.13.0</version>
         </dependency>
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-core</artifactId>
+            <version>5.6.15.Final</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.persistence</groupId>
+            <artifactId>javax.persistence-api</artifactId>
+            <version>2.2</version>
+        </dependency>
         <dependency>
             <groupId>com.googlecode.json-simple</groupId>
             <artifactId>json-simple</artifactId>
@@ -183,6 +195,10 @@
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+        </dependency>
     </dependencies>
     <repositories>
         <repository>

+ 58 - 41
src/main/java/com/skyversation/poiaddr/addquery/AddressQueryEngine.java

@@ -1,10 +1,12 @@
 package com.skyversation.poiaddr.addquery;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.skyversation.poiaddr.bean.AddressResult;
 import com.skyversation.poiaddr.bean.GeoJsonBean;
 import com.skyversation.poiaddr.bean.WDToken;
+import com.skyversation.poiaddr.entity.AmapAddressV3;
 import com.skyversation.poiaddr.service.AreaService;
 import com.skyversation.poiaddr.util.net.AddressNetTools;
 import com.skyversation.poiaddr.util.status.AddressLevel;
@@ -293,49 +295,64 @@ public class AddressQueryEngine {
         if (address.startsWith("中山") && !address.startsWith("中山街道")) {
             address = address.replace("中山", "中山街道");
         }
-        String geoUrl =
-                Constant.AMAP_SEARCH_NAME_V3 + "?key=" + Constant.AMAP_KEY + "&types=" + Constant.AMAP_SEARCH_TYPES +
-                        "&keywords=" + address + "&city=" + Constant.getAMAP_CITY_CODE() + "&offset=20";
-        ResponseEntity responseEntity = AddressNetTools.getInstance().requestGetOrPost(HttpMethod.GET, geoUrl, null, null, 0);
-        if (responseEntity.hasBody()) {
-            String body = responseEntity.getBody() + "";
-            if (!StringUtils.hasText(body)) {
-                return AddressTools.getInstance().faildQuery(AddressResultEnum.RESULT_NULL, "搜索无结果");
-            }
-            JSONArray pois = new JSONArray();
-            JSONObject json = JSONObject.parseObject(body);
-            if (json.containsKey("pois")) {
-                pois.addAll(json.getJSONArray("pois"));
-            }
-            if (json.containsKey("count")) {
-                int count = Integer.parseInt(json.get("count") + "");
-                if (count > 20) {
-                    for (int i = 2; i < (count % 20 + 1); i++) {
-                        geoUrl =
-                                Constant.AMAP_SEARCH_NAME_V3 + "?key=" + Constant.AMAP_KEY + "&types=" + Constant.AMAP_SEARCH_TYPES +
-                                        "&keywords=" + address + "&city=" + Constant.getAMAP_CITY_CODE() + "&offset=20&page=" + i;
-                        ResponseEntity responseEntity2 = AddressNetTools.getInstance().requestGetOrPost(HttpMethod.GET, geoUrl, null, null, 0);
-                        if (responseEntity2.hasBody()) {
-                            body = responseEntity2.getBody() + "";
-                        }
-                        if (!StringUtils.hasText(body)) {
-                            return AddressTools.getInstance().faildQuery(AddressResultEnum.RESULT_AGAIN_NULL, "多次搜索无结果");
-                        }
-                        JSONObject json2 = JSONObject.parseObject(body);
-                        if (json2.containsKey(pois)) {
-                            pois.addAll(JSONObject.parseObject(body).getJSONArray("pois"));
-                        }
-                    }
+
+
+
+        // 优先进行数据库查询
+        List<AmapAddressV3> dbPois = AreaService.getInstance().getAddressPoisByAddr(address);
+
+        JSONArray pois = new JSONArray();
+        if(dbPois != null && dbPois.size() > 0){
+            System.out.println("数据库查询有结果!!!!");
+            pois.addAll(dbPois);
+            return new TransfromDataTool().gdV3ResultToResult(address, pois, false);
+        } else {// 数据查询无结果,使用高德
+            System.out.println("!!!!!数据库查询无结果!!!!-----!!!开始进行高德查询-----!!!!!");
+            String geoUrl =
+                    Constant.AMAP_SEARCH_NAME_V3 + "?key=" + Constant.AMAP_KEY + "&types=" + Constant.AMAP_SEARCH_TYPES +
+                            "&keywords=" + address + "&city=" + Constant.getAMAP_CITY_CODE() + "&offset=20";
+            ResponseEntity responseEntity = AddressNetTools.getInstance().requestGetOrPost(HttpMethod.GET, geoUrl, null, null, 0);
+            if (responseEntity.hasBody()) {
+                String body = responseEntity.getBody() + "";
+                if (!StringUtils.hasText(body)) {
+                    return AddressTools.getInstance().faildQuery(AddressResultEnum.RESULT_NULL, "搜索无结果");
                 }
+
+                JSONObject json = JSONObject.parseObject(body);
+                if (json.containsKey("pois")) {
+                    pois.addAll(json.getJSONArray("pois"));
+                }
+//            if (json.containsKey("count")) {
+//                int count = Integer.parseInt(json.get("count") + "");
+//                if (count > 20) {
+//                    for (int i = 2; i < (count % 20 + 1); i++) {
+//                        geoUrl =
+//                                Constant.AMAP_SEARCH_NAME_V3 + "?key=" + Constant.AMAP_KEY + "&types=" + Constant.AMAP_SEARCH_TYPES +
+//                                        "&keywords=" + address + "&city=" + Constant.getAMAP_CITY_CODE() + "&offset=20&page=" + i;
+//                        ResponseEntity responseEntity2 = AddressNetTools.getInstance().requestGetOrPost(HttpMethod.GET, geoUrl, null, null, 0);
+//                        if (responseEntity2.hasBody()) {
+//                            body = responseEntity2.getBody() + "";
+//                        }
+//                        if (!StringUtils.hasText(body)) {
+//                            return AddressTools.getInstance().faildQuery(AddressResultEnum.RESULT_AGAIN_NULL, "多次搜索无结果");
+//                        }
+//                        JSONObject json2 = JSONObject.parseObject(body);
+//                        if (json2.containsKey(pois)) {
+//                            pois.addAll(JSONObject.parseObject(body).getJSONArray("pois"));
+//                        }
+//                    }
+//                }
+//            }
+                try {
+                    return new TransfromDataTool().gdV3ResultToResult(address, pois, true);
+                } catch (Exception e) {
+                    System.err.println(e);
+                    e.printStackTrace();
+                    return AddressTools.getInstance().faildQuery(AddressResultEnum.DATA_FROMAT_FAILD, "格式化失败");
+                }
+            } else {
+                return AddressTools.getInstance().faildQuery(AddressResultEnum.RESULT_AGAIN_NULL, "高德V3分页查询无结果");
             }
-            try {
-                return new TransfromDataTool().gdV3ResultToResult(address, pois);
-            } catch (Exception e) {
-                System.err.println(e);
-                return AddressTools.getInstance().faildQuery(AddressResultEnum.DATA_FROMAT_FAILD, "格式化失败");
-            }
-        } else {
-            return AddressTools.getInstance().faildQuery(AddressResultEnum.RESULT_AGAIN_NULL, "高德V3分页查询无结果");
         }
     }
 

+ 1 - 0
src/main/java/com/skyversation/poiaddr/addquery/Constant.java

@@ -79,6 +79,7 @@ public class Constant {
             "|100000|110000|120000|130000|140000|150000|160000|170000|180000|190000|200000|220000|970000|980000|990000";
 
     public static String AMAP_KEY = "38511ab3763ab97a10bd68ad8210933d";
+//    public static String AMAP_KEY = "161e0c673807a9586ba5a115da2a0112";
 
     //    oauth和dms搭建服务器地址
     public static String ServerBaseUrl = "http://121.43.55.7:";

+ 39 - 31
src/main/java/com/skyversation/poiaddr/addquery/TransfromDataTool.java

@@ -191,7 +191,7 @@ public class TransfromDataTool {
         return result;
     }
 
-    public AddressResult gdV3ResultToResult(String searchAddress, JSONArray array) {
+    public AddressResult gdV3ResultToResult(String searchAddress, JSONArray array, boolean isInserted ) {
         AddressResult result = new AddressResult();
         if (array == null || array.size() < 1) {
             result.setCode(AddressResultEnum.RESULT_NULL);
@@ -207,7 +207,7 @@ public class TransfromDataTool {
                 content.setCityname(jsonObject.getString("cityname"));
                 content.setAdname(jsonObject.getString("adname"));
                 content.setType(jsonObject.getString("type"));
-                content.setAddress(content.getCityname() + content.getAdname() + jsonObject.getString("address"));
+                content.setAddress(content.getPname() + content.getAdname() + jsonObject.getString("address"));
                 content.setName(jsonObject.getString("name"));
                 String[] loc = jsonObject.getString("location").split(",");
                 double[] points = CoordTransform2.getInstance().gcj02_to_wgs84(
@@ -220,41 +220,49 @@ public class TransfromDataTool {
                 }
                 result.getData().add(content);
             }
-//          TODO 将请求返回的高德结果入库到pgsql中
-            List<AmapAddressV3> amapAddressV3List = new ArrayList<>();
-            for (int i = 0; i < array.size(); i++) {
-                JSONObject item = array.getJSONObject(i);
-                AmapAddressV3 amapAddressV3 = new AmapAddressV3();
-                amapAddressV3.setId(UUID.randomUUID().toString());
-                amapAddressV3.setParent(item.get("parent").toString());
-                amapAddressV3.setChildtype(item.get("childtype").toString());
-                amapAddressV3.setName(item.get("name").toString());
-                amapAddressV3.setType(item.get("type").toString());
-                amapAddressV3.setTypecode(item.get("typecode").toString());
-                amapAddressV3.setBizType(item.get("biz_type").toString());
-                amapAddressV3.setAddress(item.get("address").toString());
-                amapAddressV3.setLocation(item.get("location").toString());
-                amapAddressV3.setTel(item.get("tel").toString());
-                amapAddressV3.setPname(item.get("pname").toString());
-                amapAddressV3.setAdname(item.get("adname").toString());
-                amapAddressV3.setImportance(item.get("importance").toString());
-                amapAddressV3.setShopid(item.get("shopid").toString());
-                amapAddressV3.setShopinfo(item.get("shopinfo").toString());
-                amapAddressV3.setPoiweight(item.get("poiweight").toString());
-                amapAddressV3.setDistance(item.get("distance").toString());
-                amapAddressV3.setBizExt(item.get("biz_ext").toString());
-                amapAddressV3.setPhotos(item.get("photos").toString());
-                amapAddressV3.setCreateTime(new Date());
-                amapAddressV3List.add(amapAddressV3);
-            }
-            if (amapAddressV3List.size() > 0) {
-                AreaService.getInstance().saveAmapAddressV3(amapAddressV3List);
+            if(isInserted){
+                //          TODO 将请求返回的高德结果入库到pgsql中
+                List<AmapAddressV3> amapAddressV3List = new ArrayList<>();
+                for (int i = 0; i < array.size(); i++) {
+                    JSONObject item = array.getJSONObject(i);
+                    AmapAddressV3 amapAddressV3 = new AmapAddressV3();
+                    amapAddressV3.setId(UUID.randomUUID().toString());
+                    amapAddressV3.setParent(item.get("parent").toString());
+                    amapAddressV3.setChildtype(item.get("childtype").toString());
+                    amapAddressV3.setName(item.get("name").toString());
+                    amapAddressV3.setType(item.get("type").toString());
+                    amapAddressV3.setTypecode(item.get("typecode").toString());
+                    amapAddressV3.setBizType(item.get("biz_type").toString());
+                    amapAddressV3.setAddress(item.get("address").toString());
+                    amapAddressV3.setLocation(item.get("location").toString());
+                    amapAddressV3.setTel(item.get("tel").toString());
+                    amapAddressV3.setPname(item.get("pname").toString());
+                    amapAddressV3.setAdname(item.get("adname").toString());
+                    amapAddressV3.setImportance(item.get("importance").toString());
+                    amapAddressV3.setShopid(item.get("shopid").toString());
+                    amapAddressV3.setShopinfo(item.get("shopinfo").toString());
+                    amapAddressV3.setPoiweight(item.get("poiweight").toString());
+                    amapAddressV3.setDistance(item.get("distance").toString());
+                    amapAddressV3.setBizExt(item.get("biz_ext").toString());
+                    amapAddressV3.setPhotos(item.get("photos").toString());
+                    amapAddressV3.setCreateTime(new Date());
+                    amapAddressV3List.add(amapAddressV3);
+                }
+                if (amapAddressV3List.size() > 0) {
+                    AreaService.getInstance().saveAmapAddressV3(amapAddressV3List);
+                }
             }
         } catch (Exception e) {
             e.printStackTrace();
             System.err.println("gdV3ResultToResult err:" + e);
         }
         result.setCode(AddressResultEnum.GDV3_SUCCESS);
+        if(isInserted){
+            System.out.println("*******高德查询结果返回,查询地址是:" + searchAddress);
+        } else {
+            System.out.println("&&&&&&&数据库查询结果返回,查询地址是:" + searchAddress);
+        }
+
         return result;
     }
 

+ 8 - 0
src/main/java/com/skyversation/poiaddr/controller/CorporateLibraryController.java

@@ -1,5 +1,7 @@
 package com.skyversation.poiaddr.controller;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.skyversation.poiaddr.addquery.AddressQueryEngine;
 import com.skyversation.poiaddr.entity.YyskAddressStandardization;
 import com.skyversation.poiaddr.service.impl.YyskAddressStandardizationServiceImpl;
@@ -84,6 +86,12 @@ public class CorporateLibraryController {
         }
     }
 
+    @PostMapping(value = "/testDBGetAddr", produces = MediaType.APPLICATION_JSON_VALUE)
+    public Object testDBGetAddr(@RequestParam(name = "address") String address) {
+        return JSON.toJSONString(AddressQueryEngine.getInstance().gdV3SearchByName(address));
+
+    }
+
 
     /**
      * 1、解析xlsx得到所有数据

+ 8 - 0
src/main/java/com/skyversation/poiaddr/service/AmapAddressV3Repository.java

@@ -2,9 +2,17 @@ package com.skyversation.poiaddr.service;
 
 import com.skyversation.poiaddr.entity.AmapAddressV3;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
 
 import javax.annotation.Resource;
+import java.util.List;
 
 @Resource
 public interface AmapAddressV3Repository extends JpaRepository<AmapAddressV3, String> {
+
+    // 执行自定义的SQL查询
+    @Query(value = "SELECT * FROM amap_address_v3 WHERE name ILIKE %:addr% OR address ILIKE %:addr% LIMIT 20", nativeQuery = true)
+    List<AmapAddressV3> getAddressPoisByAddr(@Param("addr") String addr);
+
 }

+ 28 - 0
src/main/java/com/skyversation/poiaddr/service/AreaService.java

@@ -8,6 +8,8 @@ import com.skyversation.poiaddr.bean.AddressResult;
 import com.skyversation.poiaddr.bean.GeoJsonBean;
 import com.skyversation.poiaddr.entity.AmapAddressV3;
 import com.skyversation.poiaddr.service.impl.AmapAddressV3Service;
+import com.skyversation.poiaddr.service.impl.YyskAddressStandardizationServiceImpl;
+import com.skyversation.poiaddr.util.AddressMatcher;
 import org.geotools.geojson.geom.GeometryJSON;
 import org.geotools.geometry.jts.JTSFactoryFinder;
 import org.locationtech.jts.geom.Geometry;
@@ -18,8 +20,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.core.io.ClassPathResource;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
 import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
 import java.io.*;
 import java.util.ArrayList;
 import java.util.List;
@@ -27,6 +31,9 @@ import java.util.List;
 @Service
 public class AreaService {
 
+    @Resource
+    private YyskAddressStandardizationServiceImpl yyskAddressStandardizationService;
+
     @Autowired
     private AmapAddressV3Service amapAddressV3Service;
 
@@ -87,6 +94,9 @@ public class AreaService {
             List<AmapAddressV3> amapAddressV3List = amapAddressV3Service.getAllData();
             long endTime = System.currentTimeMillis();
             System.out.println(">>>>>>>>------数据库连通性测试完成!用时" + (endTime - startTime) / 1000 + "秒!结果:" + amapAddressV3List.size());
+            System.out.println("<<<<<<<<------开始执行任务!!!");
+            yyskAddressStandardizationService.searchLoadFileData("D:\\1.项目\\5. 松江项目\\4. 地名地址\\地名地址库治理数据\\原始数据\\",
+                    0, 10000, 1);
         } catch (Exception e) {
             System.err.println(">>>>>>>>------数据库连通性测试结果:" + e);
         }
@@ -142,6 +152,24 @@ public class AreaService {
         amapAddressV3Service.saveAmapAddressV3(amapAddressV3List);
     }
 
+    public List<AmapAddressV3> getAddressPoisByAddr(String addr){
+        String[] strs = AddressMatcher.matchProvinceAndCity(addr);
+
+        for(String str : strs){
+            if(StringUtils.hasText(str)){
+                addr = addr.replace(str, "");
+            }
+        }
+
+        if(addr.contains("号")){
+            addr = addr.substring(0, addr.indexOf("号") + 1);
+        } else if(addr.contains("弄")){
+            addr = addr.substring(0, addr.indexOf("弄") + 1);
+        }
+        System.out.println("<<<<<<<----- 开始数据库查询,数据查询地址为:" + addr);
+        return amapAddressV3Service.getAddressPoisByAddr(addr);
+    }
+
     public GeoJsonBean isInadPolygon(double lon, double lat) {
         try {
             Geometry point = reader.read("POINT (" + lat + " " + lon + ")");

+ 5 - 0
src/main/java/com/skyversation/poiaddr/service/impl/AmapAddressV3Service.java

@@ -20,4 +20,9 @@ public class AmapAddressV3Service {
     public List<AmapAddressV3> getAllData() {
         return amapAddressV3Repository.findAll();
     }
+
+    public List<AmapAddressV3> getAddressPoisByAddr(String addr){
+        return amapAddressV3Repository.getAddressPoisByAddr(addr);
+    }
+
 }

+ 67 - 23
src/main/java/com/skyversation/poiaddr/service/impl/YyskAddressStandardizationServiceImpl.java

@@ -229,11 +229,40 @@ public class YyskAddressStandardizationServiceImpl {
 
 
     public void searchLoadFileData(String fileRootPath, Integer startFileIndex, Integer endFileIndex, Integer sort) {
+
+
+        // 任务总数
+        int totalTasks = 412;
+        // 最大线程数
+        int maxThreads = 20;
+
+        // 创建一个固定大小的线程池
+        ExecutorService executorService = Executors.newFixedThreadPool(maxThreads);
+
+        // 提交任务到线程池
+        for (int i = 22; i < totalTasks; i++) {
+            final int taskId = i;
+            executorService.submit(() -> {
+                // 任务执行
+                System.out.println("<<<<<<------Executing task: " + taskId + " on thread: " + Thread.currentThread().getName() + "------>>>>>>>>");
+                startMutilExecutor(taskId, fileRootPath + "datas\\yysk_dmdz_address_standardization_200000_" + taskId + ".xlsx",
+                        fileRootPath + "output\\yysk_dmdz_address_standardization_200000_result_" + taskId + ".xlsx");
+            });
+        }
+
+        // 关闭线程池
+        executorService.shutdown();
+
+        System.out.println("<<<<<--- 任务完成!!!----->>>>>>>");
+
+    }
+
+    public void startMutilExecutor(int startFileIndex, String filePath, String outPath){
         System.out.println("<<<<<<<<------searchLoadFileData{fileIndex:" + startFileIndex + "}");
         long startTime = System.currentTimeMillis();
         List<YyskAddressStandardization> listData = new ArrayList<>();
         try {
-            List<Map<String, Object>> fileData = ExcelReaderUtils.readExcel(fileRootPath + "datas\\yysk_dmdz_address_standardization_200000_" + startFileIndex + ".xlsx");
+            List<Map<String, Object>> fileData = ExcelReaderUtils.readExcel(filePath);
             for (Map<String, Object> item : fileData) {
                 YyskAddressStandardization yyskAddressStandardization = new YyskAddressStandardization();
                 yyskAddressStandardization.setAddress(item.get("address").toString());
@@ -247,27 +276,31 @@ public class YyskAddressStandardizationServiceImpl {
 //              批量更新处理后的数据
             List<YyskAddressStandardization> resultDataList = runExecutorService(listData);
             if (resultDataList.size() > 0) {
-                ExcelReaderUtils.convertYYListToMapList(resultDataList, fileRootPath + "output\\yysk_dmdz_address_standardization_200000_result_" + startFileIndex + ".xlsx");
+                ExcelReaderUtils.convertYYListToMapList(resultDataList, outPath);
             }
             long endTime = System.currentTimeMillis();
             System.out.println("处理单批次用时" + (endTime - startTime) / 1000 + "秒!");
-            if (startFileIndex + sort != endFileIndex) {
-                startFileIndex += sort;
-                searchLoadFileData(fileRootPath, startFileIndex, endFileIndex, sort);
-            } else {
-                System.out.println("<<<<<<<<------任务处理完成!");
-            }
+//            if (startFileIndex + sort != endFileIndex) {
+//                startFileIndex += sort;
+//                searchLoadFileData(fileRootPath, startFileIndex, endFileIndex, sort);
+//            } else {
+//                System.out.println("<<<<<<<<------任务处理完成!");
+//            }
         } else {
-            System.out.println("<<<<<<<<------任务处理完成!");
+            System.out.println("<<<<<<<<------ 第" + startFileIndex + "个文件 -----任务处理完成!结果为空。。。--->>>>" + outPath);
         }
     }
 
     public List<YyskAddressStandardization> runExecutorService(List<YyskAddressStandardization> listData) {
         // 创建线程池
-        ExecutorService executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
-        List<Future<?>> futures = new ArrayList<>();
+//        ExecutorService executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
+//        List<Future<?>> futures = new ArrayList<>();
+        int index = 1;
+        int total = listData.size();
         for (YyskAddressStandardization item : listData) {
-            futures.add(executorService.submit(() -> {
+            System.out.println("<<<---- 开始查询第: " + index + " 条数据。。。共:" + total + "条数据--->>>>>>>");
+            index ++;
+//            futures.add(executorService.submit(() -> {
                 List<String> addrList = new ArrayList<>();
                 String[] addr = AddressMatcher.matchProvinceAndCity(item.getAddress());
                 if (addr != null && !addr[0].contains("上海")) {
@@ -289,6 +322,7 @@ public class YyskAddressStandardizationServiceImpl {
                 if (addrList.size() > 0) {
                     //  TODO 开始查询
                     AddressResult addressResult = AddressQueryEngine.getInstance().commonSearchByName(addrList);
+                    System.out.println("<<<---- 第: " + index + " 条数据返回数据,数据为:!!!" + addressResult.getMessage() + "   ----->>>>>");
                     if (addressResult == null || addressResult.getData() == null || addressResult.getData().size() < 1) {
                         item.setMatchLevel("异常");
                         item.setReturnAddress("未匹配到符合规则的结果");
@@ -335,7 +369,16 @@ public class YyskAddressStandardizationServiceImpl {
                                     } else {
                                         item.setResidentialCommittee("");
                                     }
-                                    String oldAddress = Objects.requireNonNull(AddressTools.parseAddressJZ(contentBean.getSearchAddress()))[3].replaceAll(item.getMarket(), "").replaceAll(item.getDistinguish(), "").replaceAll(item.getStreetTown(), "").replaceAll(item.getResidentialCommittee(), "");
+                                    String oldAddress = "";
+                                    try{
+                                        oldAddress = Objects.requireNonNull(AddressTools.parseAddressJZ(contentBean.getSearchAddress()))[3].
+                                                replaceAll(item.getMarket().equals("[]") ? "" : item.getMarket(), "").
+                                                replaceAll(item.getDistinguish().equals("[]") ? "" : item.getDistinguish(), "").
+                                                replaceAll(item.getStreetTown().equals("[]") ? "" : item.getStreetTown(), "").
+                                                replaceAll(item.getResidentialCommittee().equals("[]") ? "" : item.getResidentialCommittee(), "");
+                                    } catch (Exception e){
+                                        e.printStackTrace();
+                                    }
                                     item.setStandardAddress(item.getMarket() + item.getDistinguish() + item.getStreetTown() + AddressQueryEngine.townReplace_ct(oldAddress));
                                     break;
                                 } else {
@@ -351,19 +394,20 @@ public class YyskAddressStandardizationServiceImpl {
                     }
                 }
                 item.setUpdateTime(new Date());
-            }));
+//            }));
         }
 
         // 等待所有任务完成
-        for (Future<?> future : futures) {
-            try {
-                future.get();
-            } catch (InterruptedException | ExecutionException e) {
-                System.err.println("线程异常:" + e);
-            }
-        }
-        // 关闭线程池
-        executorService.shutdown();
+//        for (Future<?> future : futures) {
+//            try {
+//                future.get();
+//            } catch (InterruptedException | ExecutionException e) {
+//                System.err.println("线程异常:" + e);
+//            }
+//        }
+//        // 关闭线程池
+//        executorService.shutdown();
         return listData;
     }
 }
+

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

@@ -9,15 +9,18 @@ spring.servlet.multipart.max-request-size=300MB
 #spring.datasource.password=root
 #spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
 # \u6570\u636E\u5E93\u914D\u7F6E\uFF08\u672C\u5730\u8C03\u8BD5\u73AF\u5883\uFF09
-spring.datasource.url=jdbc:postgresql://localhost:5432/postgres?stringtype=unspecified&u003fuseUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&serverTimezone=PRC&useSSL=false&tinyInt1isBit=false
+#spring.datasource.url=jdbc:postgresql://127.0.0.1:5432/postgres?stringtype=unspecified&u003fuseUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&serverTimezone=PRC&useSSL=false&tinyInt1isBit=false
+spring.datasource.url=jdbc:postgresql://192.168.1.4:5432/postgres?stringtype=unspecified&u003fuseUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&serverTimezone=PRC&useSSL=false&tinyInt1isBit=false
 spring.datasource.username=postgres
-spring.datasource.password=WE176852439@lmx
+#spring.datasource.password=WE176852439@lmx
+spring.datasource.password=SKYversation0816
 spring.datasource.driver-class-name=org.postgresql.Driver
 
 # JPA\u914D\u7F6E
 spring.jpa.hibernate.ddl-auto=update
-spring.jpa.show-sql=true
+#spring.jpa.show-sql=true
 spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
+
 # JPA \u914D\u7F6E
 #spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect
 #spring.jpa.hibernate.ddl-auto=update