From 711e8da0ccf406ec77ff069458a09278ca4a0a9f Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期一, 13 一月 2025 17:30:45 +0800 Subject: [PATCH] 自动数据上传修改 --- ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDMapElectricFenceUtil.java | 104 +++++++++++++++++++++++++++------------------------ 1 files changed, 55 insertions(+), 49 deletions(-) diff --git a/ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDMapElectricFenceUtil.java b/ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDMapElectricFenceUtil.java index c26d444..3255227 100644 --- a/ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDMapElectricFenceUtil.java +++ b/ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDMapElectricFenceUtil.java @@ -51,11 +51,12 @@ /** * 创建电子围栏 + * * @param id * @param points * @return */ - public List<String> createFence(String id, String points){ + public List<String> createFence(String id, String points) { Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH) + 35); @@ -66,14 +67,14 @@ //开始调用高德接口创建围栏 String[] s = points.split("_"); List<String> resoult = new ArrayList<>(); - for(int i = 0; i < s.length; i++){ + for (int i = 0; i < s.length; i++) { String[] split = s[i].split(";"); JSONObject json = new JSONObject(); json.put("name", "location_" + id); - if(split.length == 2){ + if (split.length == 2) { json.put("center", split[0]); json.put("radius", split[1]); - }else{ + } else { json.put("points", s[i]); } json.put("enable", "true"); @@ -96,7 +97,7 @@ gdInterfaceService.saveData("https://restapi.amap.com/v4/geofence/meta", "创建电子围栏"); - if(status.equals("0")){//创建成功 + if (status.equals("0")) {//创建成功 resoult.add(data.getString("gid")); } } @@ -104,21 +105,20 @@ } - - /** * 创建电子围栏 - * @param id 围栏名称----绘制的数据id值 - * @param points 多边形围栏坐标 + * + * @param id 围栏名称----绘制的数据id值 + * @param points 多边形围栏坐标 */ - public List<String> createElectricFenc(String id, String points){ + public List<String> createElectricFenc(String id, String points) { List<String> fence = this.createFence(id, points); List<String> gids = new ArrayList<>(); - for(String f : fence){ + for (String f : fence) { JSONObject jsonObject = JSON.parseObject(f); JSONObject data = jsonObject.getJSONObject("data"); String status = data.getString("status"); - if(status.equals("0")){ + if (status.equals("0")) { gids.add(data.getString("gid")); } } @@ -128,27 +128,27 @@ /** * 查询 + * * @param gid * @return */ - public String findElectricFenc(String gid){ + public String findElectricFenc(String gid) { String url = "https://restapi.amap.com/v4/geofence/meta?key=" + key + "&gid=" + gid; String forObject = restTemplate.getForObject(url, String.class); JSONObject jsonObject = JSON.parseObject(forObject); JSONObject data = jsonObject.getJSONObject("data"); JSONArray rs_list = data.getJSONArray("rs_list"); - if(rs_list.size() > 0){ + if (rs_list.size() > 0) { return rs_list.getJSONObject(0).getString("gid"); } return ""; } - /** * 查询以创建的所有电子围栏 */ - public String findElectricFenc(String center, String radius, String points){ + public String findElectricFenc(String center, String radius, String points) { String url = "https://restapi.amap.com/v4/geofence/meta?key=" + key; String forObject = restTemplate.getForObject(url, String.class); JSONObject jsonObject = JSON.parseObject(forObject); @@ -156,20 +156,20 @@ gdInterfaceService.saveData("https://restapi.amap.com/v4/geofence/meta", "查询电子围栏"); - if(ToolUtil.isNotEmpty(center)){//圆形电子围栏 + if (ToolUtil.isNotEmpty(center)) {//圆形电子围栏 JSONArray rs_list = data.getJSONArray("rs_list"); - for(int i = 0; i < rs_list.size(); i++){ + for (int i = 0; i < rs_list.size(); i++) { String c = rs_list.getJSONObject(i).getString("center"); Double r = rs_list.getJSONObject(i).getDouble("radius"); - if(c.equals(center) && radius.equals(String.valueOf(r))){ + if (c.equals(center) && radius.equals(String.valueOf(r))) { return rs_list.getJSONObject(i).getString("gid"); } } - }else{ + } else { JSONArray rs_list = data.getJSONArray("rs_list"); - for(int i = 0; i < rs_list.size(); i++){ + for (int i = 0; i < rs_list.size(); i++) { String p = rs_list.getJSONObject(i).getString("points"); - if(points.equals(p)){ + if (points.equals(p)) { return rs_list.getJSONObject(i).getString("gid"); } } @@ -180,10 +180,11 @@ /** * 查询所有绘制好的电子围栏 + * * @return */ - public JSONArray findAllElectricFenc(int page){ - if(page == 1){ + public JSONArray findAllElectricFenc(int page) { + if (page == 1) { jsonArray = new JSONArray(); } String url = "https://restapi.amap.com/v4/geofence/meta?key=" + key + "&page_no=" + page + "&page_size=" + 30; @@ -197,7 +198,7 @@ //判断是否有分页 int total_record = data.getIntValue("total_record"); - if(total_record > jsonArray.size()){ + if (total_record > jsonArray.size()) { //有分页,递归调用自己 page++; this.findAllElectricFenc(page); @@ -208,13 +209,14 @@ /** * 批量更新电子围栏(失效的数据) + * * @param jsonArray * @throws ParseException */ - public void updateElectricFenc(JSONArray jsonArray) throws ParseException{ + public void updateElectricFenc(JSONArray jsonArray) throws ParseException { //批量更新查询出的失效的电子围栏,围栏失效日期在当前日期之后的数据 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - for(int i = 0; i < jsonArray.size(); i++){ + for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); @@ -233,7 +235,7 @@ cale.set(Calendar.SECOND, 0); cale.set(Calendar.MILLISECOND, 0); long timeInMillis = cale.getTimeInMillis(); - if(timeInMillis1 >= timeInMillis){ + if (timeInMillis1 >= timeInMillis) { String gid = jsonObject.getString("gid"); String id = jsonObject.getString("name"); String center = jsonObject.getString("center"); @@ -251,9 +253,9 @@ } - /** * 更新电子围栏 + * * @param gid * @param id * @param center @@ -264,10 +266,10 @@ //开始调用高德接口创建围栏 JSONObject json = new JSONObject(); json.put("name", id); - if(ToolUtil.isNotEmpty(center)){ + if (ToolUtil.isNotEmpty(center)) { json.put("center", center); json.put("radius", radius); - }else{ + } else { json.put("points", points); } json.put("valid_time", valid_time); @@ -291,6 +293,7 @@ /** * 电子围栏监控 + * * @param diu 设备唯一标识符,作为记录依据,不影响判断结果。Android设备一般使用imei号码,iOS一般使用idfv号,其余设备可根据业务自定义。 * @param locations 数据为坐标数据和坐标产生的时间戳数据,至少包含一个坐标对和时间戳。 * 1、传入1个点时,直接判断交互关系。 @@ -299,8 +302,8 @@ * 动态交互判断方法:第一个点作为当前时间的点,然后从其余点中选出在当前点之前10s~1小时范围内的最早点,用这两个时间点的位置判断设备与围栏的动态交互关系。若数据无效交互关系默认返回leave。 * @return */ - public List<String> monitorElectricFenc(String diu, String locations){ - if(ToolUtil.isEmpty(diu)){ + public List<String> monitorElectricFenc(String diu, String locations) { + if (ToolUtil.isEmpty(diu)) { diu = "B78F99DD-2496-4A43-843B-172CDA2D9798"; } locations = locations + "," + (new Date().getTime() / 1000); @@ -310,11 +313,11 @@ List<String> ids = new ArrayList<>(); JSONObject data = jsonObject.getJSONObject("data"); int status = data.getIntValue("status"); - if(0 == status){ + if (0 == status) { JSONArray fencingEventList = data.getJSONArray("fencing_event_list"); - for(int i = 0; i < fencingEventList.size(); i++){ + for (int i = 0; i < fencingEventList.size(); i++) { String clientStatus = fencingEventList.getJSONObject(i).getString("client_status"); - if(clientStatus.equals("in")){//包含给定坐标的电子围栏 + if (clientStatus.equals("in")) {//包含给定坐标的电子围栏 JSONObject fence_info = fencingEventList.getJSONObject(i).getJSONObject("fence_info");//获取电子围栏信息 String gid = fence_info.getString("fence_gid"); ids.add(gid); @@ -330,12 +333,13 @@ /** * 删除电子围栏 + * * @param gid * @return */ - public boolean deleteElectricFenc(String gid){ + public boolean deleteElectricFenc(String gid) { restTemplate.delete("https://restapi.amap.com/v4/geofence/meta?key={1}&gid={2}", key, gid); - System.out.println("删除:" ); + System.out.println("删除:"); gdInterfaceService.saveData("https://restapi.amap.com/v4/geofence/meta", "删除电子围栏"); @@ -345,12 +349,13 @@ /** * 获取两点的距离 - * @param origins 起点坐标 - * @param destination 终点坐标 - * @param type 计算类型:0:直线距离 1:驾车导航距离(仅支持国内坐标)。 + * + * @param origins 起点坐标 + * @param destination 终点坐标 + * @param type 计算类型:0:直线距离 1:驾车导航距离(仅支持国内坐标)。 * @return */ - public Map<String, String> getDistance(String origins, String destination, Integer type){ + public Map<String, String> getDistance(String origins, String destination, Integer type) { String url = "https://restapi.amap.com/v3/distance?key=" + key + "&origins=" + origins + "&destination=" + destination + "&type=" + type; String forObject = restTemplate.getForObject(url, String.class); @@ -359,14 +364,14 @@ gdInterfaceService.saveData("https://restapi.amap.com/v3/distance", "查询两点间的距离"); - if(status.equals("1")){ + if (status.equals("1")) { JSONArray results = jsonObject.getJSONArray("results"); JSONObject jsonObject1 = results.getJSONObject(0); Map<String, String> map = new HashMap<>(); map.put("distance", jsonObject1.getString("distance"));//距离(米) map.put("duration", jsonObject1.getString("duration"));//预计时间(秒) return map; - }else{ + } else { System.err.println(forObject); } return null; @@ -375,12 +380,13 @@ /** * 获取路径规划 - * @param origins 起点坐标 - * @param destination 终点坐标 - * @param waypoints 途经点 + * + * @param origins 起点坐标 + * @param destination 终点坐标 + * @param waypoints 途经点 * @return */ - public Map<String, String> getDriving(String origins, String destination, String waypoints){ + public Map<String, String> getDriving(String origins, String destination, String waypoints) { String url = "https://restapi.amap.com/v3/direction/driving?key=" + key + "&origin=" + origins + "&destination=" + destination + "&waypoints=" + waypoints + "&extensions=base&strategy=0"; String forObject = restTemplate.getForObject(url, String.class); @@ -389,7 +395,7 @@ gdInterfaceService.saveData("https://restapi.amap.com/v3/direction/driving", "获取路径规划"); - if(status.equals("1")){ + if (status.equals("1")) { JSONObject route = jsonObject.getJSONObject("route"); JSONArray results = route.getJSONArray("paths"); JSONObject jsonObject1 = results.getJSONObject(0); -- Gitblit v1.7.1