Commit f7e0b2d6 authored by 李成龙's avatar 李成龙

新增海康视频对接接口

parent 27d16e8a
......@@ -6,7 +6,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
......@@ -16,6 +15,7 @@ import org.typroject.tyboot.core.restful.utils.ResponseModel;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.video.dto.VideoOriginalDto;
import com.yeejoin.amos.video.entity.EsVideoOriginal;
import com.yeejoin.amos.video.service.impl.VideoOriginalServiceImpl;
import io.swagger.annotations.Api;
......@@ -59,4 +59,10 @@ public class VideoOriginalController extends BaseController {
public ResponseModel<String> videoUrlByIndexCode( @PathVariable String indexCode) throws Exception {
return ResponseHelper.buildResponse(videoOriginalServiceImpl.qeueryByIndexCode(indexCode));
}
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(httpMethod = "GET", value = "根据indexCode获取视频状态", notes = "根据indexCode获取视频状态")
@GetMapping(value = "/refresh/status/{indexCode}")
public ResponseModel<List<EsVideoOriginal>> refreshStatusByIndexCode( @PathVariable String indexCode) throws Exception {
return ResponseHelper.buildResponse(videoOriginalServiceImpl.qeueryStatusByIndexCode(indexCode));
}
}
package com.yeejoin.amos.video.dto;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import io.swagger.annotations.ApiModel;
......@@ -29,4 +32,19 @@ public class VideoOriginalDto extends BaseDto {
@ApiModelProperty(value = "视频厂商类型")
private String type;
/**
* 视频IP
*/
@ApiModelProperty(value = "视频IP")
private String ip;
/**
* 视频port
*/
@ApiModelProperty(value = "视频Port")
private String port;
/**
* 视频状态
*/
@ApiModelProperty(value = "视频status")
private String status;
}
......@@ -33,7 +33,21 @@ public class EsVideoOriginal {
*/
@Field(type = FieldType.Text)
private String indexCode;
/**
* 视频IP
*/
@Field(type = FieldType.Text)
private String ip;
/**
* 视频port
*/
@Field(type = FieldType.Text)
private String port;
/**
* 视频状态
*/
@Field(type = FieldType.Text)
private String status;
/**
* 原始数据
*/
......
......@@ -19,7 +19,6 @@ import org.springframework.web.client.RestTemplate;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
import com.yeejoin.amos.video.dao.IVideoOriginalRepository;
......@@ -43,7 +42,6 @@ public class VideoOriginalServiceImpl extends BaseService<VideoOriginalDto, Vide
private RestTemplate restTemplate;
@Autowired
private IVideoOriginalRepository iVideoOriginalRepository;
@Value("${biz.hk.video.url}")
private String hkVideoUrl;
@Value("${biz.hk.video.APPkey}")
......@@ -52,6 +50,8 @@ public class VideoOriginalServiceImpl extends BaseService<VideoOriginalDto, Vide
private String hkVideoAPPsecret;
@Value("${biz.hk.video.csv}")
private String hkVideoCsv;
@Value("${biz.hk.video.status.csv}")
private String hkVideoStatusCsv;
private final String protocol="hls";
private final static String HK = "HK";
@PostConstruct
......@@ -64,20 +64,10 @@ public class VideoOriginalServiceImpl extends BaseService<VideoOriginalDto, Vide
*/
public Boolean initEs(String userId,String userName, Boolean db) {
iVideoOriginalRepository.deleteAll();
// HttpHeaders headers = new HttpHeaders();
// headers.add("Content-Type", "application/json");
// SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
// factory.setConnectTimeout(30000);
// factory.setReadTimeout(30000);
// restTemplate.setRequestFactory(factory);
String objectStr = new StringBuilder().append(
"{\"httpMethod\":\"GET\",\"path\":\"/api/resource/v1/csv/downloadcsv/{csvFileName}\",\"headers\":{},\"query\":{},\"parameter\":{\"csvFileName\":\"")
.append(hkVideoCsv).append("\"},\"mock\":false,\"appKey\":\"").append(hkVideoAPPkey)
.append("\",\"appSecret\":\"").append(hkVideoAPPsecret).append("\"}").toString();
// JSONObject obj = JSONObject.parseObject(objectStr);
// HttpEntity<JSONObject> request = new HttpEntity<>(obj, headers); // 组装
// logger.info("开始查询海康视频数据"+objectStr);
// ResponseEntity<String> response = restTemplate.exchange(hkVideoUrl, HttpMethod.POST, request, String.class);
ResponseEntity<String> response = getVideoData(objectStr);
String ss = response.getBody();
JSONObject obj1 = JSONObject.parseObject(ss);
......@@ -89,6 +79,8 @@ public class VideoOriginalServiceImpl extends BaseService<VideoOriginalDto, Vide
String[] strstr = originalStr.split(",");
String cn = strstr[0];
String indexCode = strstr[1];
String ip = strstr[9];
String port = strstr[10];
if (!cn.equals("cn") && !indexCode.equals("indexCode")) {
EsVideoOriginal videoOriginal = new EsVideoOriginal();
videoOriginal.setCn(cn);
......@@ -96,6 +88,8 @@ public class VideoOriginalServiceImpl extends BaseService<VideoOriginalDto, Vide
videoOriginal.setOriginalData(originalStr);
videoOriginal.setRecUserId(userId);
videoOriginal.setRecUserName(userName);
videoOriginal.setIp(ip);
videoOriginal.setPort(port);
videoOriginal.setType(HK);
videoOriginal.setRecDate(DateUtils.getDateNowString());
resultData.add(videoOriginal);
......@@ -115,11 +109,13 @@ public class VideoOriginalServiceImpl extends BaseService<VideoOriginalDto, Vide
List<VideoOriginalDto> videoOriginalDtoList = new ArrayList<VideoOriginalDto>();
if(cn.equals("all")) {
Iterable<EsVideoOriginal> it = iVideoOriginalRepository.findAll();
logger.info("查询所有HK视频:"+it.iterator().hashCode());
for (EsVideoOriginal videoOriginal : it) {
videoOriginalDtoList.add(transDto(videoOriginal));
}
}else {
List<EsVideoOriginal> videoOriginalList = iVideoOriginalRepository.findByCnLike(cn);
List<EsVideoOriginal> videoOriginalList = iVideoOriginalRepository.findByCnLike(cn);
logger.info("查询'"+cn+"'HK视频:"+videoOriginalList.size());
for (EsVideoOriginal videoOriginal : videoOriginalList) {
videoOriginalDtoList.add(transDto(videoOriginal));
}
......@@ -130,24 +126,15 @@ public class VideoOriginalServiceImpl extends BaseService<VideoOriginalDto, Vide
VideoOriginalDto videoOriginalDto = new VideoOriginalDto();
videoOriginalDto.setCn(videoOriginal.getCn());
videoOriginalDto.setIndexCode(videoOriginal.getIndexCode());
videoOriginalDto.setIp(videoOriginal.getIp());
videoOriginalDto.setPort(videoOriginal.getPort());
videoOriginalDto.setType(HK);
return videoOriginalDto;
}
public String qeueryByIndexCode(String indexCode) {
// // TODO Auto-generated method stub
// HttpHeaders headers = new HttpHeaders();
// headers.add("Content-Type", "application/json");
// SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
// factory.setConnectTimeout(30000);
// factory.setReadTimeout(30000);
// restTemplate.setRequestFactory(factory);
String objectStr = new StringBuilder().append("{\"httpMethod\":\"POST\",\"path\":\"/api/video/v1/cameras/previewURLs\",\"headers\":{},\"query\":{},\"parameter\":{},\"body\":{\"indexCode\":\"")
.append(indexCode).append("\",\"netZoneCode\":\"0\",\"transmode\":1,\"streamType\":0,\"protocol\":\"").append(protocol).append("\"},\"contentType\":\"application/json;charset=UTF-8\",\"mock\":false,\"appKey\":\"").append(hkVideoAPPkey)
.append("\",\"appSecret\":\"").append(hkVideoAPPsecret).append("\"}").toString();
// JSONObject obj = JSONObject.parseObject(objectStr);
// HttpEntity<JSONObject> request = new HttpEntity<>(obj, headers); // 组装
// logger.info("开始查询海康视频播放地址"+objectStr);
// ResponseEntity<String> response = restTemplate.exchange(hkVideoUrl, HttpMethod.POST, request, String.class);
ResponseEntity<String> response = getVideoData(objectStr);
String ss = response.getBody();
JSONObject obj1 = JSONObject.parseObject(ss);
......@@ -206,4 +193,38 @@ public class VideoOriginalServiceImpl extends BaseService<VideoOriginalDto, Vide
}
return result;
}
public List<EsVideoOriginal> qeueryStatusByIndexCode(String indexCode) {
// TODO Auto-generated method stub
String objectStr = new StringBuilder().append(
"{\"httpMethod\":\"GET\",\"path\":\"/api/resource/v1/csv/downloadcsv/{csvFileName}\",\"headers\":{},\"query\":{},\"parameter\":{\"csvFileName\":\"")
.append(hkVideoStatusCsv).append("\"},\"mock\":false,\"appKey\":\"").append(hkVideoAPPkey)
.append("\",\"appSecret\":\"").append(hkVideoAPPsecret).append("\"}").toString();
ResponseEntity<String> response = getVideoData(objectStr);
String ss = response.getBody();
JSONObject obj1 = JSONObject.parseObject(ss);
String sss = obj1.get("response").toString();
logger.info("完成海康视频状态数据查询:长度:"+sss.length());
String[] str = sss.split("\n");
List<EsVideoOriginal> resultData = new ArrayList<EsVideoOriginal>();
for (String originalStr : str) {
System.out.println(originalStr);
String[] strstr = originalStr.split(",");
String cn = strstr[8];
String indexCodes = strstr[0];
String status = strstr[2];
if (!cn.equals("cn") && !indexCodes.equals("indexCode")&&indexCodes.equals(indexCode)) {
EsVideoOriginal videoOriginal = new EsVideoOriginal();
videoOriginal.setCn(cn);
videoOriginal.setIndexCode(indexCodes);
videoOriginal.setStatus(status);
logger.info("返回海康视频状态:"+status);
videoOriginal.setType(HK);
videoOriginal.setRecDate(DateUtils.getDateNowString());
resultData.add(videoOriginal);
}
}
logger.info("返回海康视频状态对象长度:"+resultData.size());
return resultData;
}
}
\ No newline at end of file
......@@ -12,7 +12,7 @@ spring.redis.host=172.16.10.85
spring.redis.port=6379
spring.redis.password=amos2019Redis
## ES properties:
biz.elasticsearch.address=172.16.3.39
biz.elasticsearch.address=172.16.10.66
spring.data.elasticsearch.cluster-name=elasticsearch
spring.data.elasticsearch.cluster-nodes=${biz.elasticsearch.address}:9300
spring.elasticsearch.rest.uris=http://${biz.elasticsearch.address}:9200
......@@ -21,4 +21,5 @@ spring.elasticsearch.rest.uris=http://${biz.elasticsearch.address}:9200
biz.hk.video.url=http://11.11.16.12:9017/artemis-web/debug
biz.hk.video.APPkey=25907430
biz.hk.video.APPsecret=RJj3WmSNdQuyX0yCR02b
biz.hk.video.csv=otherDomainCameraFull_1.csv
\ No newline at end of file
biz.hk.video.csv=otherDomainCameraFull_1.csv
biz.hk.video.status.csv=otherDomainCameraStatusFull_1.csv
\ No newline at end of file
......@@ -2,6 +2,7 @@ spring.application.name=VIDEO
server.servlet.context-path=/video
server.port=7900
spring.profiles.active=dev
logging.config=classpath:logback-${spring.profiles.active}.xml
## redis失效时间
redis.cache.failure.time=10800
## DB properties:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment