Browse Source

优化请求逻辑,避免个别超时导致请求异常的BUG。

DESKTOP-6LTVLN7\Liumouren 1 month ago
parent
commit
9d05ae316f

+ 24 - 20
src/main/java/com/skyversation/poiaddr/addquery/AddressQueryEngine.java

@@ -50,24 +50,26 @@ public class AddressQueryEngine {
         }
         AddressResult addressResult = new AddressResult();
         List<AddressResult.ContentBean> contentBeans = new ArrayList<>();
-//        try {
-//            for (String addr : addrs) {
-//                AddressResult.ContentBean contentBean = verificaData(wdjaSearchByName(addr), level, addr);
-//                if (contentBean != null) {
-//                    contentBeans.add(contentBean);
-//                    addressResult.setData(contentBeans);
-//                    addressResult.setCode(AddressResultEnum.WDJA_SUCCESS);
-//                    addressResult.setMessage("成功");
-//                    return addressResult;
-//                }
-//            }
-//        } catch (Exception e) {
-//            System.err.println("武大吉奥:日常异常" + e);
-//        }
+        /*try {
+            for (String addr : addrs) {
+                AddressResult.ContentBean contentBean = verificaData(wdjaSearchByName(addr), level, addr);
+                if (contentBean != null) {
+                    contentBean.setSearchAddress(addr);
+                    contentBeans.add(contentBean);
+                    addressResult.setData(contentBeans);
+                    addressResult.setCode(AddressResultEnum.WDJA_SUCCESS);
+                    addressResult.setMessage("成功");
+                    return addressResult;
+                }
+            }
+        } catch (Exception e) {
+            System.err.println("武大吉奥:日常异常" + e);
+        }*/
         if (addressResult.getData() == null || addressResult.getData().size() == 0) {
             for (String addr : addrs) {
                 AddressResult.ContentBean contentBean = verificaData(szxSearchByName(addr), level, addr);
                 if (contentBean != null) {
+                    contentBean.setSearchAddress(addr);
                     contentBeans.add(contentBean);
                     addressResult.setData(contentBeans);
                     addressResult.setCode(AddressResultEnum.SZX_SUCCESS);
@@ -80,6 +82,7 @@ public class AddressQueryEngine {
             for (String addr : addrs) {
                 AddressResult.ContentBean contentBean = verificaData(gdSearchByName(addr), level, addr);
                 if (contentBean != null) {
+                    contentBean.setSearchAddress(addr);
                     contentBeans.add(contentBean);
                     addressResult.setData(contentBeans);
                     addressResult.setCode(AddressResultEnum.GD_SUCCESS);
@@ -92,6 +95,7 @@ public class AddressQueryEngine {
             for (String addr : addrs) {
                 AddressResult.ContentBean contentBean = verificaData(gdV3SearchByName(addr), level, addr);
                 if (contentBean != null) {
+                    contentBean.setSearchAddress(addr);
                     contentBeans.add(contentBean);
                     addressResult.setData(contentBeans);
                     addressResult.setCode(AddressResultEnum.GDV3_SUCCESS);
@@ -145,7 +149,7 @@ public class AddressQueryEngine {
      * @return
      */
     public AddressResult szxSearchByName(String address) {
-        ResponseEntity response = AddressNetTools.getInstance().requestGet(Constant.SZX_URL + "&region=" + Constant.getAMAP_CITY_CODE() + "&query=" + address, null, null);
+        ResponseEntity response = AddressNetTools.getInstance().requestGet(Constant.SZX_URL + "&region=" + Constant.getAMAP_CITY_CODE() + "&query=" + address, null, null, 10);
         if (response != null) {
             String body = response.getBody() + "";
             if (!StringUtils.hasText(body))
@@ -188,7 +192,7 @@ public class AddressQueryEngine {
      */
     public AddressResult gdSearchByName(String address) {
         String geoUrl = Constant.AMAP_GEO_URL + "?key=" + Constant.AMAP_KEY + "&address=" + address + "&city=" + Constant.getAMAP_CITY_CODE() + "&output=JSON";
-        ResponseEntity response = AddressNetTools.getInstance().requestGet(geoUrl, null, null);
+        ResponseEntity response = AddressNetTools.getInstance().requestGet(geoUrl, null, null, 0);
         if (response != null && response.getBody() != null) {
             String body = response.getBody() + "";
             if (!StringUtils.hasText(body))
@@ -214,7 +218,7 @@ public class AddressQueryEngine {
         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().requestGet(geoUrl, null, null);
+        ResponseEntity responseEntity = AddressNetTools.getInstance().requestGet(geoUrl, null, null, 0);
         if (responseEntity.hasBody()) {
             String body = responseEntity.getBody() + "";
             if (!StringUtils.hasText(body)) {
@@ -232,7 +236,7 @@ public class AddressQueryEngine {
                         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().requestGet(geoUrl, null, null);
+                        ResponseEntity responseEntity2 = AddressNetTools.getInstance().requestGet(geoUrl, null, null, 0);
                         if (responseEntity2.hasBody()) {
                             body = responseEntity2.getBody() + "";
                         }
@@ -413,13 +417,13 @@ public class AddressQueryEngine {
     }
 
     public static String addressReplaceAll(String address) {
-        return address.replaceAll("上海市", "").replaceAll(Constant.getArea(), "").replaceAll("区", "").replaceAll("-", "").replaceAll("_", "").replaceAll("/", "").replaceAll(" ", "").replaceAll(",", "").replaceAll("\\.", "").replaceAll(",", "").replaceAll("。", "").replaceAll("\\+", "").replaceAll("\\*", "");
+        return address.replaceAll("上海市", "").replaceAll(Constant.getArea() + "区", "").replaceAll("-", "").replaceAll("_", "").replaceAll("/", "").replaceAll(" ", "").replaceAll(",", "").replaceAll("\\.", "").replaceAll(",", "").replaceAll("。", "").replaceAll("\\+", "").replaceAll("\\*", "");
     }
 
     public static String townReplaceAll(String address) {
         String[] towns = Constant.getTowns();
         for (String town : towns) {
-            address.replaceAll(town, "");
+            address = address.replaceAll(town, "");
         }
         return address.replaceAll("号", "0").replaceAll("弄", "0").replaceAll("室", "0").replaceAll("户", "0").replaceAll("单元", "0").replaceAll("幢", "0");
     }

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

@@ -32,7 +32,7 @@ public class AddressTools {
 
         String param = "?user=" + userName + "&secret=" + secret + "&time=" + time;
         System.out.println("准备获取token,获取地址为:" + Constant.GET_TOKEN_URL + param);
-        ResponseEntity responseEntity =AddressNetTools.getInstance().requestGet(Constant.GET_TOKEN_URL + param, null, null);
+        ResponseEntity responseEntity =AddressNetTools.getInstance().requestGet(Constant.GET_TOKEN_URL + param, null, null,0);
         if(responseEntity != null){
             String body = responseEntity.getBody() + "";
             WDToken wdToken = JSONObject.parseObject(body, WDToken.class);

+ 2 - 0
src/main/java/com/skyversation/poiaddr/bean/AddressResult.java

@@ -38,6 +38,8 @@ public class AddressResult {
         private String type;
         // 地址
         private String address;
+        // 搜索地址
+        private String searchAddress;
         // 距离
         private String distance;
         // 地址名称

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

@@ -72,14 +72,14 @@ public class PoiAddressController {
      * 5、将结果保存为ser文件
      */
     @PostMapping(value = "/test", produces = MediaType.APPLICATION_JSON_VALUE)
-    public Object updateDataBaseData(@RequestParam(name = "pageNum") Integer pageNum, @RequestParam(name = "pageSize") Integer pageSize, @RequestParam(name = "level") Integer level, @RequestParam(name = "init") Integer init) {
+    public Object updateDataBaseData(@RequestParam(name = "pageSize") Integer pageSize, @RequestParam(name = "level") Integer level, @RequestParam(name = "init") Integer init) {
         // 记录程序开始时间
         long startTime = System.currentTimeMillis();
 //      批量处理数据
         if (level == null) {
             level = 1;
         }
-        testDataService.iterativeProcessing(pageNum, pageSize, level, init);// 记录程序结束时间
+        testDataService.iterativeProcessing(pageSize, level, init);// 记录程序结束时间
         long endTime = System.currentTimeMillis();
         return "处理完成!用时" + (endTime - startTime) / 1000 + "秒!";
     }
@@ -243,10 +243,10 @@ public class PoiAddressController {
                 for (FileDataDto fileDataDto : fileDataDtoList) {
                     futures.add(executorService.submit(() -> {
                         List<String> addrList = new ArrayList<>();
-                        if(fileDataDto.getAddr1() != null){
+                        if (fileDataDto.getAddr1() != null) {
                             addrList.add(fileDataDto.getAddr1());
                         }
-                        if(fileDataDto.getAddr2() != null){
+                        if (fileDataDto.getAddr2() != null) {
                             addrList.add(fileDataDto.getAddr2());
                         }
                         if (addrList.size() > 0) {

+ 4 - 4
src/main/java/com/skyversation/poiaddr/service/TestDataRepository.java

@@ -5,12 +5,12 @@ import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
 @Repository
-public interface TestDataRepository extends JpaRepository<TestData,Long> {
+public interface TestDataRepository extends JpaRepository<TestData, Long> {
     // 使用原生 SQL 进行模糊查询并分页
-    @Query(value = "SELECT * FROM test_data WHERE address1 LIKE %:keyword%", nativeQuery = true)
-    Page<TestData> findByAddress1Containing(@Param("keyword") String keyword, Pageable pageable);
+    @Query(value = "SELECT * FROM test_data WHERE update_time is null", nativeQuery = true)
+//    @Query(value = "SELECT * FROM test_data WHERE sk_hjdz like '%新松江路%' and standardized_address like '%新路%'", nativeQuery = true)
+    Page<TestData> findByAddress1Containing(Pageable pageable);
 }

+ 105 - 94
src/main/java/com/skyversation/poiaddr/service/impl/TestDataServiceImpl.java

@@ -27,10 +27,9 @@ public class TestDataServiceImpl {
     private TestDataRepository testDataRepository;
 
     //  分页查询地址表
-    public Page<TestData> getAllDataPage(int page, int size) {
-        Pageable pageable = PageRequest.of(page - 1, size);
-//        return testDataRepository.findByAddress1Containing(Constant.getArea(), pageable);
-        return testDataRepository.findAll(pageable);
+    public Page<TestData> getAllDataPage(int size) {
+        Pageable pageable = PageRequest.of(0, size);
+        return testDataRepository.findByAddress1Containing(pageable);
     }
 
     //   批量修改地址表
@@ -42,114 +41,126 @@ public class TestDataServiceImpl {
     /**
      * 首先要得到一个Page<T>对象,然后判断是否还有别的数据,有的话接着请求并返回新的Page<T>对象并迭代处理数据
      */
-    public void iterativeProcessing(Integer pageNum, Integer pageSize, Integer level, Integer init) {
-        System.out.println("<<<<<<<<------iterativeProcessing{pageNum:" + pageNum + ",pageSize:" + pageSize + "}");
-        Page<TestData> outData = getAllDataPage(pageNum, pageSize);
-        List<TestData> listData = outData.getContent();
-        // 创建线程池
-        int threadCount = Runtime.getRuntime().availableProcessors();
-        ExecutorService executorService = Executors.newFixedThreadPool(threadCount);
-        List<Future<?>> futures = new ArrayList<>();
-        for (TestData item : listData) {
-            futures.add(executorService.submit(() -> {
-                if (init == 1) {
-                    item.setInTheArea(null);
-                    item.setTwon(null);
-                    item.setLevel(null);
-                    item.setAdministrativeDivision(null);
-                    item.setLat(null);
-                    item.setLon(null);
-                    item.setResultAddrKey(null);
-                    item.setUpdateTime(null);
-                } else {
-                    List<String> addrList = new ArrayList<>();
-                    if (item.getSkHjdz() != null && !item.getSkHjdz().isEmpty() && ExcelReaderUtils.isOtherDistrictThanSongJiang(item.getSkHjdz())) {
-//                      实口户籍地址
-                        addrList.add("上海市" + Constant.getArea() + "区" + AddressQueryEngine.addressReplaceAll(item.getSkHjdz()));
-                    }
-                    if (item.getSkJzdz() != null && !item.getSkJzdz().isEmpty() && ExcelReaderUtils.isOtherDistrictThanSongJiang(item.getSkJzdz())) {
-//                      实口居住地址
-                        addrList.add("上海市" + Constant.getArea() + "区" + AddressQueryEngine.addressReplaceAll(item.getSkJzdz()));
-                    }
-                    if (item.getJcHjdz() != null && !item.getJcHjdz().isEmpty() && ExcelReaderUtils.isOtherDistrictThanSongJiang(item.getJcHjdz())) {
-//                      基层户籍地址
-                        addrList.add("上海市" + Constant.getArea() + "区" + AddressQueryEngine.addressReplaceAll(item.getJcHjdz()));
-                    }
-                    if (item.getJcJzdz() != null && !item.getJcJzdz().isEmpty() && ExcelReaderUtils.isOtherDistrictThanSongJiang(item.getJcJzdz())) {
-//                      基层居住地址
-                        addrList.add("上海市" + Constant.getArea() + "区" + AddressQueryEngine.addressReplaceAll(item.getJcJzdz()));
-                    }
-//                  判断地址是否属于松江区
-                    if (addrList.size() > 0) {
-//                      开始查询
-                        AddressResult addressResult = AddressQueryEngine.getInstance().commonSearchByName(addrList, AddressLevel.values()[level - 1]);
-                        if (addressResult != null) {
-                            if (addressResult.getData() == null || addressResult.getData().size() < 1) {
-                                item.setInTheArea("异常");
-                                item.setResultAddrKey("未匹配到符合规则的结果!");
-                            } else {
-                                try {
-                                    for (AddressResult.ContentBean contentBean : addressResult.getData()) {
-                                        String resultAddrKey = contentBean.getAddress();
-                                        if (resultAddrKey != null && contentBean.getLon() != null && contentBean.getLat() != null && ExcelReaderUtils.isOtherDistrictThanSongJiang(resultAddrKey)) {
-                                            String lng = contentBean.getLat() + "";
-                                            String lat = contentBean.getLon() + "";
-                                            item.setInTheArea("是");
-                                            if (contentBean.getAdJson() != null) {
+    public void iterativeProcessing(Integer pageSize, Integer level, Integer init) {
+        System.out.println("<<<<<<<<------iterativeProcessing{pageSize:" + pageSize + "}");
+        long startTime = System.currentTimeMillis();
+        Page<TestData> outData = getAllDataPage(pageSize);
+        if (outData.getTotalElements() > 0) {
+            List<TestData> listData = outData.getContent();
+            // 创建线程池
+            ExecutorService executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
+            List<Future<?>> futures = new ArrayList<>();
+            for (TestData item : listData) {
+                futures.add(executorService.submit(() -> {
+                    if (init == 1) {
+                        item.setInTheArea(null);
+                        item.setTwon(null);
+                        item.setLevel(null);
+                        item.setAdministrativeDivision(null);
+                        item.setStandardizedAddress(null);
+                        item.setMarket(null);
+                        item.setLat(null);
+                        item.setLon(null);
+                        item.setResultAddrKey(null);
+                        item.setUpdateTime(null);
+                    } else {
+                        List<String> addrList = new ArrayList<>();
+                        if (item.getSkHjdz() != null && !item.getSkHjdz().isEmpty() && ExcelReaderUtils.isOtherDistrictThanSongJiang(item.getSkHjdz())) {
+//                          实口户籍地址
+                            addrList.add("上海市" + Constant.getArea() + "区" + AddressQueryEngine.addressReplaceAll(item.getSkHjdz()));
+                        }
+                        if (item.getSkJzdz() != null && !item.getSkJzdz().isEmpty() && ExcelReaderUtils.isOtherDistrictThanSongJiang(item.getSkJzdz())) {
+//                          实口居住地址
+                            addrList.add("上海市" + Constant.getArea() + "区" + AddressQueryEngine.addressReplaceAll(item.getSkJzdz()));
+                        }
+                        if (item.getJcHjdz() != null && !item.getJcHjdz().isEmpty() && ExcelReaderUtils.isOtherDistrictThanSongJiang(item.getJcHjdz())) {
+//                          基层户籍地址
+                            addrList.add("上海市" + Constant.getArea() + "区" + AddressQueryEngine.addressReplaceAll(item.getJcHjdz()));
+                        }
+                        if (item.getJcJzdz() != null && !item.getJcJzdz().isEmpty() && ExcelReaderUtils.isOtherDistrictThanSongJiang(item.getJcJzdz())) {
+//                          基层居住地址
+                            addrList.add("上海市" + Constant.getArea() + "区" + AddressQueryEngine.addressReplaceAll(item.getJcJzdz()));
+                        }
+//                      判断地址是否属于松江区
+                        if (addrList.size() > 0) {
+//                          开始查询
+                            AddressResult addressResult = AddressQueryEngine.getInstance().commonSearchByName(addrList, AddressLevel.values()[level - 1]);
+                            if (addressResult != null) {
+                                if (addressResult.getData() == null || addressResult.getData().size() < 1) {
+                                    item.setInTheArea("异常");
+                                    item.setResultAddrKey("未匹配到符合规则的结果!");
+                                } else {
+                                    try {
+                                        for (AddressResult.ContentBean contentBean : addressResult.getData()) {
+                                            String resultAddrKey = contentBean.getAddress();
+                                            if (resultAddrKey != null && contentBean.getLon() != null && contentBean.getLat() != null && ExcelReaderUtils.isOtherDistrictThanSongJiang(resultAddrKey) && contentBean.getAdJson() != null && contentBean.getTownJson() != null) {
+                                                String lng = contentBean.getLat() + "";
+                                                String lat = contentBean.getLon() + "";
+                                                item.setInTheArea("是");
                                                 if (contentBean.getAdJson().getString("name") != null) {
                                                     item.setAdministrativeDivision(contentBean.getAdJson().getString("name"));
                                                 }
-                                            }
-                                            if (contentBean.getTownJson() != null) {
                                                 if (contentBean.getTownJson().getString("name") != null) {
                                                     item.setTwon(contentBean.getTownJson().getString("name"));
                                                 }
+                                                item.setLat(lat);
+                                                item.setLon(lng);
+                                                item.setResultAddrKey(resultAddrKey);
+                                                item.setMarket("上海市");
+//                                              开始规范化地址(把查询地址的市、区、街镇替换为空,然后把得到的区、街镇拼接上去)(得到区、街镇)
+                                                String oldAddress = contentBean.getSearchAddress().replaceAll("上海市", "").replaceAll("松江区", "");
+                                                String[] towns = Constant.getTowns();
+                                                for (String town : towns) {
+                                                    oldAddress = oldAddress.replaceAll(town, "");
+                                                }
+                                                if (contentBean.getCjJson() != null && contentBean.getCjJson().containsKey("所属居委")) {
+                                                    oldAddress = contentBean.getCjJson().getString("所属居委") + oldAddress;
+                                                }
+                                                item.setStandardizedAddress("上海市" + item.getAdministrativeDivision() + item.getTwon() + oldAddress);
+                                                break;
+                                            } else {
+                                                item.setInTheArea("异常");
+                                                item.setResultAddrKey("未匹配到符合规则的结果!");
                                             }
-
-                                            item.setLat(lat);
-                                            item.setLon(lng);
-                                            item.setResultAddrKey(resultAddrKey);
-                                            break;
-                                        } else {
-                                            item.setInTheArea("异常");
-                                            item.setResultAddrKey("未查询到符合条件的结果!");
                                         }
+                                    } catch (Exception e) {
+                                        item.setInTheArea("异常");
+                                        System.err.println("查询结果处理异常:" + e);
                                     }
-                                } catch (Exception e) {
-                                    item.setInTheArea("异常");
-                                    System.err.println("查询结果处理异常:" + e);
                                 }
+                            } else {
+                                item.setInTheArea("异常");
+                                item.setResultAddrKey("未匹配到符合规则的结果!");
                             }
                         } else {
-                            item.setInTheArea("异常");
-                            item.setResultAddrKey("未查询到符合条件的结果!");
+//                          更新时间,添加是否松江判断字段为否
+                            item.setInTheArea("否");
                         }
-                    } else {
-//                  更新时间,添加是否松江判断字段为否
-                        item.setInTheArea("否");
+                        item.setUpdateTime(new Date());
+                        item.setLevel(level.toString());
                     }
-                    item.setUpdateTime(new Date());
-                    item.setLevel(level.toString());
-                }
-            }));
-        }
+                }));
+            }
 
-        // 等待所有任务完成
-        for (Future<?> future : futures) {
-            try {
-                if (future != null) {
+            // 等待所有任务完成
+            for (Future<?> future : futures) {
+                try {
                     future.get();
+                } catch (InterruptedException | ExecutionException e) {
+                    System.err.println("线程异常:" + e);
                 }
-            } catch (InterruptedException | ExecutionException e) {
-                System.err.println("线程异常:" + e);
             }
-        }
-        // 关闭线程池
-        executorService.shutdown();
-        updateDatas(listData);
-//      多线程处理完成后,判断是否有其他分页并迭代
-        if ((long) pageNum * pageSize < outData.getTotalElements()) {
-            iterativeProcessing(pageNum + 1, pageSize, level, init);
+            // 关闭线程池
+            executorService.shutdown();
+            updateDatas(listData);
+            long endTime = System.currentTimeMillis();
+            System.out.println("处理单批次用时" + (endTime - startTime) / 1000 + "秒!");
+            if (outData.getTotalElements() - pageSize > 0) {
+                System.out.println("剩余处理条数:" + (outData.getTotalElements() - pageSize));
+                iterativeProcessing(pageSize, level, init);
+            } else {
+                System.out.println("<<<<<<<<------任务处理完成!");
+            }
         } else {
             System.out.println("<<<<<<<<------任务处理完成!");
         }

+ 1 - 8
src/main/java/com/skyversation/poiaddr/util/SerializationUtils.java

@@ -40,13 +40,6 @@ public class SerializationUtils {
     }
 
     public static void main(String[] args) {
-        // 从文件中反序列化读取数据
-        List<FileDataDto> deserializedList = SerializationUtils.deserialize("output/output匹配户籍地址.ser");
-
-        if (deserializedList != null) {
-            for (FileDataDto person : deserializedList) {
-                System.out.println(person);
-            }
-        }
+        System.out.println(Runtime.getRuntime().availableProcessors());
     }
 }

+ 11 - 8
src/main/java/com/skyversation/poiaddr/util/net/AddressNetTools.java

@@ -43,10 +43,10 @@ public class AddressNetTools {
     }
 
     @Async
-    public ResponseEntity requestGet(String url, MultiValueMap<String, String> params, Map<String, String> headerMap) {
+    public ResponseEntity requestGet(String url, MultiValueMap<String, String> params, Map<String, String> headerMap, Integer ifReloadSize) {
         SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
-        requestFactory.setConnectTimeout(5 * 1000);
-        requestFactory.setReadTimeout(5 * 1000);
+        requestFactory.setConnectTimeout(3 * 1000);
+        requestFactory.setReadTimeout(3 * 1000);
         RestTemplate client = new RestTemplate(requestFactory);
         client.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));
         HttpHeaders headers = new HttpHeaders();
@@ -60,13 +60,16 @@ public class AddressNetTools {
         }
 
         org.springframework.http.HttpEntity<MultiValueMap<String, String>> requestEntity = new org.springframework.http.HttpEntity<>(params, headers);//执行HTTP请求
-        ResponseEntity<String> response = null;
         try {
-            response = client.exchange(url, HttpMethod.GET, requestEntity, String.class);
+            return client.exchange(url, HttpMethod.GET, requestEntity, String.class);
         } catch (Exception e) {
-            System.err.println("requestGet err:" + e);
+            if (ifReloadSize > 0) {
+                ifReloadSize--;
+                return requestGet(url, params, headerMap, ifReloadSize);
+            } else {
+                System.err.println("requestGet err:" + e);
+                return null;
+            }
         }
-
-        return response;
     }
 }

+ 3 - 8
src/main/java/com/skyversation/poiaddr/util/tasks/ScheduledTasks.java

@@ -1,13 +1,8 @@
 package com.skyversation.poiaddr.util.tasks;
 
-import com.skyversation.poiaddr.addquery.AddressQueryEngine;
-import com.skyversation.poiaddr.bean.AddressResult;
-import com.skyversation.poiaddr.service.impl.LegalPersonServiceImpl;
-import com.skyversation.poiaddr.util.status.AddressLevel;
+import com.skyversation.poiaddr.service.impl.TestDataServiceImpl;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
-
-import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
 import java.util.Date;
 
@@ -15,7 +10,7 @@ import java.util.Date;
 public class ScheduledTasks {
 
     @Resource
-    private LegalPersonServiceImpl legalPersonServiceimpl;
+    private TestDataServiceImpl testDataService;
 
     /**
      * 每天 1 点执行的方法
@@ -25,6 +20,6 @@ public class ScheduledTasks {
     public void executeAtOneOClock() {
         System.out.println("每天 1 点执行的方法,当前时间:" + new Date());
         // 在这里编写具体的业务逻辑
-//        legalPersonServiceimpl.iterativeProcessing(1, 100, 1);
+        testDataService.iterativeProcessing(1000, 1, 0);
     }
 }

+ 2 - 2
src/main/java/com/skyversation/poiaddr/util/根据jsonarray查询地址_四中心搜索_V4.java

@@ -15,7 +15,7 @@ import java.util.*;
 public class 根据jsonarray查询地址_四中心搜索_V4 {
     public static final String szxUrl = "https://service-api.onemap.sh.gov.cn/data-service-manage-service/MapProxyApi/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBsaWNhdGlvbl9pZCI6NjEsImFwcGxpY2F0aW9uX25hbWUiOiLpnZLmtabkuozkuInnu7TmnI3liqHns7vnu58iLCJleHAiOjIwNDY2Nzg0MDN9.IKUMdjUX4U1jncIUNren-iotL7duXI90aLECMjpvUX8/address_search/MapServer?region=310118&page_num=1&page_size=10&query=";
     public static final String v4Url = "http://10.235.245.174:10011/proxy/address/getAddressV4?token=65463DEE-620A-0ED5-2385-17ECD07CD351&address=";
-//  TODO 是否使用市中心的返回方法
+    //  TODO 是否使用市中心的返回方法
     public static final Boolean ifSzxResult = true;
 
     public static void main(String[] args) {
@@ -49,7 +49,7 @@ public class 根据jsonarray查询地址_四中心搜索_V4 {
                     address = address.replace("上海市", "");
                     address = address.replace("青浦区", "");
                     address = heaeName + address;
-                    ResponseEntity response = AddressNetTools.getInstance().requestGet((ifSzxResult ? szxUrl : v4Url) + address, null, null);
+                    ResponseEntity response = AddressNetTools.getInstance().requestGet((ifSzxResult ? szxUrl : v4Url) + address, null, null, 1);
                     if (response != null) {
                         JSONObject json = JSONObject.parseObject(response.getBody() + "");
                         JSONArray array = null;