Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
cloud-fb
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
王衍超
cloud-fb
Commits
f1a6e64a
Commit
f1a6e64a
authored
Apr 24, 2022
by
yanHeng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[初始化] wuLink对接
parent
628aae2e
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
222 additions
and
0 deletions
+222
-0
GpsWuLingUtil.java
.../main/java/com/beecode/inz/common/util/GpsWuLingUtil.java
+222
-0
No files found.
backend/inz.common/src/main/java/com/beecode/inz/common/util/GpsWuLingUtil.java
0 → 100644
View file @
f1a6e64a
package
com
.
beecode
.
inz
.
common
.
util
;
import
org.json.JSONObject
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.nio.charset.StandardCharsets
;
/**
* WuLing平台对接
*/
public
class
GpsWuLingUtil
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
GpsWuLingUtil
.
class
);
public
static
String
getGpsWuLingTokenRedisKey
(
String
clietId
,
String
clientSecret
)
{
return
"gps_wu_link_token_key"
+
clietId
+
"_"
+
clientSecret
;
}
//获取token必填参数 如下三个
private
static
final
String
GRANT_TYPE
=
"client_credentials"
;
private
static
final
String
CLIET_ID
=
"jt808"
;
private
static
final
String
CLIENT_SECRET
=
"f04dd1e4"
;
private
static
final
String
GPS_WU_LING_DOMAIN
=
"http://dev.kunlun.cloud/iot/"
;
/**
* 获取tokenUrl
*/
private
static
final
String
TOKEN_URL
=
GPS_WU_LING_DOMAIN
+
"oauth/token"
;
/**
* 根据设备序列号获取id
*/
private
static
final
String
FIND_GATEWAY_ID_URL
=
GPS_WU_LING_DOMAIN
+
"gateway/api/findGatewayId"
;
/**
* 根据设备id查询⽹关指标信息
*/
private
static
final
String
GATEWAYINDICATORS_URL
=
GPS_WU_LING_DOMAIN
+
"gateway/api/gatewayIndicators"
;
/**
* 历史轨迹URL
*/
private
static
final
String
HISTORY_URL
=
GPS_WU_LING_DOMAIN
+
"devices/history"
;
public
static
void
main
(
String
[]
args
)
throws
Exception
{
String
tokenByAccount
=
getTokenByAccount
();
System
.
out
.
println
(
tokenByAccount
);
}
/**
* 获取TOKEN
* @return
* @throws Exception
*/
public
static
String
getTokenByAccount
()
throws
Exception
{
// String token = RedisUtils.getInstance().get(getGpsWuLingTokenRedisKey(CLIET_ID, CLIENT_SECRET));
// if(StringUtils.isNotEmpty(token)){
// return token;
// }else {
String
sendParam
=
"grant_type="
+
GRANT_TYPE
+
"&client_id="
+
CLIET_ID
+
"&client_secret="
+
CLIENT_SECRET
;
String
sendPost
=
HttpSendUtil
.
sendPost
(
TOKEN_URL
,
sendParam
,
StandardCharsets
.
UTF_8
.
name
());
JSONObject
postStr
=
new
JSONObject
(
sendPost
);
String
accessToken
=
postStr
.
getString
(
"access_token"
);
if
(
accessToken
!=
null
)
{
RedisUtils
.
getInstance
().
set
(
getGpsWuLingTokenRedisKey
(
CLIET_ID
,
CLIENT_SECRET
),
accessToken
,
postStr
.
getInt
(
"expires_in"
)-
3
);
return
accessToken
;
}
else
{
logger
.
error
(
"请求GPSWuLink获取token出错,错误信息"
+
postStr
.
get
(
"msg"
));
}
// }
return
null
;
}
/**
* 跟踪
* @param account 账号
* @param password 密码
* @param imeis 设备号,可以逗号分隔
* @param mapType 地图类型 如果要显示在百度地图上,map_type=BAIDU此时返回的经纬度将经过baidu校准方式校准
* 如果要显示在google地图上,map_type=GOOGLE,此时返回的经纬度将经过google校准方式校准
* map_type如果不填,则返回原始经纬度
*
* @return
* <table>
* ret uint 返回码 0:正确返回 其它: 失败。错误码 @see {@link com.beecode.inz.common.enumeration.GpsooErrorCodeEnum} <br/>
* msg string 如果ret不为0,会有相应的错误信息提示<br/>
* imei string 设备imei<br/>
* device_info uint 0:正常数据 1:设备未上线 2:设备已过期 3:设备离线<br/>
* gps_time number 设备定位时间,由设备在定位数据中上报。UTC秒数(如果设备过期,值为0)<br/>
* sys_time number 平台收到设备上报位置数据时的系统时间。 UTC秒数(如果设备过期,值为0)<br/>
* heart_time number 设备与平台的最后通信时间。UTC秒数(如果设备过期,值为0)<br/>
* server_time number 当前服务器时间。UTC秒数(如果设备过期,值为0)<br/>
* lng number 经度 (如果设备过期,值为0)<br/>
* lat number 纬度 (如果设备过期,值为0)<br/>
* course number 航向(正北方向为0度,顺时针方向增大。最大值360度) (如果设备过期,值为0)<br/>
* speed number 速度 (单位:km/h) <br/>
* status string ACC等信息 (如果设备过期,值为空字符串) <br/>
* acc unit -1,表示这个设备不支持ACC功能;否则为ACC的状态值(0=关闭,1=开启) <br/>
* acc_seconds string 该设备切换为当前状态已经过的时长(单位:秒) <br/>
* </table>
* @throws Exception
*/
// public static List<Map<String,Object>> tracking(String account, String password, String imeis, String mapType) throws Exception {
// if(StringUtils.isEmpty(imeis)){
// return null;
// }
// String commonParam = getCommonParam(account, password);
//
// if(commonParam==null){
// return null;
// }
// List<Map<String,Object>> imeisInfos = new ArrayList<>();
// List<String> imeisInfoKey = new ArrayList<>();
// String[] split = imeis.split(",");
// for (String s : split) {
// String s1 = RedisUtils.getInstance().get(getGpsooImeisTrackingRedisKey(account, password, s, mapType));
// if(StringUtils.isNotEmpty(s1)){
// imeisInfos.add(new JSONObject(s1).toMap());
// }else {
// imeisInfoKey.add(s);
// }
// }
//
// String sendParam=commonParam +"&imeis="+String.join(",",imeisInfoKey);
// if(StringUtils.isNotEmpty(mapType)){
// sendParam +="&map_type="+mapType;
// }
// String sendPost = HttpSendUtil.sendPost(TRACKING_URL, sendParam, StandardCharsets.UTF_8.name());
// JSONObject postStr = new JSONObject(sendPost);
// int ret = postStr.getInt("ret");
// if (0==(ret)) {
// JSONArray data = postStr.getJSONArray("data");
// for (int i = 0; i < data.length(); i++) {
// String imei = data.getJSONObject(i).getString("imei");
// //每分钟限制了600次请求 8秒缓存,可能不大够..
// JSONObject jsonObject = data.getJSONObject(i);
// Map<String,Object> imeisInfo = jsonObject.toMap();
// RedisUtils.getInstance().set(getGpsooImeisTrackingRedisKey(account, password, imei, mapType), jsonObject.toString(),8);
// imeisInfos.add(imeisInfo);
// }
// }else {
// logger.error("请求GPSOO监控获取tracking出错,错误信息"+postStr.get("msg")+",设备号列表"+imeis);
// }
// return imeisInfos;
// }
//
//
// /**
// * 历史轨迹
// * @param account 账号
// * @param password 密码
// * @param imei 设备号
// * @param mapType 地图类型 如果要显示在百度地图上,map_type=BAIDU此时返回的经纬度将经过baidu校准方式校准
// * 如果要显示在google地图上,map_type=GOOGLE,此时返回的经纬度将经过google校准方式校准
// * map_type如果不填,则返回原始经纬度
// * @param beginTime 开始时间(UTC) 秒数
// * @param endTime 结束时间(UTC) 秒数。end_time不应大于当前时间。
// * gps_time number gps定位时间 UTC秒数<br/>
// * lng number 经度<br/>
// * lat number 纬度<br/>
// * course number 航向(正北方向为0度,顺时针方向增大。最大值360度)<br/>
// * speed number 速度 (单位: km/h)<br/>
// */
// public static List<Object> history(String account, String password, String imei, String mapType,Long beginTime ,Long endTime,List<Object> datas) throws Exception {
//
// if(StringUtils.isEmpty(imei)){
// return null;
// }
// String commonParam = getCommonParam(account, password);
//
// if(commonParam==null){
// return null;
// }
// if(null==datas){
// datas=new ArrayList<>();
// }
//
// String sendParam=commonParam +"&imei="+imei+"&begin_time="+beginTime+"&end_time="+endTime;
// if(StringUtils.isNotEmpty(mapType)){
// sendParam +="&map_type="+mapType;
// }
// String sendPost = HttpSendUtil.sendPost(HISTORY_URL, sendParam, StandardCharsets.UTF_8.name());
// JSONObject postStr = new JSONObject(sendPost);
// int ret = postStr.getInt("ret");
// if (0==ret) {
// JSONArray data = postStr.getJSONArray("data");
// datas.addAll(data.toList());
// if(data.length()>=1000){
// JSONObject jsonObject = data.getJSONObject(999);
// history(account, password, imei, mapType, jsonObject.getLong("gps_time"), endTime, datas);
//
// }
// }else {
// logger.error("请求GPSOO历史获取出错,错误信息"+postStr.get("msg")+",设备号"+imei);
// }
// return datas;
//
// }
//
//
// private static String getCommonParam(String account,String password) throws Exception {
// if(StringUtils.isEmpty(account)|| StringUtils.isEmpty(password)){
// return null;
// }
// String tokenByAccount = getTokenByAccount(account, password);
// String time = Long.toString(System.currentTimeMillis()/1000L);
// return "account="+URLEncoder.encode(account, StandardCharsets.UTF_8.name())+"&access_token="+tokenByAccount+"&time="+time;
// }
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment