|  |  | 
 |  |  |    import com.doumee.core.utils.DateUtil; | 
 |  |  |    import com.google.common.collect.Maps; | 
 |  |  |    import org.apache.commons.lang3.StringUtils; | 
 |  |  |    import org.apache.http.client.config.RequestConfig; | 
 |  |  |    import org.apache.http.client.methods.CloseableHttpResponse; | 
 |  |  |    import org.apache.http.client.methods.HttpGet; | 
 |  |  |    import org.apache.http.impl.client.CloseableHttpClient; | 
 |  |  | 
 |  |  |    private static final String DEFAULT_CHARSET  = "UTF-8"; | 
 |  |  |    private static final String REGION_ID = "cn-hangzhou"; | 
 |  |  |    private static final String VERSION = "2.1.0"; | 
 |  |  |  | 
 |  |  |    public static  List<CarsDeviceDetaisResponse> HK_CARS_LIST=  null; | 
 |  |  |    public static   String BASE_URL = "https://open.hikvisionauto.com:14021/v2/"; | 
 |  |  |    private static TreeMap<String, String> getBaseParams()   { | 
 |  |  |       Map<String, String> params = Maps.newHashMap(); | 
 |  |  | 
 |  |  |  | 
 |  |  |    public static String sign(String accessSecret, TreeMap<String, String> params, HttpMethod method) throws Exception { | 
 |  |  |       String stringToSign = getStringToSign(params, method); | 
 |  |  |       System.out.println("StringToSign = [" + stringToSign + "]"); | 
 |  |  |       javax.crypto.Mac mac = javax.crypto.Mac.getInstance("HmacSHA1"); | 
 |  |  |       mac.init(new javax.crypto.spec.SecretKeySpec(accessSecret.getBytes(DEFAULT_CHARSET), "HmacSHA1")); | 
 |  |  |       byte[] signData = mac.doFinal(stringToSign.getBytes(DEFAULT_CHARSET)); | 
 |  |  | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    public static void main(String[] args) { | 
 |  |  |       getAllCarsDetais(); | 
 |  |  | //      getAllCarsDetais(); | 
 |  |  |       CarsAlarmListRequest param = new CarsAlarmListRequest(); | 
 |  |  |       param.setStartTime(DateUtil.getPlusTime2(DateUtil.getStartOfDay(new Date()))); | 
 |  |  |       param.setEndTime(DateUtil.getPlusTime2(DateUtil.getEndOfDay(new Date()))); | 
 |  |  |       param.setPageNo(1); | 
 |  |  |       param.setPageSize(100); | 
 |  |  |       param.setDeviceCode("15954209015"); | 
 |  |  |       BaseCarsPageResponse<CarsAlarmListResponse>  data = getAlarmList(param); | 
 |  |  |       System.out.println(JSONObject.toJSONString(data)); | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    public static List<CarsDeviceDetaisResponse> getAllCarsDetais() { | 
 |  |  | 
 |  |  |          List<String> cars = new ArrayList<>(); | 
 |  |  |          List<String> codes = new ArrayList<>(); | 
 |  |  |          for(CarsDeviceResponse model :data.getResults()){ | 
 |  |  | //            System.out.println("=================车牌号:"+model.getPlateNum()); | 
 |  |  |             System.out.println(model.getTerminalID()+"=================车牌号:"+model.getPlateNum()); | 
 |  |  |             cars.add(model.getPlateNum()); | 
 |  |  |             codes.add(model.getTerminalID()); | 
 |  |  |             CarsDeviceDetaisResponse t = new CarsDeviceDetaisResponse(); | 
 |  |  | 
 |  |  |       } | 
 |  |  |       for(CarsDeviceDetaisResponse m  : list){ | 
 |  |  |  | 
 |  |  |          System.out.println("=================车牌号:"+m.getPlateNum()+" 状态:【"+m.getStatus()+"】"+" 位置:【"+m.getLongitude()+","+m.getLatitude()+"】"); | 
 |  |  |          System.out.println("=================车牌号:"+m.getPlateNum()+" 状态:【"+m.getTerminalID()+"】"+" 位置:【"+m.getLongitude()+","+m.getLatitude()+"】"); | 
 |  |  |       } | 
 |  |  |       return list; | 
 |  |  |    } | 
 |  |  | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |       Collections.sort(list, (o1, o2) -> { | 
 |  |  |          return (int) (o1.getTimeStamp() - o2.getTimeStamp()); //按数量从大到小排序 | 
 |  |  |          return (int) (o2.getTimeStamp() - o1.getTimeStamp()); //按时间倒序 | 
 |  |  |       }); | 
 |  |  |       System.out.println(JSONObject.toJSONString(list)); | 
 |  |  |       return list; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  | 
 |  |  |  | 
 |  |  |    public static String sendRequest(String url,TreeMap<String, String> map){ | 
 |  |  |       try { | 
 |  |  |  | 
 |  |  |          map.put("random", System.currentTimeMillis()+""); | 
 |  |  |          StringBuilder sortQueryStringTmp = new StringBuilder(); | 
 |  |  |          for(Map.Entry<String, String> entry : map.entrySet()){ | 
 |  |  |             sortQueryStringTmp | 
 |  |  | 
 |  |  |          //与下方的HttpGet对应,采用的是HttpMethod.GET | 
 |  |  |          String sign = sign(ACCESS_SECRET + "&", map, HttpMethod.GET); | 
 |  |  |          url += "?Signature=" + specialUrlEncode(sign) + sortQueryStringTmp.toString(); | 
 |  |  |          RequestConfig requestConfig = RequestConfig.custom() | 
 |  |  |                .setSocketTimeout(5000)  // 设置读取超时时间(单位:毫秒) | 
 |  |  |                .setConnectTimeout(5000) // 设置连接超时时间(单位:毫秒) | 
 |  |  |                .build(); | 
 |  |  |          CloseableHttpClient httpClient = HttpClientBuilder.create().build(); | 
 |  |  |          //与上方的HttpMethod.GET对应,使用HttpGet | 
 |  |  |          HttpGet httpDelete = new HttpGet(url); | 
 |  |  |          httpDelete.setConfig(requestConfig); | 
 |  |  |          CloseableHttpResponse response = httpClient.execute(httpDelete); | 
 |  |  |          return  EntityUtils.toString(response.getEntity()); | 
 |  |  |       }catch (Exception e){ | 
 |  |  |          e.printStackTrace(); | 
 |  |  |          System.err.println(url); | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       return null; | 
 |  |  | 
 |  |  |       return  null; | 
 |  |  |    } | 
 |  |  |    public static  CarsGpsResponse   getLatestGpsInfo(String deviceCode)   { | 
 |  |  |       String url = BASE_URL + "gps/latest/"; | 
 |  |  |       TreeMap<String, String> BASE_PARAMS = getBaseParams(); | 
 |  |  |       BASE_PARAMS.put("deviceCode", deviceCode);//设备型号秘钥 | 
 |  |  |       String str = sendRequest(url,BASE_PARAMS); | 
 |  |  |       TypeReference typeReference = | 
 |  |  |             new TypeReference<BaseCarsResponse<CarsGpsResponse>>(){}; | 
 |  |  |       BaseCarsResponse<CarsGpsResponse>   result = JSONObject.parseObject(str, typeReference.getType()); | 
 |  |  |       if(result!=null && Constants.equalsInteger(result.getStatus(),0)){ | 
 |  |  |          return  result.getData(); | 
 |  |  |       try { | 
 |  |  |          String url = BASE_URL + "gps/latest/"; | 
 |  |  |          TreeMap<String, String> BASE_PARAMS = getBaseParams(); | 
 |  |  |          BASE_PARAMS.put("deviceCode", deviceCode);//设备型号秘钥 | 
 |  |  |          String str = sendRequest(url,BASE_PARAMS); | 
 |  |  |          TypeReference typeReference = | 
 |  |  |                new TypeReference<BaseCarsResponse<CarsGpsResponse>>(){}; | 
 |  |  |          BaseCarsResponse<CarsGpsResponse>   result = JSONObject.parseObject(str, typeReference.getType()); | 
 |  |  |          if(result!=null && Constants.equalsInteger(result.getStatus(),0)){ | 
 |  |  |             return  result.getData(); | 
 |  |  |          } | 
 |  |  |       }catch (Exception e){ | 
 |  |  |          e.printStackTrace(); | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       return  null; | 
 |  |  |    } | 
 |  |  |    public static   Map<String,Integer>   getDeviceStatusList(List<String> code)   { |