IntelligentRecognition/ah-jjsp-service/.svn/pristine/f3/f3810123554fa33619a34d0cf04...

215 lines
7.8 KiB
Plaintext
Raw Normal View History

2024-05-24 16:09:40 +08:00
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+"&timestamp="+ 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 + "&timestamp=" + 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;
}
}