lyhzzz 2 gadi atpakaļ
vecāks
revīzija
80eb83ce9e

+ 8 - 2
src/main/java/com/fdkankan/manage/service/impl/SceneProServiceImpl.java

@@ -240,10 +240,16 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
                     AddressComponent addressComponent = null;
                     if(redisUtil.hasKey(rediskey)){
                         String s = redisUtil.get(rediskey);
-                        addressComponent = JSONObject.parseObject(s, AddressComponent.class);
+                        if(StringUtils.isNotBlank(s)){
+                            addressComponent = JSONObject.parseObject(s, AddressComponent.class);
+                        }
                     }else {
                         addressComponent = ProvinceUtils.pointsToLocationsAll(points);
-                        redisUtil.set(String.format(RedisKeyUtil.gpsKey,points),JSONObject.toJSONString(addressComponent));
+                        if(addressComponent != null){
+                            redisUtil.set(String.format(RedisKeyUtil.gpsKey,points),JSONObject.toJSONString(addressComponent));
+                        }else {
+                            redisUtil.set(String.format(RedisKeyUtil.gpsKey,points),"");
+                        }
                     }
                     record.setAddressComponent(addressComponent);
                 }

+ 39 - 38
src/main/java/com/fdkankan/manage/util/ProvinceUtils.java

@@ -70,45 +70,46 @@ public class ProvinceUtils {
         //将GPS坐标转化为高德地图坐标的URL后再去请求位置信息
         try {
             points = URLEncoder.encode(points,"UTF-8");
-        } catch (UnsupportedEncodingException e) {
-            throw new RuntimeException(e.getMessage());
-        }
-        String convertUrl =
-                "https://restapi.amap.com/v3/assistant/coordinate/convert?locations="+points+"&coordsys=gps&key="+amapKey;
-        //GPS坐标转为高德地图坐标
-        String s = HttpUtil.get(convertUrl);
-        JSONObject jsonObject = JSON.parseObject(s);
-        String status = (String) jsonObject.get("status");
-        if(Objects.equals(status,"0")){
-            throw new RuntimeException("远程调用经纬度转化出错");
-        }
-        String locations = (String) jsonObject.get("locations");
-        String formattedAmapPoints = null;
-        try {
-            formattedAmapPoints = URLEncoder.encode(locations.replaceAll(";", "|"), "UTF-8");
-        } catch (UnsupportedEncodingException e) {
-            throw new RuntimeException(e.getMessage());
-        }
-        String locationUrl = "https://restapi.amap.com/v3/geocode/regeo?output=json&location="+formattedAmapPoints+"&key="+amapKey+"&radius=1000&batch=true";
-        String s1 = HttpUtil.get(locationUrl);
-        System.out.println(s1);
-        //获取转地址后的结果
-        JSONObject parseObject = JSON.parseObject(s1);
-        String status1 = (String) parseObject.get("status");
-        if(Objects.equals(status1,"0")){
-            throw new RuntimeException("根据经纬度获取具体地址出错");
-        }
-        JSONArray regeocodes = parseObject.getJSONArray("regeocodes");
-        String formattedAddress = "";
-        AddressComponent addressComponent = null;
-        for (Object regeocode : regeocodes) {
-            JSONObject object = (JSONObject) regeocode;
-            formattedAddress = (String)object.get("formatted_address");
-            String addressComponentStr = (String)object.get("addressComponent");
-            addressComponent = JSONObject.parseObject(addressComponentStr, AddressComponent.class);
+            String convertUrl =
+                    "https://restapi.amap.com/v3/assistant/coordinate/convert?locations="+points+"&coordsys=gps&key="+amapKey;
+            //GPS坐标转为高德地图坐标
+            String s = HttpUtil.get(convertUrl);
+            JSONObject jsonObject = JSON.parseObject(s);
+            String status = (String) jsonObject.get("status");
+            if(Objects.equals(status,"0")){
+                throw new RuntimeException("远程调用经纬度转化出错");
+            }
+            String locations = (String) jsonObject.get("locations");
+            String formattedAmapPoints = null;
+            try {
+                formattedAmapPoints = URLEncoder.encode(locations.replaceAll(";", "|"), "UTF-8");
+            } catch (UnsupportedEncodingException e) {
+                throw new RuntimeException(e.getMessage());
+            }
+            String locationUrl = "https://restapi.amap.com/v3/geocode/regeo?output=json&location="+formattedAmapPoints+"&key="+amapKey+"&radius=1000&batch=true";
+            String s1 = HttpUtil.get(locationUrl);
+            System.out.println(s1);
+            //获取转地址后的结果
+            JSONObject parseObject = JSON.parseObject(s1);
+            String status1 = (String) parseObject.get("status");
+            if(Objects.equals(status1,"0")){
+                throw new RuntimeException("根据经纬度获取具体地址出错");
+            }
+            JSONArray regeocodes = parseObject.getJSONArray("regeocodes");
+            String formattedAddress = "";
+            AddressComponent addressComponent = null;
+            for (Object regeocode : regeocodes) {
+                JSONObject object = (JSONObject) regeocode;
+                formattedAddress = (String)object.get("formatted_address");
+                JSONObject jsonObject1 = (JSONObject) object.get("addressComponent");
+                addressComponent = JSONObject.toJavaObject(jsonObject1, AddressComponent.class);
+            }
+            log.info("经纬度【{}】转化为具体地点【{}】",points,formattedAddress);
+            return addressComponent;
+        } catch (Exception e) {
+            log.info("经纬度转换错误error:{}",e);
         }
-        log.info("经纬度【{}】转化为具体地点【{}】",points,formattedAddress);
-        return addressComponent;
+        return null;
     }
 
 }