Kaynağa Gözat

update: 修改定位功能

wulianwei 1 yıl önce
ebeveyn
işleme
fd990f4f99

+ 12 - 2
src/main/java/com/tuoren/forward/config/amqp/AmqpClient1.java

@@ -187,8 +187,18 @@ public class AmqpClient1 {
             }
             if(ci > 0 && lac>0) {
             	String location = remoteUtil.localtion(String.valueOf(ci), String.valueOf(lac));
-            	localJson =  JSONObject.parseObject(location);
-            	items.put("location", localJson);
+            	if(!StringUtils.isEmpty(location)) {
+            		localJson =  JSONObject.parseObject(location);
+            		log.info("设备原始地址:"+localJson.toString());
+            		String newPoint = remoteUtil.getBaiduPoint(localJson.getString("lng"),localJson.getString("lat"));
+                	if(!StringUtils.isEmpty(newPoint)) {
+                		JSONObject pointJson =  JSONObject.parseObject(newPoint);
+                		localJson.put("lng", pointJson.getString("lng"));
+                		localJson.put("lat", pointJson.getString("lat"));
+                		log.info("设备转换地址:"+localJson.toString());
+                	}
+                	items.put("location", localJson);
+            	}
             }
             if(StringUtils.isEmpty(hospitalCode)) {
 //            	String sql = "SELECT h.code FROM bus_hospital h  inner join bus_device d on d.tenant_id = h.tenant_id where device_id=? limit 1";

+ 12 - 2
src/main/java/com/tuoren/forward/config/amqp/AmqpClient2.java

@@ -187,8 +187,18 @@ public class AmqpClient2 {
             }
             if(ci > 0 && lac>0) {
             	String location = remoteUtil.localtion(String.valueOf(ci), String.valueOf(lac));
-            	localJson =  JSONObject.parseObject(location);
-            	items.put("location", localJson);
+            	if(!StringUtils.isEmpty(location)) {
+            		localJson =  JSONObject.parseObject(location);
+            		log.info("设备原始地址:"+localJson.toString());
+            		String newPoint = remoteUtil.getBaiduPoint(localJson.getString("lng"),localJson.getString("lat"));
+                	if(!StringUtils.isEmpty(newPoint)) {
+                		JSONObject pointJson =  JSONObject.parseObject(newPoint);
+                		localJson.put("lng", pointJson.getString("lng"));
+                		localJson.put("lat", pointJson.getString("lat"));
+                		log.info("设备转换地址:"+localJson.toString());
+                	}
+                	items.put("location", localJson);
+            	}
             }
             if(StringUtils.isEmpty(hospitalCode)) {
 //            	String sql = "SELECT h.code FROM bus_hospital h  inner join bus_device d on d.tenant_id = h.tenant_id where device_id=? limit 1";

+ 26 - 0
src/main/java/com/tuoren/forward/util/RemoteUtil.java

@@ -10,6 +10,7 @@ import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
 import org.springframework.web.client.RestTemplate;
 
+import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
 
 @Component
@@ -42,6 +43,31 @@ public class RemoteUtil {
 		return "";
 	}
 	
+	public String getBaiduPoint(String lng,String lat) {
+		HttpHeaders headers = new HttpHeaders();
+	    headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
+	    
+	    MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
+	    map.add("coords", lng+","+lat);
+	    map.add("model", "1");
+	    map.add("ak","UZyauBmbunmSuxGmKedUXmrkNjq5WVKr");
+	    
+	    HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(map, headers);
+	    
+		String result = restTemplate.postForObject("https://api.map.baidu.com/geoconv/v2/", request, String.class);
+		System.out.println("result========="+result);
+		JSONObject json = JSONObject.parseObject(result);
+		if(json.containsKey("result")) {
+			JSONArray array = json.getJSONArray("result");
+			if(array.size()>0) {
+				JSONObject record = array.getJSONObject(0);
+				return record.toString();
+			}
+			return "";
+		}
+		return "";
+	}
+	
 	public String getHospitalCode(String mac) {
 
 	    HttpEntity<String> request = new HttpEntity<String>(mac);