EdriveDataUtil.java 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. package cn.com.lzt.car.data;
  2. import cn.com.lzt.common.util.HttpClientUtils;
  3. import cn.com.lzt.message.send.util.MD5;
  4. import cn.com.lzt.tools.ServerType;
  5. import org.apache.commons.collections.map.HashedMap;
  6. import org.apache.commons.lang3.StringUtils;
  7. import org.apache.commons.logging.Log;
  8. import org.apache.commons.logging.LogFactory;
  9. import org.apache.http.client.config.RequestConfig;
  10. import org.codehaus.jackson.map.ObjectMapper;
  11. import java.io.IOException;
  12. import java.util.Collections;
  13. import java.util.HashMap;
  14. import java.util.Map;
  15. /**
  16. * 翼卡车辆数据
  17. */
  18. public class EdriveDataUtil {
  19. private static String BASEURL="http://edrive.e-car.cn/api_v1";
  20. // for test
  21. //http://edrivetest.e-car.cn/api_v1/vehicle
  22. private static final String APPID="YJbl2s4um9";
  23. private static final String SECRETKEY="2786f8dkv77qj5x4a4p5jd54wufp7ay2";
  24. private static ObjectMapper mapper = new ObjectMapper();
  25. private static Log log = LogFactory.getLog(EdriveDataUtil.class);
  26. static{
  27. if(ServerType.getServerType()==ServerType.test){
  28. BASEURL = "http://edrivetest.e-car.cn/api_v1";
  29. }
  30. }
  31. //
  32. public static void main(String[] args){
  33. // 19000211397 对方提供测试
  34. // 己方 21108989226 沪T-00002
  35. // 21108989090
  36. String vehicleNo = "21108989226";
  37. // status(vehicleNo);
  38. // alarm(vehicleNo,"2020-01-01 00:00:01","2020-06-23 23:59:59");
  39. // gpsTrip(vehicleNo,"2020-06-21 00:00:01","2020-06-23 23:59:59");
  40. //363211089890906
  41. gpsHistroy(vehicleNo,"2020-06-21 00:00:01","2020-06-23 23:59:59");
  42. // shootCommend(vehicleNo);
  43. // playCommend(vehicleNo,"play");
  44. // commendResult("shoot",23782);
  45. // shoot(vehicleNo);
  46. }
  47. public static void shoot(String vehicleNo){
  48. Map<String,Object> scMap = shootCommend(vehicleNo);
  49. Integer cmdId = Integer.valueOf(scMap.get("data").toString());
  50. commendResult("shoot", cmdId);
  51. }
  52. public static Map<String, Object> shootCommend(String vehicleNo){
  53. return commandSend(vehicleNo,"1","shoot","1");
  54. }
  55. public static void playCommend(String vehicleNo,String actionCmd){
  56. commandSend(vehicleNo,"1","play",actionCmd);
  57. }
  58. //命令结果
  59. private static void commendResult(String commendType,Integer commendId){
  60. String url = BASEURL+"/command/result";
  61. Map<String,Object> contentMap = new HashedMap();
  62. contentMap.put("cmdId",commendId);
  63. contentMap.put("cmdType",commendType);
  64. post(url,contentMap);
  65. }
  66. /**
  67. * @param vehicleNo 设备编号
  68. * @param channelNo 通道
  69. * @param cmdType 命令类型: play 播放,shoot 拍摄
  70. * @param action 如果play play 播放,stop 停止,如果shoot: 1拍照
  71. */
  72. private static Map<String, Object> commandSend(String vehicleNo, String channelNo, String cmdType, String action){
  73. String url = BASEURL+"/command/send";
  74. Map<String,Object> contentMap = new HashedMap();
  75. contentMap.put("vehicleNo",vehicleNo);
  76. contentMap.put("channelNo",channelNo);
  77. String cmdTypeString="";
  78. if(StringUtils.equals(cmdType, "shoot")){
  79. cmdTypeString="shoot";
  80. }else if(StringUtils.equals(cmdType, "play")){
  81. cmdTypeString="play";
  82. }
  83. try {
  84. contentMap.put(cmdTypeString,mapper.writeValueAsString(Collections.singletonMap("action",action)));
  85. } catch (IOException e) {
  86. e.printStackTrace();
  87. }
  88. contentMap.put("cmdType", cmdType);
  89. return post(url,contentMap);
  90. }
  91. //车辆定位历史
  92. public static void gpsHistroy(String vehicleNo,String startTime,String endTime){
  93. String url = BASEURL+"/gps/history";
  94. Map<String,Object> contentMap = new HashedMap();
  95. contentMap.put("vehicleNo",vehicleNo);
  96. contentMap.put("startTime",startTime);
  97. contentMap.put("endTime",endTime);
  98. post(url,contentMap);
  99. }
  100. //车辆形成历史
  101. public static void gpsTrip(String vehicleNo,String startTime,String endTime){
  102. String url = BASEURL+"/gps/trip";
  103. Map<String,Object> contentMap = new HashedMap();
  104. contentMap.put("vehicleNo",vehicleNo);
  105. contentMap.put("startTime",startTime);
  106. contentMap.put("endTime",endTime);
  107. post(url,contentMap);
  108. }
  109. //车辆状态
  110. public static void alarm(String vehicleNo,String startTime,String endTime){
  111. String url = BASEURL+"/vehicle/alarm";
  112. Map<String,Object> contentMap = new HashedMap();
  113. contentMap.put("vehicleNo",vehicleNo);
  114. contentMap.put("startTime",startTime);
  115. contentMap.put("endTime",endTime);
  116. post(url,contentMap);
  117. }
  118. //车辆状态
  119. public static void status(String vehicleNo){
  120. String url = BASEURL+"/vehicle/status";
  121. Map<String,Object> contentMap = new HashedMap();
  122. contentMap.put("vehicleNo",vehicleNo);
  123. post(url,contentMap);
  124. }
  125. private static Map<String,Object> post(String url,Map<String,Object> contentMap){
  126. try {
  127. Map<String,String> paramsMap = sign(contentMap);
  128. String backString = HttpClientUtils.sendHttpPost(url,paramsMap);
  129. if(log.isDebugEnabled()){
  130. log.debug("post:"+url+",response:"+backString);
  131. }
  132. System.out.println("post:"+url+",content:"+paramsMap.get("content")+",response:"+backString);
  133. Map<String,Object> map = mapper.readValue(backString, Map.class);
  134. return map;
  135. } catch (IOException e) {
  136. e.printStackTrace();
  137. }
  138. return null;
  139. }
  140. private static Map<String,String> sign(Map<String,Object> contentMap) throws IOException {
  141. long timestamp = System.currentTimeMillis();
  142. String content = mapper.writeValueAsString(contentMap);
  143. String unSign = APPID+timestamp+content+SECRETKEY;
  144. String sign = MD5.md5(unSign).toUpperCase();
  145. Map<String,String> paramsMap = new HashMap<>();
  146. paramsMap.put("appid", APPID);
  147. paramsMap.put("sign", sign);
  148. paramsMap.put("timestamp", String.valueOf(timestamp));
  149. paramsMap.put("content", content);
  150. return paramsMap;
  151. }
  152. }