zhangnaisong
2024-03-08 9e062ae15051bb5af82aa9cbcd478ead2fb94813
ard-work/src/main/java/com/ruoyi/device/uav/service/UavService.java
@@ -1,5 +1,6 @@
package com.ruoyi.device.uav.service;
import com.alibaba.fastjson.JSON;
import com.dtflys.forest.exceptions.ForestNetworkException;
import com.dtflys.forest.exceptions.ForestRuntimeException;
import com.fasterxml.jackson.core.JsonProcessingException;
@@ -8,9 +9,14 @@
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.ConfigUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.device.uav.websocketclient.UAVWebsocketClient;
import com.ruoyi.sy.controller.ArdSyCarController;
import com.ruoyi.utils.forest.UavClient;
import lombok.extern.slf4j.Slf4j;
import okhttp3.*;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.collections4.map.HashedMap;
import org.java_websocket.WebSocket;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpMethod;
@@ -24,7 +30,9 @@
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Map;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.*;
@Service
@Slf4j(topic = "uav")
@@ -46,16 +54,31 @@
    private Map uavUser;//登录的用户信息
    private ObjectMapper om = new ObjectMapper();
    private Map<String, UAVWebsocketClient> UAVWebsocketClientMap = new HashedMap();
    private String token;
    private String workspaceId;
    @Autowired
    private UavClient uavClient;
    @Autowired
    private RedisCache redisCache;
    @Value("${uav.enabled}")
    private Boolean uavEnabled;
    @PostConstruct
    public void created() {
        if(!uavEnabled){//无人机加入开关
            return;
        }
        getUavConfig();
        this.login();
        //创建无人机Websocket客户端
        createWebsocketCients();
    }
    private void getUavConfig() {
@@ -63,6 +86,10 @@
        this.username = ConfigUtils.getConfigValue("uav_username");
        this.password = ConfigUtils.getConfigValue("uav_password");
        this.salt = ConfigUtils.getConfigValue("uav_salt");
        /*this.host = "http://112.98.126.2:6100/";
        this.username = "znstest";
        this.password = "znstest";
        this.salt = "0123456789012345";*/
        if (StringUtils.isEmpty(this.host) || StringUtils.isEmpty(this.username) || StringUtils.isEmpty(this.password) || StringUtils.isEmpty(this.salt)) {
            throw new RuntimeException("无人机参数配置缺失:");
        }
@@ -85,8 +112,12 @@
            String token = this.getToken();
            res = (String) requestMethod.invoke(this.uavClient, this.host + url, token, data);
        } catch (IllegalAccessException e) {
            System.out.println("doUavRequest 访问失败");
            System.out.println(url);
            log.error("doUavRequest 访问失败" + e.getMessage());
        } catch (InvocationTargetException e) {
            System.out.println("doUavRequest 执行失败");
            System.out.println(url);
            log.error("doUavRequest 执行失败" + e.getMessage());
            e.printStackTrace();
        }
@@ -107,12 +138,19 @@
            String res = uavClient.GET(this.host+"manage/api/v1/devices", token, "{}");
            res+="";
            //System.out.println(res);
            //token赋值
            this.token = token;
            this.workspaceId = (String) uavUser.get("workspace_id");
        } catch (ForestNetworkException fe) {
            if (fe.getStatusCode() == 401) {//token失效,重新登录
                this.login();
                //再次获取token
                uavUser = redisCache.getCacheMap("uav:uavUser");
                token = (String) uavUser.get("access_token");
                //token赋值
                this.token = token;
                this.workspaceId = (String) uavUser.get("workspace_id");
                return token;
            }
        }
@@ -130,7 +168,7 @@
            //uavClient.GET("logout", null, "{}");
            String res = uavClient.POST(this.host+"login", null, body);
            Map resMap = om.readValue(res, Map.class);
            if (resMap != null) {
            if (resMap != null&& resMap.get("data") instanceof Map) {
                redisCache.setCacheMap("uav:uavUser", (Map) resMap.get("data"));
            }
        } catch (ForestRuntimeException e) {
@@ -139,6 +177,367 @@
        } catch (JsonProcessingException e) {
        } catch (IOException e) {
        }
    }
    public void createWebsocketCients(){
        /*String ip = this.host.replace("http://", "");
        if(this.UAVWebsocketClientMap.get("status") != null && this.UAVWebsocketClientMap.get("control") != null){
            //无人机状态灭活
            UAVWebsocketClient uavStatusWebsocketClient = this.UAVWebsocketClientMap.get("status");
            uavStatusWebsocketClient.getHeartBeatTimer().cancel();
            uavStatusWebsocketClient.close();
            //无人机控制灭活
            UAVWebsocketClient uavControlWebsocketClient = this.UAVWebsocketClientMap.get("control");
            uavControlWebsocketClient.getHeartBeatTimer().cancel();
            uavControlWebsocketClient.close();
            this.UAVWebsocketClientMap.remove("status");
            this.UAVWebsocketClientMap.remove("control");
        }
        String uavStatusWsURL = "ws://" + ip + "api/v1/ws?x-auth-token=" + token;
        System.out.println(uavStatusWsURL);
        UAVWebsocketClient uavStatusWebsocketClient;
        try {
            uavStatusWebsocketClient = new UAVWebsocketClient(new URI(uavStatusWsURL));
            uavStatusWebsocketClient.connect();
            System.out.println("连接中。。。");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            if(!uavStatusWebsocketClient.getReadyState().equals(WebSocket.READYSTATE.OPEN)){
                uavStatusWebsocketClient.close();
                return;
            }
            Date date = new Date();
            Timer heartBeatTimer = new Timer();
            TimerTask heartBeatTask = new TimerTask(){
                public void run(){
                    Map<String,Object> para = new HashMap();
                    para.put("biz_code", "user_cmd");
                    para.put("version", "1.0");
                    Date date = new Date();
                    para.put("time_stamp", String.valueOf(date.getTime()));
                    Map<String,String> payload = new HashMap();
                    payload.put("timeStamp", String.valueOf(date.getTime()));
                    Map<String,Object> data = new HashMap();
                    data.put("dataHead", "0x7479");
                    data.put("cmdCode", "0x02");
                    data.put("payload", payload);
                    para.put("data", data);
                    try{
                        uavStatusWebsocketClient.send(JSON.toJSONString(para));
                        System.out.println("无人机状态心跳发送");
                    }catch(Exception e){
                        e.printStackTrace();
                        System.out.println(uavStatusWebsocketClient.getServerUri());
                    }
                }
            };
            uavStatusWebsocketClient.setHeartBeatTimer(heartBeatTimer);
            heartBeatTimer.scheduleAtFixedRate(heartBeatTask,date,10*1000);
            this.UAVWebsocketClientMap.put("status", uavStatusWebsocketClient);
        } catch (NumberFormatException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (URISyntaxException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        String uavControlWsURL = "ws://" + ip + "api/v1/ws/cmd?x-auth-token=" + token;
        System.out.println(uavControlWsURL);
        UAVWebsocketClient uavControlWebsocketClient;
        try {
            uavControlWebsocketClient = new UAVWebsocketClient(new URI(uavControlWsURL));
            uavControlWebsocketClient.connect();
            System.out.println("连接中。。。");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            if(!uavControlWebsocketClient.getReadyState().equals(WebSocket.READYSTATE.OPEN)){
                //无人机状态灭活
                UAVWebsocketClient uavStatusWebsocketClient0 =  this.UAVWebsocketClientMap.get("status");
                uavStatusWebsocketClient0.getHeartBeatTimer().cancel();
                uavStatusWebsocketClient0.close();
                uavControlWebsocketClient.close();
                return;
            }
            Date date = new Date();
            Timer heartBeatTimer = new Timer();
            TimerTask heartBeatTask = new TimerTask(){
                public void run(){
                    Map<String,Object> para = new HashMap();
                    para.put("biz_code", "user_cmd");
                    para.put("version", "1.0");
                    Date date = new Date();
                    para.put("time_stamp", String.valueOf(date.getTime()));
                    Map<String,String> payload = new HashMap();
                    payload.put("timeStamp", String.valueOf(date.getTime()));
                    Map<String,Object> data = new HashMap();
                    data.put("dataHead", "0x7479");
                    data.put("cmdCode", "0x02");
                    data.put("payload", payload);
                    para.put("data", data);
                    try{
                        uavControlWebsocketClient.send(JSON.toJSONString(para));
                        System.out.println("无人机控制心跳发送");
                    }catch(Exception e){
                        e.printStackTrace();
                        System.out.println(uavControlWebsocketClient.getServerUri());
                    }
                }
            };
            uavControlWebsocketClient.setHeartBeatTimer(heartBeatTimer);
            heartBeatTimer.scheduleAtFixedRate(heartBeatTask,date,10*1000);
            this.UAVWebsocketClientMap.put("control", uavControlWebsocketClient);
        } catch (NumberFormatException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (URISyntaxException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }*/
        String ip = this.host.replace("http://", "");
        Date date = new Date();
        Timer heartBeatTimer = new Timer();
        TimerTask heartBeatTask = new TimerTask(){
            public void run(){
                if(token != null){//判断是否为null
                    if(UAVWebsocketClientMap.get("status") != null && UAVWebsocketClientMap.get("control") != null){
                        String oldURL = UAVWebsocketClientMap.get("status").getServerUri().toString();
                        String oldToken = oldURL.split("x-auth-token=")[1];
                        if(!oldToken.equals(token)){//token更新从新创建客户端
                            //原客户端灭活
                            UAVWebsocketClientMap.get("status").close();//无人机状态灭活
                            UAVWebsocketClientMap.get("control").close();//无人机控制灭活
                            UAVWebsocketClientMap.remove("status");
                            UAVWebsocketClientMap.remove("control");
                            String uavStatusWsURL = "ws://" + ip + "api/v1/ws?x-auth-token=" + token;
                            UAVWebsocketClient uavStatusWebsocketClient = null;
                            try {
                                uavStatusWebsocketClient = new UAVWebsocketClient(new URI(uavStatusWsURL));
                                uavStatusWebsocketClient.connect();
                                System.out.println("连接中。。。");
                                try {
                                    Thread.sleep(1000);
                                } catch (InterruptedException e) {
                                    // TODO Auto-generated catch block
                                    e.printStackTrace();
                                }
                                if(!uavStatusWebsocketClient.getReadyState().equals(WebSocket.READYSTATE.OPEN)){
                                    uavStatusWebsocketClient.close();
                                    uavStatusWebsocketClient = null;
                                }
                            } catch (NumberFormatException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            } catch (URISyntaxException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                            String uavControlWsURL = "ws://" + ip + "api/v1/ws/cmd?x-auth-token=" + token;
                            UAVWebsocketClient uavControlWebsocketClient = null;
                            try {
                                uavControlWebsocketClient = new UAVWebsocketClient(new URI(uavControlWsURL));
                                uavControlWebsocketClient.connect();
                                System.out.println("连接中。。。");
                                try {
                                    Thread.sleep(1000);
                                } catch (InterruptedException e) {
                                    // TODO Auto-generated catch block
                                    e.printStackTrace();
                                }
                                if(!uavControlWebsocketClient.getReadyState().equals(WebSocket.READYSTATE.OPEN)){
                                    //无人机状态灭活
                                    UAVWebsocketClient uavStatusWebsocketClient0 =  UAVWebsocketClientMap.get("status");
                                    uavStatusWebsocketClient0.close();
                                    uavControlWebsocketClient.close();
                                    uavStatusWebsocketClient0 = null;
                                    uavControlWebsocketClient = null;
                                    //return;
                                }
                            } catch (NumberFormatException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            } catch (URISyntaxException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                            if(uavStatusWebsocketClient != null || uavControlWebsocketClient != null){
                                UAVWebsocketClientMap.put("status", uavStatusWebsocketClient);
                                UAVWebsocketClientMap.put("control", uavControlWebsocketClient);
                                Map<String,Object> para = new HashMap();
                                para.put("biz_code", "user_cmd");
                                para.put("version", "1.0");
                                Date date = new Date();
                                para.put("time_stamp", String.valueOf(date.getTime()));
                                Map<String,String> payload = new HashMap();
                                payload.put("timeStamp", String.valueOf(date.getTime()));
                                Map<String,Object> data = new HashMap();
                                data.put("dataHead", "0x7479");
                                data.put("cmdCode", "0x02");
                                data.put("payload", payload);
                                para.put("data", data);
                                try{
                                    uavStatusWebsocketClient.send(JSON.toJSONString(para));
                                    uavControlWebsocketClient.send(JSON.toJSONString(para));
                                    //System.out.println("无人机心跳发送");
                                }catch(Exception e){
                                    e.printStackTrace();
                                    System.out.println(uavStatusWebsocketClient.getServerUri());
                                    System.out.println(uavControlWebsocketClient.getServerUri());
                                    //无人机状态灭活
                                    uavStatusWebsocketClient = UAVWebsocketClientMap.get("status");
                                    uavStatusWebsocketClient.close();
                                    //无人机控制灭活
                                    uavControlWebsocketClient = UAVWebsocketClientMap.get("control");
                                    uavControlWebsocketClient.close();
                                    UAVWebsocketClientMap.remove("status");
                                    UAVWebsocketClientMap.remove("control");
                                }
                            }
                        }else{
                            Map<String,Object> para = new HashMap();
                            para.put("biz_code", "user_cmd");
                            para.put("version", "1.0");
                            Date date = new Date();
                            para.put("time_stamp", String.valueOf(date.getTime()));
                            Map<String,String> payload = new HashMap();
                            payload.put("timeStamp", String.valueOf(date.getTime()));
                            Map<String,Object> data = new HashMap();
                            data.put("dataHead", "0x7479");
                            data.put("cmdCode", "0x02");
                            data.put("payload", payload);
                            para.put("data", data);
                            UAVWebsocketClient uavStatusWebsocketClient = UAVWebsocketClientMap.get("status");
                            UAVWebsocketClient uavControlWebsocketClient = UAVWebsocketClientMap.get("control");
                            try{
                                uavStatusWebsocketClient.send(JSON.toJSONString(para));
                                uavControlWebsocketClient.send(JSON.toJSONString(para));
                                //System.out.println("无人机心跳发送");
                            }catch(Exception e){
                                e.printStackTrace();
                                System.out.println(uavStatusWebsocketClient.getServerUri());
                                System.out.println(uavControlWebsocketClient.getServerUri());
                                //无人机状态灭活
                                uavStatusWebsocketClient = UAVWebsocketClientMap.get("status");
                                uavStatusWebsocketClient.close();
                                //无人机控制灭活
                                uavControlWebsocketClient = UAVWebsocketClientMap.get("control");
                                uavControlWebsocketClient.close();
                                UAVWebsocketClientMap.remove("status");
                                UAVWebsocketClientMap.remove("control");
                            }
                        }
                    }else{
                        String uavStatusWsURL = "ws://" + ip + "api/v1/ws?x-auth-token=" + token;
                        System.out.println(uavStatusWsURL);
                        UAVWebsocketClient uavStatusWebsocketClient = null;
                        try {
                            uavStatusWebsocketClient = new UAVWebsocketClient(new URI(uavStatusWsURL));
                            uavStatusWebsocketClient.connect();
                            System.out.println("连接中。。。");
                            try {
                                Thread.sleep(1000);
                            } catch (InterruptedException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                            if(!uavStatusWebsocketClient.getReadyState().equals(WebSocket.READYSTATE.OPEN)){
                                uavStatusWebsocketClient.close();
                                uavStatusWebsocketClient = null;
                            }
                        } catch (NumberFormatException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        } catch (URISyntaxException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        String uavControlWsURL = "ws://" + ip + "api/v1/ws/cmd?x-auth-token=" + token;
                        System.out.println(uavControlWsURL);
                        UAVWebsocketClient uavControlWebsocketClient = null;
                        try {
                            uavControlWebsocketClient = new UAVWebsocketClient(new URI(uavControlWsURL));
                            uavControlWebsocketClient.connect();
                            System.out.println("连接中。。。");
                            try {
                                Thread.sleep(1000);
                            } catch (InterruptedException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                            if(!uavControlWebsocketClient.getReadyState().equals(WebSocket.READYSTATE.OPEN)){
                                //无人机状态灭活
                                UAVWebsocketClient uavStatusWebsocketClient0 =  UAVWebsocketClientMap.get("status");
                                uavStatusWebsocketClient0.close();
                                uavControlWebsocketClient.close();
                                uavStatusWebsocketClient0 = null;
                                uavControlWebsocketClient = null;
                            }
                        } catch (NumberFormatException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        } catch (URISyntaxException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        if(uavStatusWebsocketClient != null || uavControlWebsocketClient != null){
                            UAVWebsocketClientMap.put("status", uavStatusWebsocketClient);
                            UAVWebsocketClientMap.put("control", uavControlWebsocketClient);
                            Map<String,Object> para = new HashMap();
                            para.put("biz_code", "user_cmd");
                            para.put("version", "1.0");
                            Date date = new Date();
                            para.put("time_stamp", String.valueOf(date.getTime()));
                            Map<String,String> payload = new HashMap();
                            payload.put("timeStamp", String.valueOf(date.getTime()));
                            Map<String,Object> data = new HashMap();
                            data.put("dataHead", "0x7479");
                            data.put("cmdCode", "0x02");
                            data.put("payload", payload);
                            para.put("data", data);
                            try{
                                uavStatusWebsocketClient.send(JSON.toJSONString(para));
                                uavControlWebsocketClient.send(JSON.toJSONString(para));
                                //System.out.println("无人机心跳发送");
                            }catch(Exception e){
                                e.printStackTrace();
                                System.out.println(uavStatusWebsocketClient.getServerUri());
                                System.out.println(uavControlWebsocketClient.getServerUri());
                                //无人机状态灭活
                                uavStatusWebsocketClient = UAVWebsocketClientMap.get("status");
                                uavStatusWebsocketClient.close();
                                //无人机控制灭活
                                uavControlWebsocketClient = UAVWebsocketClientMap.get("control");
                                uavControlWebsocketClient.close();
                                UAVWebsocketClientMap.remove("status");
                                UAVWebsocketClientMap.remove("control");
                            }
                        }
                    }
                }
            }
        };
        heartBeatTimer.scheduleAtFixedRate(heartBeatTask,date,10*1000);
    }
@@ -162,4 +561,260 @@
        }
        return new Base64().encodeToString(encrypted);//此处使用BASE64做转码功能,同时能起到2次加密的作用。
    }
    public Object checkPointValid(String url, Map<String,Map<String,Object>> data) {
        String token = this.getToken();
        url = this.host + url;
        Map<String,Object> resultMap = checkPointValid(url,token, data);
        return resultMap;
    }
    public Map<String,Object> checkPointValid(String url,String access_token,Map<String,Map<String,Object>> map){
        MediaType mediaType = MediaType.parse("application/json; charset=utf-8");
        OkHttpClient okHttpClient = new OkHttpClient();
        RequestBody body = RequestBody.create(mediaType, JSON.toJSONString(map));
        Request request = new Request.Builder().url(url).post(body).addHeader("x-auth-token",access_token).build();
        Response response = null;
        try {
            response = okHttpClient.newCall(request).execute();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        ResponseBody responseBody = response.body();
        try {
            String message = responseBody.string();// 响应体
            Map<String,Object> map0 = (Map<String, Object>) JSON.parse(message);
            return map0;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return new HashMap();
        }
    }
    public Object checkLineValid(String url, Map<String,List<Map<String,String>>> data) {
        String token = this.getToken();
        url = this.host + url;
        Map<String,Object> resultMap = checkLineValid(url,token, data);
        return resultMap;
    }
    public Map<String,Object> checkLineValid(String url,String access_token,Map<String,List<Map<String,String>>> map){
        MediaType mediaType = MediaType.parse("application/json; charset=utf-8");
        OkHttpClient okHttpClient = new OkHttpClient();
        RequestBody body = RequestBody.create(mediaType, JSON.toJSONString(map));
        Request request = new Request.Builder().url(url).post(body).addHeader("x-auth-token",access_token).build();
        Response response = null;
        try {
            response = okHttpClient.newCall(request).execute();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        ResponseBody responseBody = response.body();
        try {
            String message = responseBody.string();// 响应体
            Map<String,Object> map0 = (Map<String, Object>) JSON.parse(message);
            return map0;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return new HashMap();
        }
    }
    public String getWorkspaceId(){
        String token = this.getToken();
        return this.workspaceId;
    }
    public Object addWaylinesPlanning(String url, Map<String,Object> data) {
        String token = this.getToken();
        url = this.host + url;
        Map<String,Object> resultMap = addWaylinesPlanning(url,token, data);
        return resultMap;
    }
    public Map<String,Object> addWaylinesPlanning(String url,String access_token,Map<String,Object> map){
        MediaType mediaType = MediaType.parse("application/json; charset=utf-8");
        OkHttpClient okHttpClient = new OkHttpClient();
        RequestBody body = RequestBody.create(mediaType, JSON.toJSONString(map));
        Request request = new Request.Builder().url(url).post(body).addHeader("x-auth-token",access_token).build();
        Response response = null;
        try {
            response = okHttpClient.newCall(request).execute();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        ResponseBody responseBody = response.body();
        try {
            String message = responseBody.string();// 响应体
            Map<String,Object> map0 = (Map<String, Object>) JSON.parse(message);
            return map0;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return new HashMap();
        }
    }
    public Object deleteWaylinesPlanning(String url, Map<String,String> data) {
        String token = this.getToken();
        String waylineId = data.get("waylineId");
        url = this.host + url + waylineId;
        Map<String,Object> resultMap = deleteWaylinesPlanning(url,token);
        return resultMap;
    }
    public static Map<String,Object> deleteWaylinesPlanning(String url,String access_token){
        OkHttpClient okHttpClient = new OkHttpClient();
        Request request = new Request.Builder().url(url).delete().addHeader("x-auth-token",access_token).build();
        Response response = null;
        try {
            response = okHttpClient.newCall(request).execute();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        ResponseBody responseBody = response.body();
        try {
            String message = responseBody.string();// 响应体
            Map<String,Object> map0 = (Map<String, Object>) JSON.parse(message);
            return map0;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return new HashMap();
        }
    }
    public Object updateWaylinesPlanning(String url, Map<String,Object> data) {
        String token = this.getToken();
        url = this.host + url;
        Map<String,Object> resultMap = updateWaylinesPlanning(url,token, data);
        return resultMap;
    }
    public Map<String,Object> updateWaylinesPlanning(String url,String access_token,Map<String,Object> map){
        MediaType mediaType = MediaType.parse("application/json; charset=utf-8");
        OkHttpClient okHttpClient = new OkHttpClient();
        RequestBody body = RequestBody.create(mediaType, JSON.toJSONString(map));
        Request request = new Request.Builder().url(url).post(body).addHeader("x-auth-token",access_token).build();
        Response response = null;
        try {
            response = okHttpClient.newCall(request).execute();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        ResponseBody responseBody = response.body();
        try {
            String message = responseBody.string();// 响应体
            Map<String,Object> map0 = (Map<String, Object>) JSON.parse(message);
            return map0;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return new HashMap();
        }
    }
    public Object addAlarm(String url, Map<String,Object> data) {
        String token = this.getToken();
        url = this.host + url;
        data.put("userName",this.username);
        Map<String,Object> resultMap = addAlarm(url,token, data);
        return resultMap;
    }
    public Map<String,Object> addAlarm(String url,String access_token,Map<String,Object> map){
        MediaType mediaType = MediaType.parse("application/json; charset=utf-8");
        OkHttpClient okHttpClient = new OkHttpClient();
        RequestBody body = RequestBody.create(mediaType, JSON.toJSONString(map));
        Request request = new Request.Builder().url(url).post(body).addHeader("x-auth-token",access_token).build();
        Response response = null;
        try {
            response = okHttpClient.newCall(request).execute();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        ResponseBody responseBody = response.body();
        try {
            String message = responseBody.string();// 响应体
            Map<String,Object> map0 = (Map<String, Object>) JSON.parse(message);
            return map0;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return new HashMap();
        }
    }
    public Object saveCurrentGroup(String url, Map<String,Object> data) {
        String token = this.getToken();
        url = this.host + url;
        Map<String,Object> resultMap = addWaylinesPlanning(url,token, data);
        return resultMap;
    }
    public Map<String,Object> saveCurrentGroup(String url,String access_token,Map<String,Object> map){
        MediaType mediaType = MediaType.parse("application/json; charset=utf-8");
        OkHttpClient okHttpClient = new OkHttpClient();
        RequestBody body = RequestBody.create(mediaType, JSON.toJSONString(map));
        Request request = new Request.Builder().url(url).post(body).addHeader("x-auth-token",access_token).build();
        Response response = null;
        try {
            response = okHttpClient.newCall(request).execute();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        ResponseBody responseBody = response.body();
        try {
            String message = responseBody.string();// 响应体
            Map<String,Object> map0 = (Map<String, Object>) JSON.parse(message);
            return map0;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return new HashMap();
        }
    }
}