package com.steerinfo.route.threeRequest; import com.alibaba.fastjson.JSONObject; import com.openapi.sdk.service.DataExchangeService; import com.steerinfo.route.mapper.DilVersionMapper; import com.steerinfo.route.util.DataConversionTool; import com.steerinfo.route.util.LngLonUtil; import com.steerinfo.route.vo.FullPathVisualizationTo.ViewVisualization; import com.steerinfo.route.vo.Map.RouteVo; import com.steerinfo.route.vo.Map.StartAndEndRoute; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; @Component public class ZhongJiaoXingLu { @Value("${str.ZhongJiaoXingLu.parkMins}") private String parkMins; @Value("${str.ZhongJiaoXingLu.abnMins}") private String abnMins; @Value("${str.ZhongJiaoXingLu.outMins}") private String outMins; @Value("${str.ZhongJiaoXingLu.type}") private String type; // private String token="238684c3-1817-4e5e-8695-a8c85f8fd231"; @Value("${str.ZhongJiaoXingLu.cid}") private String cid; @Value("${str.ZhongJiaoXingLu.srt}") private String srt; @Value("${str.ZhongJiaoXingLu.user}") private String user; @Value("${str.ZhongJiaoXingLu.pwd}") private String pwd; @Autowired private DilVersionMapper dilVersionMapper; public String visualRoute(HashMap routeMap) { try { //登陆之后返回的token:d21661ca-e0fe-4934-866a-7d78a0756bd4 Map map = new HashMap(3); String token=dilVersionMapper.getToken(); map.put("token",token); map.put("cid", cid); map.put("srt", srt); map.put("startLonlat", routeMap.get("startLonlat").toString()); map.put("endLonlat", routeMap.get("endLonlat").toString()); map.put("vclN", routeMap.get("vclN").toString()); map.put("vco",routeMap.get("vco").toString()); map.put("qryBtm", routeMap.get("qryBtm").toString()); //判断结束时间是否大于起始时间,且在72小时以内 SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date btm=simpleDateFormat.parse(routeMap.get("qryBtm").toString());//起始时间 Date etm=new Date(btm.getTime()+1000*60*60*72);//最大结束时间 if(etm.getTime() > new Date().getTime()){ //如果最大结束时间大于当前时间,则结束时间为当前时间 etm=new Date(); } //判断结束时间是否在规定时间范围之内 if (routeMap.get("qryEtm")!=null && simpleDateFormat.parse(routeMap.get("qryEtm").toString()).getTime() btm.getTime()){ Date qryEtm = simpleDateFormat.parse(routeMap.get("qryEtm").toString()); map.put("qryEtm", simpleDateFormat.format(qryEtm)); }else { map.put("qryEtm", simpleDateFormat.format(etm)); } //routeMap.get("qryEtm").toString() map.put("timeNearby", "30"); String url = "https://openapi.sinoiov.cn/save/apis/visualRoute"; DataExchangeService des = new DataExchangeService(5000, 8000); // 通过 https 方式调用,此方法内部会使用私钥生成签名参数 sign,私钥不会发送 String res = des.postHttps(url, map); // System.out.println("visualRoute"+res); JSONObject jsonObject = JSONObject.parseObject(res); if (jsonObject.get("status").toString().equals(1016+"")){ login(); return visualRoute( routeMap); } return res; } catch (Exception e) { System.out.println("e:" + e.getMessage()); } return null; } public String vLastLocationV3(String capcityNumber) { try { Map map = new HashMap(5); // String token=dilVersionMapper.getToken(); // map.put("token", token); map.put("cid", cid); map.put("srt", srt); map.put("timeNearby", "10"); map.put("vnos", capcityNumber+"_2"); String url = "https://openapi.sinoiov.cn/save/apis/transTimeManageV3"; DataExchangeService des = new DataExchangeService(5000, 8000); // 通过 https 方式调用,此方法内部会使用私钥生成签名参数 sign,私钥不会发送 String res = des.postHttps(url, map); System.out.println("getCurrentLocation:"+res); JSONObject jsonObject = JSONObject.parseObject(res); try{ jsonObject.put("result",jsonObject.getJSONObject("result").get("firstVcl")); }catch (Exception e){} if (jsonObject.get("status").toString().equals(1016+"")){ login(); } return jsonObject.toJSONString(); } catch (Exception e) { System.out.println("e:" + e.getMessage()); } return null; } public String visualRoute2(HashMap routeMap) { try { //登陆之后返回的token:d21661ca-e0fe-4934-866a-7d78a0756bd4 Map map = new HashMap(3); String token=dilVersionMapper.getToken(); map.put("token", token); map.put("cid", cid); map.put("srt", srt); map.put("startLonlat", routeMap.get("startLonlat").toString()); map.put("endLonlat", routeMap.get("endLonlat").toString()); map.put("vclN", routeMap.get("vclN").toString()); map.put("vco",routeMap.get("vco").toString()); map.put("qryBtm", routeMap.get("qryBtm").toString()); map.put("qryEtm", routeMap.get("qryEtm").toString()); //routeMap.get("qryEtm").toString() map.put("timeNearby", "30"); String url = "https://openapi.sinoiov.cn/save/apis/visualRoute"; DataExchangeService des = new DataExchangeService(5000, 8000); // 通过 https 方式调用,此方法内部会使用私钥生成签名参数 sign,私钥不会发送 String res = des.postHttps(url, map); JSONObject jsonObject = JSONObject.parseObject(res); if (jsonObject.get("status").toString().equals(1016+"")){ login(); return visualRoute( routeMap); } return res; } catch (Exception e) { System.out.println("e:" + e.getMessage()); } return null; } //String startLonlat,String endLonlat,String vclN,String vco,String qryBtm,String qryEtm public String subAbnormalLineWarnV2(HashMap routeMap ) { try { //登陆之后返回的token:d21661ca-e0fe-4934-866a-7d78a0756bd4 Map map = new HashMap(3); String token=dilVersionMapper.getToken(); map.put("token", token); map.put("cid", cid); map.put("srt", srt); map.put("vclN", routeMap.get("vclN").toString()); map.put("vco","2"); map.put("startCode", routeMap.get("startCode").toString()); map.put("destCode", routeMap.get("destCode").toString()); map.put("startCoor", routeMap.get("startLonlat").toString()); map.put("destCoor", routeMap.get("endLonlat").toString()); //把字符串转换成CST日期类型 map.put("stime", cstToGMT(new Date().toString()).toString()); map.put("etime", cstToGMT(routeMap.get("qryEtm").toString()).toString()); map.put("parkMins", parkMins); map.put("outMins", outMins); map.put("abnMins", abnMins); map.put("type", routeMap.get("type").toString()); String url = "https://openapi.sinoiov.cn/save/apis/subAbnormalLineWarnV2"; DataExchangeService des = new DataExchangeService(5000, 8000); // 通过 https 方式调用,此方法内部会使用私钥生成签名参数 sign,私钥不会发送 String res = des.postHttps(url, map); System.out.println("subAbnormalLineWarnV2"+res); JSONObject jsonObject = JSONObject.parseObject(res); if (jsonObject.get("status").toString().equals(1016+"")){ login(); return subAbnormalLineWarnV2(routeMap); } return res; } catch (Exception e) { System.out.println("e:" + e.getMessage()); } return null; } public String cstToGMT(String data) throws InterruptedException, ParseException { SimpleDateFormat sdf1 = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US); SimpleDateFormat sdf = new SimpleDateFormat("EEE d MMM yyyy HH:mm:ss 'GMT'", Locale.US); sdf.setTimeZone(TimeZone.getTimeZone("GMT+8")); // 设置时区为GMT +8为北京时间东八区 String str = String.valueOf(sdf1.parse(data).getTime()+60000); return str; } public String netValidation(String vclN) { try { //登陆之后返回的token:d21661ca-e0fe-4934-866a-7d78a0756bd4 Map map = new HashMap(4); String token=dilVersionMapper.getToken(); map.put("token", token); map.put("cid", cid); map.put("srt", srt); map.put("vclN", vclN+"_2"); String url = "https://openapi.sinoiov.cn/save/apis/checkTruckExistV2"; DataExchangeService des = new DataExchangeService(5000, 8000); // 通过 https 方式调用,此方法内部会使用私钥生成签名参数 sign,私钥不会发送 String res = des.postHttps(url, map); System.out.println("netValidation"+res); JSONObject jsonObject = JSONObject.parseObject(res); if (jsonObject.get("status").toString().equals(1016+"")){ login(); return netValidation(vclN); } return res; } catch (Exception e) { System.out.println("e:" + e.getMessage()); } return null; } public void login() { try { Map map = new HashMap(4); map.put("user", user); map.put("pwd", pwd); map.put("cid", cid); map.put("srt", srt); String url = "https://openapi.sinoiov.cn/save/apis/login/"; DataExchangeService des = new DataExchangeService(5000, 8000); // 通过 https 方式调用,此方法内部会使用私钥生成签名参数 sign,私钥不会发送 String res = des.postHttps(url, map); System.out.println("login"+res); JSONObject jsonObject = JSONObject.parseObject(res); String token=jsonObject.get("result").toString(); dilVersionMapper.updateToken(token); //System.out.println("返回:"+ res); } catch (Exception e) { System.out.println("e:" + e.getMessage()); } } public String getCid() { return cid; } public void setCid(String cid) { this.cid = cid; } public String getSrt() { return srt; } public void setSrt(String srt) { this.srt = srt; } public String getUser() { return user; } public void setUser(String user) { this.user = user; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } }