215 lines
7.8 KiB
Plaintext
215 lines
7.8 KiB
Plaintext
package com.securityControl.system.utils;
|
||
|
||
import cn.hutool.http.HttpResponse;
|
||
import cn.hutool.http.HttpUtil;
|
||
import com.alibaba.fastjson2.JSON;
|
||
import com.alibaba.fastjson2.JSONObject;
|
||
import com.alibaba.fastjson2.TypeReference;
|
||
import com.securityControl.common.core.utils.DateUtils;
|
||
import com.securityControl.common.core.utils.aes.StringHelper;
|
||
import com.securityControl.system.domain.vo.*;
|
||
import com.securityControl.system.utils.json.JacksonHelper;
|
||
import lombok.extern.slf4j.Slf4j;
|
||
import org.springframework.beans.factory.annotation.Value;
|
||
import org.springframework.stereotype.Component;
|
||
|
||
import java.util.*;
|
||
|
||
@Slf4j
|
||
@Component
|
||
public class VideoUtil {
|
||
|
||
|
||
/**
|
||
* 统一视频平台地址
|
||
*/
|
||
private static String VIDEO_ADDRESS;
|
||
/**
|
||
* 统一视频平台账号
|
||
*/
|
||
private static String VIDEO_USERNAME;
|
||
/**
|
||
* 统一视频平台密码
|
||
*/
|
||
private static String VIDEO_PASSWORD;
|
||
|
||
|
||
private static final String LOGIN_URL = "login";// 登录地址
|
||
|
||
private static final String LOGIN_URL2 = "login2";// 登录地址
|
||
|
||
private static final String GETBALLURL = "CAS/C_CAS_QueryPUIDRes";//批量获取球机状态接口
|
||
/**
|
||
* 系统登录,获取token
|
||
*
|
||
* @return token
|
||
*/
|
||
public static String login(Map<String, Object> map ,String Q2HTTPURL) {
|
||
try {
|
||
String json = new JacksonHelper().jsonSerialize(map);
|
||
String result = HttpHelp.doHttpPosts(Q2HTTPURL + LOGIN_URL2, json);
|
||
if (result != null) {
|
||
com.alibaba.fastjson2.JSONObject object = com.alibaba.fastjson2.JSONObject.parseObject(result);
|
||
if (object != null) {
|
||
String msg = object.getString("msg");
|
||
String token = object.getString("token");
|
||
return token;
|
||
} else {
|
||
return null;
|
||
}
|
||
}
|
||
return null;
|
||
} catch (Exception e) {
|
||
log.error("登录异常:" + e.toString(), e);
|
||
}
|
||
return null;
|
||
}
|
||
|
||
public static List<SystemReturnEntity> getBallStatus(List<String> list, String token,Map<String, Object> map ,String Q2HTTPURL) {
|
||
if (StringHelper.isEmpty(token)) {
|
||
token = login(map,Q2HTTPURL);
|
||
}
|
||
List<SystemReturnEntity> reList = new ArrayList<SystemReturnEntity>();
|
||
try {
|
||
String[] ans2 = list.toArray(new String[list.size()]);
|
||
JSONObject jsonObject = new JSONObject();//参数封装
|
||
jsonObject.put("puid", ans2);
|
||
String res = HttpClientUtil.doHttpPost(Q2HTTPURL + GETBALLURL + "?token=" + token, jsonObject, null);
|
||
if (!StringHelper.isEmpty(res)) {
|
||
reList = com.alibaba.fastjson2.JSON.parseObject(res, new TypeReference<List<SystemReturnEntity>>() {
|
||
});
|
||
}
|
||
} catch (Exception e) {
|
||
log.error("获取list集合数据状态异常:" + e.toString(), e);
|
||
}
|
||
return reList;
|
||
}
|
||
|
||
|
||
|
||
@Value("${tvideo.uvpUrl}")
|
||
public void setVIDEO_ADDRESS(String VIDEO_ADDRESS) {
|
||
VideoUtil.VIDEO_ADDRESS = VIDEO_ADDRESS;
|
||
}
|
||
@Value("${tvideo.uvpAk}")
|
||
public void setVIDEO_USERNAME(String VIDEO_USERNAME) {
|
||
VideoUtil.VIDEO_USERNAME = VIDEO_USERNAME;
|
||
}
|
||
@Value("${tvideo.uvpSk}")
|
||
public void setVIDEO_PASSWORD(String VIDEO_PASSWORD) {
|
||
VideoUtil.VIDEO_PASSWORD = VIDEO_PASSWORD;
|
||
}
|
||
|
||
/**
|
||
* 登录统一视频平台登录接口
|
||
*/
|
||
private static final String T_LOGIN_URL = "/uvp-backend-common/api/v1/authorization";
|
||
/**
|
||
* 查询设备信息数据
|
||
*/
|
||
private static final String DEVICE_INFO="/uvp-backend-common/api/v1/resource/queryDev";
|
||
|
||
|
||
// private static final String DEVICE_UP_DOWN="/uvp-backend-maintenance/api/v1/dev/queryDevStatusDescriptionInfo";
|
||
|
||
private static final String DEVICE_UP_DOWN="/uvp-backend-maintenance/api/v1/dev/queryDevStatusOnOffLineInfo";
|
||
|
||
/**
|
||
* 统一视频平台登录获取token
|
||
* @return
|
||
*/
|
||
public static String getToken() {
|
||
String token=null;
|
||
try{
|
||
Map<String, Object> body = new HashMap<>(16);
|
||
body.put("ak", VIDEO_USERNAME);
|
||
body.put("sk", Base64.getEncoder().encodeToString(VIDEO_PASSWORD.getBytes()));
|
||
HttpResponse execute = HttpUtil.createPost(VIDEO_ADDRESS + T_LOGIN_URL).body(JSON.toJSONString(body)).execute();
|
||
boolean ok = execute.isOk();
|
||
if (ok) {
|
||
String responseBody = execute.body();
|
||
log.error(responseBody);
|
||
TYTokens tokens = JSON.parseObject(responseBody, TYTokens.class);
|
||
if (Objects.equals("true", tokens.getSuccessful())) {
|
||
token = tokens.getResultValue().getToken();
|
||
log.error("token==="+token);
|
||
return token;
|
||
}
|
||
}
|
||
}catch (Exception e){
|
||
log.error(e.toString(),e);
|
||
}
|
||
return token;
|
||
}
|
||
|
||
/**
|
||
* 获取球机消息数据
|
||
* list 最多五十條
|
||
*/
|
||
public static List<TYDeviceResultValue> getDeviceList(List<String> list){
|
||
List<TYDeviceResultValue> res=new ArrayList<>();
|
||
String[] params = list.toArray(new String[list.size()]);
|
||
try{
|
||
String token=getToken();
|
||
if(token!=null) {
|
||
String url = VIDEO_ADDRESS+DEVICE_INFO+"?ak="+VIDEO_USERNAME+"&token="+token+"×tamp="+ DateUtils.getTimeStamp()+"&nonce="+ UUID.randomUUID();
|
||
Map<String, Object> body = new HashMap<>(16);
|
||
body.put("devCodes", params);
|
||
String str1 = JSON.toJSONString(body);
|
||
HttpResponse execute = HttpUtil.createPost(url).body(str1).execute();
|
||
boolean ok = execute.isOk();
|
||
log.error("执行结果1--->" + ok);
|
||
String responseBody = execute.body();
|
||
if (ok) {
|
||
TYResultDeviceData data = JSON.parseObject(responseBody, TYResultDeviceData.class);
|
||
if (Objects.equals("true", data.getSuccessful())) {
|
||
res=data.getResultValue();
|
||
return res;
|
||
}
|
||
}
|
||
}
|
||
}catch (Exception e){
|
||
log.error(e.toString(),e);
|
||
}
|
||
return res;
|
||
}
|
||
/**
|
||
* 球机上下线记录
|
||
*
|
||
* @param devList 统一平台编码
|
||
* @param startTime 开始时间 YYYY-MM-DD
|
||
* @param endTime 结束时间 YYYY-MM-DD
|
||
*/
|
||
public static List<SDevUpDownVo> getDevUpDown(List<String> devList, String startTime, String endTime) {
|
||
List<SDevUpDownVo> list = new ArrayList<>();
|
||
try {
|
||
String[] params = devList.toArray(new String[devList.size()]);
|
||
String token = getToken();
|
||
String url = VIDEO_ADDRESS + DEVICE_UP_DOWN + "?ak=" + VIDEO_USERNAME + "&token=" + token + "×tamp=" + DateUtils.getTimeStamp() + "&nonce=" + UUID.randomUUID();
|
||
if (token != null) {
|
||
Map<String, Object> body = new HashMap<>(16);
|
||
body.put("devCodes", params);
|
||
body.put("startTime", startTime);
|
||
body.put("endTime", endTime);
|
||
body.put("pageNo", 1);
|
||
body.put("pageSize", 200);
|
||
String str1 = JSON.toJSONString(body);
|
||
HttpResponse execute = HttpUtil.createPost(url).body(str1).execute();
|
||
boolean ok = execute.isOk();
|
||
if (ok) {
|
||
String responseBody = execute.body();
|
||
STDevUpDownData data = JSON.parseObject(responseBody, STDevUpDownData.class);
|
||
return data.getResultValue();
|
||
}
|
||
|
||
}
|
||
|
||
} catch (Exception e) {
|
||
log.error(e.toString(), e);
|
||
}
|
||
return list;
|
||
}
|
||
|
||
|
||
}
|