IntelligentRecognition/ah-jjsp-service/.svn/pristine/60/6038aa9c6ba6b0e24a90410f39a...

444 lines
17 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.sercurityControl.proteam.util;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.securityControl.common.core.utils.DateUtils;
import com.sercurityControl.proteam.domain.AnalysesEntity;
import com.sercurityControl.proteam.domain.ResultDeviceData;
import com.sercurityControl.proteam.domain.TasksEntity;
import com.sercurityControl.proteam.domain.VideoTaskEntity;
import com.sercurityControl.proteam.domain.ty.*;
import lombok.extern.slf4j.Slf4j;
import org.omg.IOP.ENCODING_CDR_ENCAPS;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.io.*;
import java.net.*;
import java.util.*;
/**
* 统一视频公交类
*/
@Component
@Slf4j
public class TyVideoUtil {
/**
* 统一视频平台地址
*/
private static String VIDEO_ADDRESS;
/**
* 统一视频平台账号
*/
private static String VIDEO_USERNAME;
/**
* 统一视频平台密码
*/
private static String VIDEO_PASSWORD;
@Value("${tvideo.uvpUrl}")
public void setVIDEO_ADDRESS(String VIDEO_ADDRESS) {
TyVideoUtil.VIDEO_ADDRESS = VIDEO_ADDRESS;
}
@Value("${tvideo.uvpAk}")
public void setVIDEO_USERNAME(String VIDEO_USERNAME) {
TyVideoUtil.VIDEO_USERNAME = VIDEO_USERNAME;
}
@Value("${tvideo.uvpSk}")
public void setVIDEO_PASSWORD(String VIDEO_PASSWORD) {
TyVideoUtil.VIDEO_PASSWORD = VIDEO_PASSWORD;
}
/**
* 登录统一视频平台登录接口
*/
private static final String 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";
/**
* 实时视频分析
*/
private static final String VIDEO_TASK = "/uvp-micro-service/analysis/api/v1/videoTask";
/**
* 分析任务查询
*/
private static final String TASKS = "/uvp-micro-service/analysis/api/v1/tasks";
/**
* 分析任务控制
*/
private static final String TASK_CONTROL = "/uvp-micro-service/analysis/api/v1/taskControl";
/**
* 分析结果查询
*/
private static final String ANALYSES = "/uvp-micro-service/analysis/api/v1/analyses";
/**
* 获取算法能力
*/
private static final String ABILITIES = "/v1/service/abilities";
/**
* 设备前端录像查询
*/
private static final String WEB_VIDEO_URL="/uvp-micro-service/ses/api/v1/queryRecord";
private static final String DOWN_IMAGE="/uvp-micro-service/download";
/**
* 统一视频平台登录获取token
*
* @return token
*/
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 + LOGIN_URL).body(JSON.toJSONString(body)).execute();
boolean ok = execute.isOk();
if (ok) {
String responseBody = execute.body();
TyToken tokens = JSON.parseObject(responseBody, TyToken.class);
if (Objects.equals("true", tokens.getSuccessful())) {
token = tokens.getResultValue().getToken();
return token;
}
}
} catch (Exception e) {
log.error(e.toString(), e);
}
return token;
}
/**
* 获取球机消息数据
*/
public static List<ResultValue> getDeviceList(List<String> list) {
List<ResultValue> res = new ArrayList<>();
try {
String[] params = list.toArray(new String[list.size()]);
Map<String, Object> body = new HashMap<>(16);
body.put("devCodes", params);
String str1 = JSON.toJSONString(body);
String token = getToken();
if (token != null) {
String url = VIDEO_ADDRESS + DEVICE_INFO + "?ak=" + VIDEO_USERNAME + "&token=" + token + "&timestamp=" + DateUtils.getTimeStamp() + "&nonce=" + UUID.randomUUID();
HttpResponse execute = HttpUtil.createPost(url).body(str1).execute();
boolean ok = execute.isOk();
if (ok) {
String responseBody = execute.body();
ResultDeviceData data = JSON.parseObject(responseBody, ResultDeviceData.class);
if (Objects.equals("true", data.getSuccessful())) {//
res = data.getResultValue();
return res;
}
}
}
} catch (Exception e) {
log.error(e.toString(), e);
}
return res;
}
public static String getDownImage(String fileId,String token){
try {
String url = VIDEO_ADDRESS + DOWN_IMAGE+"?fileid="+ fileId+ "&ak=" + VIDEO_USERNAME + "&token=" + token + "&timestamp=" + DateUtils.getTimeStamp() + "&nonce=" + UUID.randomUUID();
return BinaryStreamReceiver.transImage(url);
}catch (Exception e){
log.error(e.toString(), e);
return "";
}
}
/**
* 球机上下线记录
*
* @param devList 统一平台编码
* @param startTime 开始时间 YYYY-MM-DD
* @param endTime 结束时间 YYYY-MM-DD
*/
public static List<DevUpDownVo> getDevUpDown(List<String> devList, String startTime, String endTime) {
List<DevUpDownVo> 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();
System.err.println("url==="+url);
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();
System.err.println("ok==="+ok);
if (ok) {
String responseBody = execute.body();
System.err.println("responseBody==="+responseBody);
TDevUpDownData data = JSON.parseObject(responseBody, TDevUpDownData.class);
return data.getResultValue();
}
}
} catch (Exception e) {
log.error(e.toString(), e);
}
return list;
}
/**
* 获取设备web端视频
* @return
*/
public static List<ItemsVo> getDevVideo(String tCode,String beginTime,String endTime){
try{
String token = getToken();
String url = VIDEO_ADDRESS + WEB_VIDEO_URL + "?ak=" + VIDEO_USERNAME + "&token=" + token + "&timestamp=" + DateUtils.getTimeStamp() + "&nonce=" + UUID.randomUUID();
if (token != null) {
Map<String, Object> body = new HashMap<>(16);
body.put("code", tCode);
body.put("beginTime", beginTime);
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();
TyVideoVo data = JSON.parseObject(responseBody, TyVideoVo.class);
if(data!=null){
ResultValueVo vo=data.getResultValue();
if(vo!=null){
List<ItemsVo> video=vo.getItems();
return video;
}
}
}
}
}catch (Exception e){
log.error(e.toString(),e);
}
return new ArrayList<>();
}
/**
* 获取算法能力
*/
public static JSONObject getAlgCodes(){
try{
String token = getToken();
System.err.println("token=="+token);
String url = VIDEO_ADDRESS + ABILITIES + "?ak=" + VIDEO_USERNAME + "&token=" + token + "&timestamp=" + DateUtils.getTimeStamp() + "&nonce=" + UUID.randomUUID();
Map<String, Object> body = new HashMap<>(16);
body.put("pageNo", 1);
body.put("pageSize", 200);
String param = JSON.toJSONString(body);
System.err.println(url);
HttpResponse execute = HttpUtil.createPost(url).body(param).execute();
boolean ok = execute.isOk();
System.err.println("执行结果=="+ok);
if (ok) {
String responseBody = execute.body();
System.err.println("执行成功返回数据==");
System.err.println(responseBody);
return JsonHelper.jsonStrToJsonObj(responseBody);
}
}catch (Exception e){
log.error(e.toString(),e);
}
return null;
}
/**
* 创建任务 设备集合
* @param devs 设备集合
* @param algCode 算法id
* @return
*/
public static JSONObject setVideoTask(List<String> devs,String algCode) {
try {
List<VideoTaskEntity.DevInfosDTO> list=new ArrayList<>();
for (String str: devs) {
VideoTaskEntity.DevInfosDTO dto=new VideoTaskEntity.DevInfosDTO();
dto.setDevCode(str);
dto.setPresettingIndex(0);
list.add(dto);
}
VideoTaskEntity entity=new VideoTaskEntity();
entity.setDevInfos(list);
entity.setTaskName("基建-视频智能分析任务");
entity.setTaskDesc("基建-实时视频分析任务创建");
entity.setStartTime(DateTimeHelper.getNowTime());
entity.setAlgCode(algCode);
entity.setTaskControl(1);
entity.setInterval(60*5);
//TODO 系统id
entity.setBusinessSysId("");
String token = getToken();
String url = VIDEO_ADDRESS + VIDEO_TASK + "?ak=" + VIDEO_USERNAME + "&token=" + token + "&timestamp=" + DateUtils.getTimeStamp() + "&nonce=" + UUID.randomUUID();
String param = JSON.toJSONString(entity);
if (token != null) {
HttpResponse execute = HttpUtil.createPost(url).body(param).execute();
boolean ok = execute.isOk();
if (ok) {
String responseBody = execute.body();
return JsonHelper.jsonStrToJsonObj(responseBody);
}
}
} catch (Exception e) {
log.error(e.toString(), e);
}
return null;
}
/**
* 获取创建的智能分析任务信息。
* 由于创建的智能分析任务可能较多,可由用户发起多起查询,每一次获取一部分数据。
*
* @param taskId 任务ID
* @param algCode 请求参数算法编码
* @param taskControl 任务控制状态0代表任务不启用1代表任务启用
* @param currentStatus 当前任务状态0:未开启;1:开启未运行;2:运行中;3:已完成;4:已过期;
* @param startTime 任务检索开始时间
* @param endTime 任务检索结束时间
* @param pageSize 每页数量
* @param pageNo 页码
* @return json
*/
public static TasksEntity getTasks(String taskId, String algCode, String taskControl, String currentStatus, String startTime, String endTime, String pageNo, String pageSize) {
try {
String token = getToken();
String url = VIDEO_ADDRESS + TASKS + "?ak=" + VIDEO_USERNAME + "&token=" + token;
Map<String, Object> body = new HashMap<>(16);
body.put("taskId", taskId);
body.put("algCode", algCode);
body.put("taskControl", taskControl);
body.put("currentStatus", currentStatus);
body.put("startTime", startTime);
body.put("endTime", endTime);
body.put("pageNo", pageNo);
body.put("pageSize", pageSize);
String param = JSON.toJSONString(body);
if (token != null) {
HttpResponse execute = HttpUtil.createPost(url).body(param).execute();
boolean ok = execute.isOk();
if (ok) {
String responseBody = execute.body();
JSONObject jsonObject = JsonHelper.jsonStrToJsonObj(responseBody);
return JSON.parseObject(jsonObject.getString("resultValue"), TasksEntity.class);
}
}
} catch (Exception e) {
log.error(e.toString(), e);
}
return null;
}
/**
* 对智能分析任务进行手动的执行、停止或删除的操作。
*
* @param taskId 智能分析任务主键
* @param actionType 启动/停止状态(0停止1启动2删除)
* @return json
*/
public static JSONObject setTaskControl(String taskId, Integer actionType) {
try {
String token = getToken();
String url = VIDEO_ADDRESS + TASK_CONTROL + "?ak=" + VIDEO_USERNAME + "&token=" + token;
Map<String, Object> body = new HashMap<>(16);
body.put("taskId", taskId);
body.put("actionType", actionType);
String param = JSON.toJSONString(body);
if (token != null) {
HttpResponse execute = HttpUtil.createPost(url).body(param).execute();
boolean ok = execute.isOk();
if (ok) {
String responseBody = execute.body();
return JsonHelper.jsonStrToJsonObj(responseBody);
}
}
} catch (Exception e) {
log.error(e.toString(), e);
}
return null;
}
/**
* 获取创建的智能分析任务产生的结果信息。
* 由于产生的结果信息可能较多,可由用户发起多起查询,每一次获取一部分数据。
*
* @param startTime 开始时间(yyyy-mm-dd hh24:mi:ss)
* @param endTime 结束时间(yyyy-mm-dd hh24:mi:ss)
* @param taskId 任务ID
* @param devCode 设备编码
* @param taskName 任务名称
* @param algCode 分析算法类型编码
* @param pageNo 当前页码
* @param pageSize 每页显示多少条
* @return json
*/
public static AnalysesEntity getAnalyses(String taskId, String devCode, String taskName, String algCode, String startTime, String endTime, String pageNo, String pageSize) {
try {
String token = getToken();
String url = VIDEO_ADDRESS + ANALYSES + "?ak=" + VIDEO_USERNAME + "&token=" + token;
Map<String, Object> body = new HashMap<>(16);
body.put("taskId", taskId);
body.put("algCode", algCode);
body.put("devCode", devCode);
body.put("taskName", taskName);
body.put("startTime", startTime);
body.put("endTime", endTime);
body.put("pageNo", pageNo);
body.put("pageSize", pageSize);
String param = JSON.toJSONString(body);
if (token != null) {
HttpResponse execute = HttpUtil.createPost(url).body(param).execute();
boolean ok = execute.isOk();
if (ok) {
String responseBody = execute.body();
JSONObject jsonObject = JsonHelper.jsonStrToJsonObj(responseBody);
return JSON.parseObject(jsonObject.getString("resultValue"), AnalysesEntity.class);
}
}
} catch (Exception e) {
log.error(e.toString(), e);
}
return null;
}
}