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;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|