Prechádzať zdrojové kódy

数据解析BUG修复

SKYVERSATION\root 2 mesiacov pred
rodič
commit
6e933a8672

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

@@ -58,7 +58,12 @@ public class AddressQueryEngine {
 //                System.out.println("数据库查询有结果!!!!");
                 JSONArray pois = new JSONArray();
                 pois.addAll(dbPois);
-                return new TransfromDataTool().gdV3ResultToResult(addr, pois, false);
+                addressResult = new TransfromDataTool().gdV3ResultToResult(addr, pois, false);
+                if (addressResult != null && addressResult.getData() != null && addressResult.getData().size() > 0 && ifRuleData(addressResult.getData().get(0).getScore())) {
+                    addressResult.setCode(AddressResultEnum.GD_SUCCESS);
+                    addressResult.setMessage("成功");
+                    return getCjWgWgwByLoc(addressResult);
+                }
             }
         }
         /*for (String addr : addrs) {
@@ -74,7 +79,7 @@ public class AddressQueryEngine {
         for (String addr : addrs) {
             //  创建请求
             addressResult = szxSearchByName(addr);
-            if (addressResult != null && addressResult.getData().size() > 0 && ifRuleData(addressResult.getData().get(0).getScore())) {
+            if (addressResult != null && addressResult.getData() != null && addressResult.getData().size() > 0 && ifRuleData(addressResult.getData().get(0).getScore())) {
                 addressResult.setCode(AddressResultEnum.SZX_SUCCESS);
                 addressResult.setMessage("成功");
                 return getCjWgWgwByLoc(addressResult);
@@ -84,8 +89,8 @@ public class AddressQueryEngine {
         for (String addr : addrs) {
             //  创建请求(要返回对应的搜索地址,返回地址,总分,市:cityname,街道:adname,村居:community)
             addressResult = gdV3SearchByName(addr);
-            if (addressResult != null) {
-                addressResult.setCode(AddressResultEnum.SZX_SUCCESS);
+            if (addressResult != null && addressResult.getData() != null && addressResult.getData().size() > 0) {
+                addressResult.setCode(AddressResultEnum.GD_SUCCESS);
                 addressResult.setMessage("成功");
                 return getCjWgWgwByLoc(addressResult);
             }

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

@@ -122,36 +122,46 @@ public class TransfromDataTool {
 
         //          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.setName(item.get("name").toString());
-            amapAddressV3.setType("测绘院结果");
-            amapAddressV3.setAddress(item.get("address").toString());
-            JSONObject localtion = item.getJSONObject("location");
-            Double wgs84Lng = localtion.getDouble("lng");
-            Double wgs84Lat = localtion.getDouble("lat");
-            double[] points2 = CoordTransform2.getInstance().wgs84ToShcj(wgs84Lng, wgs84Lat);
-            double[] points = CoordTransform2.getInstance().wgs84_to_gcj02(wgs84Lng, wgs84Lat);
-            amapAddressV3.setLocation(points[0] + "," + points[1]);
-            amapAddressV3.setLon(String.valueOf(points2[0]));
-            amapAddressV3.setLat(String.valueOf(points2[1]));
-            amapAddressV3.setCreateTime(new Date());
-            if (item.containsKey("ext_data")) {
-                JSONObject ext_data = item.getJSONObject("ext_data");
-                if (!ext_data.get("region_ss").toString().isEmpty()) {
-                    amapAddressV3.setPname(ext_data.get("region_ss").toString());
-                    amapAddressV3.setCityname(ext_data.get("region_ss").toString());
-                    amapAddressV3.setAdname(item.get("region_qx").toString());
-                    amapAddressV3.setStreetTTown(item.get("region_jd").toString());
-                    amapAddressV3.setResidentialCommittee(item.get("region_jw").toString());
+        try {
+            for (int i = 0; i < array.size(); i++) {
+                JSONObject item = array.getJSONObject(i);
+                AmapAddressV3 amapAddressV3 = new AmapAddressV3();
+                amapAddressV3.setId(UUID.randomUUID().toString());
+                amapAddressV3.setName(item.get("name").toString());
+                amapAddressV3.setType("测绘院结果");
+                amapAddressV3.setAddress(item.get("address").toString());
+                JSONObject localtion = item.getJSONObject("location");
+                Double wgs84Lng = localtion.getDouble("lng");
+                Double wgs84Lat = localtion.getDouble("lat");
+                double[] points2 = CoordTransform2.getInstance().wgs84ToShcj(wgs84Lng, wgs84Lat);
+                double[] points = CoordTransform2.getInstance().wgs84_to_gcj02(wgs84Lng, wgs84Lat);
+                amapAddressV3.setLocation(points[0] + "," + points[1]);
+                amapAddressV3.setLon(String.valueOf(points2[0]));
+                amapAddressV3.setLat(String.valueOf(points2[1]));
+                amapAddressV3.setCreateTime(new Date());
+                if (item.containsKey("ext_data")) {
+                    JSONObject ext_data = item.getJSONObject("ext_data");
+                    if (!ext_data.get("region_ss").toString().isEmpty()) {
+                        amapAddressV3.setPname(ext_data.get("region_ss").toString());
+                        amapAddressV3.setCityname(ext_data.get("region_ss").toString());
+                    }
+                    if (!ext_data.get("region_qx").toString().isEmpty()) {
+                        amapAddressV3.setAdname(ext_data.get("region_qx").toString());
+                    }
+                    if (!ext_data.get("region_jd").toString().isEmpty()) {
+                        amapAddressV3.setStreetTTown(ext_data.get("region_jd").toString());
+                    }
+                    if (!ext_data.get("region_jw").toString().isEmpty()) {
+                        amapAddressV3.setResidentialCommittee(ext_data.get("region_jw").toString());
+                    }
                 }
+                amapAddressV3List.add(amapAddressV3);
             }
-            amapAddressV3List.add(amapAddressV3);
-        }
-        if (amapAddressV3List.size() > 0) {
-            AreaService.getInstance().saveAmapAddressV3(amapAddressV3List);
+            if (amapAddressV3List.size() > 0) {
+                AreaService.getInstance().saveAmapAddressV3(amapAddressV3List);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
         }
         JSONObject jsonObject = com.skyversation.poiaddr.util.AddressTools.getInstance().findBestMatch(searchAddress, array, "address");
         if (jsonObject.containsKey("总分") && jsonObject.get("总分") != null && !jsonObject.getString("总分").isEmpty()) {

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

@@ -107,6 +107,7 @@ public class AreaService {
             long endTime = System.currentTimeMillis();
             System.out.println(">>>>>>>>------网络连通性测试完成!用时" + (endTime - startTime) / 1000 + "秒!结果:" + addressResult);
         } catch (Exception e) {
+            e.printStackTrace();
             System.err.println(">>>>>>>>------网络连通性测试结果:" + e);
         }
     }
@@ -167,7 +168,7 @@ public class AreaService {
         }
         amapAddressV3List.clear();
         if (amapAddressV3SaveList.size() > 0) {
-            amapAddressV3Service.saveAmapAddressV3(amapAddressV3List);
+            amapAddressV3Service.saveAmapAddressV3(amapAddressV3SaveList);
             amapAddressV3List.clear();
         }
     }