Przeglądaj źródła

修复线程安全问题

SKYVERSATION\root 2 miesięcy temu
rodzic
commit
3e0c36b2ca

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

@@ -133,7 +133,7 @@ public class TransfromDataTool {
                 JSONObject localtion = item.getJSONObject("location");
                 Double wgs84Lng = localtion.getDouble("lng");
                 Double wgs84Lat = localtion.getDouble("lat");
-                double[] points2 = CoordTransform2.getInstance().wgs84ToShcj(wgs84Lng, wgs84Lat);
+                double[] points2 = CoordTransform2.getInstance().wgs84_to_shcj(wgs84Lng, wgs84Lat);
                 double[] points = CoordTransform2.getInstance().wgs84_to_gcj02(wgs84Lng, wgs84Lat);
                 amapAddressV3.setLocation(points[0] + "," + points[1]);
                 amapAddressV3.setLon(String.valueOf(points2[0]));
@@ -181,7 +181,7 @@ public class TransfromDataTool {
                 content.setLocation(jsonObject.getDouble("point_x") + "," + jsonObject.getDouble("point_y"));
             } else {
 //              市中心返回的结果没有sh2000坐标字段的话就把wgs84的坐标转成sh2000的坐标系并保存到location字段中
-                double[] points2 = CoordTransform2.getInstance().wgs84ToShcj(
+                double[] points2 = CoordTransform2.getInstance().wgs84_to_shcj(
                         jsonObject.getJSONObject("location").getDouble("lng"), jsonObject.getJSONObject("location").getDouble("lat"));
                 content.setLocation(points2[0] + "," + points2[1]);
             }

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

@@ -39,7 +39,7 @@ public class AreaService {
     @Autowired
     private AmapAddressV3Service amapAddressV3Service;
 
-//  暂存数据库中的所有数据
+    //  暂存数据库中的所有数据
     private Map<String, AmapAddressV3> allAddressData = new HashMap<>();
 
     private static AreaService instance;
@@ -91,7 +91,7 @@ public class AreaService {
                 allAddressData.put(amapAddressV3.getAddress(), amapAddressV3);
             }
             amapAddressV3List.clear();
-            System.out.println(">>>>>>>>------缓存数据库数据完成!allAddressData.size()="+allAddressData.size());
+            System.out.println(">>>>>>>>------缓存数据库数据完成!allAddressData.size()=" + allAddressData.size());
         } catch (Exception e) {
             System.err.println(">>>>>>>>------数据库连通性测试结果:" + e);
         }
@@ -193,7 +193,7 @@ public class AreaService {
             resultData.add(allAddressData.get(addr));
             return resultData;
         } else {
-            int sumSize = 20;
+            int sumSize = 100;
             for (String address : allAddressData.keySet()) {
                 if (address.contains(addr) && sumSize > 0) {
                     sumSize--;
@@ -238,7 +238,7 @@ public class AreaService {
 
     public GeoJsonBean isInResidentialCommitteePolygon(double lon, double lat) {
         try {
-            Geometry point = reader.read("POINT (" + lat + " " + lon + ")");
+            Geometry point = reader.read("POINT (" + lon + " " + lat + ")");
             for (GeoJsonBean bean : shAllResidentialCommitteeList) {
                 if (bean.getMultiPolygon().contains(point)) {
                     return bean;

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

@@ -1,7 +1,6 @@
 package com.skyversation.poiaddr.service.impl;
 
 import com.skyversation.poiaddr.addquery.AddressQueryEngine;
-import com.skyversation.poiaddr.addquery.Constant;
 import com.skyversation.poiaddr.bean.AddressResult;
 import com.skyversation.poiaddr.config.DbConnection;
 import com.skyversation.poiaddr.entity.AmapAddressV3;
@@ -357,8 +356,11 @@ public class YyskAddressStandardizationServiceImpl {
         // 创建线程池
         ExecutorService executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
         List<Future<?>> futures = new ArrayList<>();
-        for (YyskAddressStandardization item : listData) {
+        for (int i = 0; i < listData.size(); i++) {
+            YyskAddressStandardization item = listData.get(i);
+//            int finalI = i;
             futures.add(executorService.submit(() -> {
+//                System.out.print("<-" + finalI + "->");
                 List<String> addrList = new ArrayList<>();
                 String[] addr = AddressMatcher.matchProvinceAndCity(item.getAddress());
                 if (addr != null && !addr[0].contains("上海")) {