Procházet zdrojové kódy

删除一个amapkey,添加请求调用量tag,优化地址匹配逻辑,

SKYVERSATION\root před 2 měsíci
rodič
revize
5fa567b04c

+ 4 - 2
src/main/java/com/skyversation/poiaddr/addquery/AddressQueryEngine.java

@@ -11,6 +11,7 @@ import com.skyversation.poiaddr.service.AreaService;
 import com.skyversation.poiaddr.util.net.AddressNetTools;
 import com.skyversation.poiaddr.util.status.AddressLevel;
 import com.skyversation.poiaddr.util.status.AddressResultEnum;
+import com.skyversation.poiaddr.util.tasks.ScheduledTasks;
 import org.springframework.http.HttpMethod;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
@@ -307,7 +308,7 @@ public class AddressQueryEngine {
      * @return
      */
     public AddressResult gdSearchByName(String address) {
-        String geoUrl = Constant.AMAP_GEO_URL + "?key=" + Constant.AMAP_KEY[ThreadLocalRandom.current().nextInt(0, 4)] + "&address=" + address + "&city=" + Constant.getAMAP_CITY_CODE() + "&output=JSON";
+        String geoUrl = Constant.AMAP_GEO_URL + "?key=" + Constant.AMAP_KEY[ThreadLocalRandom.current().nextInt(0, 3)] + "&address=" + address + "&city=" + Constant.getAMAP_CITY_CODE() + "&output=JSON";
         ResponseEntity response = AddressNetTools.getInstance().requestGetOrPost(HttpMethod.GET, geoUrl, null, null, 0);
         if (response != null && response.getBody() != null) {
             String body = response.getBody() + "";
@@ -335,8 +336,9 @@ public class AddressQueryEngine {
             address = address.replace("中山", "中山街道");
         }
         JSONArray pois = new JSONArray();
+        ScheduledTasks.gdRequestSize++;
         String geoUrl =
-                Constant.AMAP_SEARCH_NAME_V3 + "?key=" + Constant.AMAP_KEY[ThreadLocalRandom.current().nextInt(0, 4)] + "&types=" + Constant.AMAP_SEARCH_TYPES +
+                Constant.AMAP_SEARCH_NAME_V3 + "?key=" + Constant.AMAP_KEY[ThreadLocalRandom.current().nextInt(0, 3)] + "&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()) {

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

@@ -79,8 +79,8 @@ 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 = "28f736e6421ff3577280bdca9a0ce1d9";
-    public static String[] AMAP_KEY = new String[]{"a91ac5c3dc208259d8a3ac971f2c2529", "7a68ed576a6e2539c53b172e735cf342", "50ab96b1297395c29216150c4284704b", "2e1fa082d655f41d4643acc997709c02"};
+//    public static String AMAP_KEY = "28f736e6421ff3577280bdca9a0ce1d9"; a91ac5c3dc208259d8a3ac971f2c2529
+    public static String[] AMAP_KEY = new String[]{"7a68ed576a6e2539c53b172e735cf342", "50ab96b1297395c29216150c4284704b", "2e1fa082d655f41d4643acc997709c02"};
     //    oauth和dms搭建服务器地址
     public static String ServerBaseUrl = "http://121.43.55.7:";
     //    DMS服务端口和路径

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

@@ -186,7 +186,8 @@ public class AreaService {
 
         if (addr.contains("号")) {
             addr = addr.substring(0, addr.lastIndexOf("号") + 1);
-        } else if (addr.contains("弄")) {
+        }
+        if (addr.contains("弄")) {
             addr = addr.substring(0, addr.lastIndexOf("弄") + 1);
         }
         if (allAddressData.containsKey(addr)) {

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

@@ -348,7 +348,7 @@ public class YyskAddressStandardizationServiceImpl {
                 ExcelReaderUtils.convertYYListToMapList(resultDataList, outPath);
             }
             long endTime = System.currentTimeMillis();
-            System.out.println("处理单批次用时" + (endTime - startTime) / 1000 + "秒!");
+            System.out.println("处理单批次用时" + (endTime - startTime) / 1000 + "秒!已调用市中心接口个数" + ScheduledTasks.szxRequestSize + ";已調用高德接口个数:" + ScheduledTasks.gdRequestSize);
         } else {
             System.out.println("<<<<<<<<------ 第" + startFileIndex + "个文件 -----任务处理完成!结果为空。。。--->>>>" + outPath);
         }
@@ -356,7 +356,7 @@ public class YyskAddressStandardizationServiceImpl {
 
     public List<YyskAddressStandardization> runExecutorService(List<YyskAddressStandardization> listData) {
         // 创建线程池
-        int executorSize = Runtime.getRuntime().availableProcessors() - 2;
+        int executorSize = Runtime.getRuntime().availableProcessors() / 2;
         System.out.println("创建线程池个数:" + executorSize);
         ExecutorService executorService = Executors.newFixedThreadPool(executorSize);
         List<Future<?>> futures = new ArrayList<>();

+ 4 - 2
src/main/java/com/skyversation/poiaddr/util/net/AddressNetTools.java

@@ -2,6 +2,7 @@ package com.skyversation.poiaddr.util.net;
 
 import com.alibaba.fastjson.JSONObject;
 import com.skyversation.poiaddr.addquery.AddressQueryEngine;
+import com.skyversation.poiaddr.util.tasks.ScheduledTasks;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
 import org.apache.http.client.HttpClient;
@@ -49,13 +50,14 @@ public class AddressNetTools {
     @Async
     public ResponseEntity requestGetOrPost(HttpMethod httpMethod, String url, JSONObject params, Map<String, String> headerMap, Integer ifReloadSize) {
         SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
-        requestFactory.setConnectTimeout(50000);
-        requestFactory.setReadTimeout(50000);
+        requestFactory.setConnectTimeout(10000);
+        requestFactory.setReadTimeout(5000);
         RestTemplate client = new RestTemplate(requestFactory);
         client.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));
         HttpHeaders headers = new HttpHeaders();
         //请勿轻易改变此提交方式,大部分的情况下,提交方式都是表单提交
         headers.setContentType(httpMethod == HttpMethod.POST ? MediaType.APPLICATION_JSON : MediaType.APPLICATION_FORM_URLENCODED);
+        ScheduledTasks.szxRequestSize++;
         if (headerMap != null) {
             Set<String> sets = headerMap.keySet();
             for (String key : sets) {

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

@@ -18,6 +18,9 @@ public class ScheduledTasks {
      */
     public static boolean taskRunStatus = false;
 
+    public static int szxRequestSize = 0;
+    public static int gdRequestSize = 0;
+
     @Resource
     private YyskAddressStandardizationServiceImpl yyskAddressStandardizationService;