Commit 01afe459 authored by 李成龙's avatar 李成龙

提交对接视频模块

parent 659da7b2
...@@ -29,12 +29,12 @@ public class ElasticSearchClientConfig { ...@@ -29,12 +29,12 @@ public class ElasticSearchClientConfig {
@Qualifier("highLevelClient") @Qualifier("highLevelClient")
public RestHighLevelClient restHighLevelClient() { public RestHighLevelClient restHighLevelClient() {
String auth = Base64.encodeBase64String(("elastic:es123456").getBytes());
try { try {
String url = uris.replace("http://", ""); String url = uris.replace("http://", "");
final String[] parts = StringUtils.split(url, ":"); final String[] parts = StringUtils.split(url, ":");
HttpHost httpHost = new HttpHost(parts[0], Integer.parseInt(parts[1]), "http"); HttpHost httpHost = new HttpHost(parts[0], Integer.parseInt(parts[1]), "http");
RestClientBuilder builder = RestClient.builder(httpHost); RestClientBuilder builder = RestClient.builder(httpHost);
//增加安全配置,使用kibana,勿删
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("elastic","es123456")); credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("elastic","es123456"));
builder.setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() { builder.setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() {
...@@ -46,17 +46,14 @@ public class ElasticSearchClientConfig { ...@@ -46,17 +46,14 @@ public class ElasticSearchClientConfig {
.setSocketTimeout(6000 * 1000);// 套接字超时(默认为30秒)//更改客户端的超时限制默认30秒现在改为100*1000分钟 .setSocketTimeout(6000 * 1000);// 套接字超时(默认为30秒)//更改客户端的超时限制默认30秒现在改为100*1000分钟
} }
});// 调整最大重试超时时间(默认为30秒).setMaxRetryTimeoutMillis(60000); });// 调整最大重试超时时间(默认为30秒).setMaxRetryTimeoutMillis(60000);
builder.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() { //增加安全配置,使用kibana,勿删
@Override // builder.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) { // @Override
httpClientBuilder.disableAuthCaching(); // public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider); // httpClientBuilder.disableAuthCaching();
} // return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
}); // }
// });
// builder.setDefaultHeaders(new BasicHeader[] {
// new BasicHeader("Authorization","Basic"+auth)
// });
return new RestHighLevelClient(builder); return new RestHighLevelClient(builder);
} catch (Exception e) { } catch (Exception e) {
throw new IllegalStateException("Invalid ES nodes " + "property '" + uris + "'", e); throw new IllegalStateException("Invalid ES nodes " + "property '" + uris + "'", e);
......
...@@ -5,6 +5,8 @@ import java.util.List; ...@@ -5,6 +5,8 @@ import java.util.List;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; 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.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.typroject.tyboot.core.foundation.enumeration.UserType; import org.typroject.tyboot.core.foundation.enumeration.UserType;
...@@ -13,9 +15,8 @@ import org.typroject.tyboot.core.restful.utils.ResponseHelper; ...@@ -13,9 +15,8 @@ import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel; import org.typroject.tyboot.core.restful.utils.ResponseModel;
import com.yeejoin.amos.boot.biz.common.controller.BaseController; import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.video.dao.impl.VideoOriginalServiceImpl;
import com.yeejoin.amos.video.dto.VideoOriginalDto; import com.yeejoin.amos.video.dto.VideoOriginalDto;
import com.yeejoin.amos.video.entity.VideoOriginal; import com.yeejoin.amos.video.service.impl.VideoOriginalServiceImpl;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -34,14 +35,20 @@ public class VideoOriginalController extends BaseController { ...@@ -34,14 +35,20 @@ public class VideoOriginalController extends BaseController {
@Autowired @Autowired
private VideoOriginalServiceImpl videoOriginalServiceImpl; private VideoOriginalServiceImpl videoOriginalServiceImpl;
@GetMapping("/hk/init") @PostMapping("/hk/init")
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth=false) @TycloudOperation(ApiLevel = UserType.AGENCY,needAuth=false)
@ApiOperation(httpMethod = "GET", value = "构建海康原始视频数据", notes = "构建海康原始视频数据") @ApiOperation(httpMethod = "POST", value = "构建海康原始视频数据", notes = "构建海康原始视频数据,db参数为true时,同时保存到数据库")
public ResponseModel<Boolean> hkInitData() { public ResponseModel<Boolean> hkInitEsData(Boolean db) {
return ResponseHelper.buildResponse(videoOriginalServiceImpl.initEs("", "")); return ResponseHelper.buildResponse(videoOriginalServiceImpl.initEs("", "",db));
} }
// @PostMapping("/hk/db/init")
// @TycloudOperation(ApiLevel = UserType.AGENCY,needAuth=false)
// @ApiOperation(httpMethod = "POST", value = "构建海康原始视频数据", notes = "构建海康原始视频数据")
// public ResponseModel<Boolean> hkInitDBData() {
// return ResponseHelper.buildResponse(videoOriginalServiceImpl.initDB("", ""));
// }
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false) @TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(httpMethod = "GET", value = "按视频名称查询视频节点", notes = "按视频名称查询视频节点") @ApiOperation(httpMethod = "GET", value = "按视频名称查询视频节点'", notes = "按视频名称查询视频节点,'all参数为查询所有")
@GetMapping(value = "/list/video/{cn}") @GetMapping(value = "/list/video/{cn}")
public ResponseModel<List<VideoOriginalDto>> videoBySimilar( @PathVariable String cn) throws Exception { public ResponseModel<List<VideoOriginalDto>> videoBySimilar( @PathVariable String cn) throws Exception {
return ResponseHelper.buildResponse(videoOriginalServiceImpl.qeueryByKeys(cn)); return ResponseHelper.buildResponse(videoOriginalServiceImpl.qeueryByKeys(cn));
......
...@@ -5,7 +5,7 @@ import java.util.List; ...@@ -5,7 +5,7 @@ import java.util.List;
import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import com.yeejoin.amos.video.entity.VideoOriginal; import com.yeejoin.amos.video.entity.EsVideoOriginal;
/** /**
* 模板表接口类 * 模板表接口类
...@@ -14,8 +14,8 @@ import com.yeejoin.amos.video.entity.VideoOriginal; ...@@ -14,8 +14,8 @@ import com.yeejoin.amos.video.entity.VideoOriginal;
* @date 2021-09-01 * @date 2021-09-01
*/ */
@Repository @Repository
public interface IVideoOriginalRepository extends PagingAndSortingRepository<VideoOriginal, String> { public interface IVideoOriginalRepository extends PagingAndSortingRepository<EsVideoOriginal, String> {
List<VideoOriginal> findByCnLike(String cn); List<EsVideoOriginal> findByCnLike(String cn);
} }
package com.yeejoin.amos.video.dto; package com.yeejoin.amos.video.dto;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.util.Date;
/** /**
* 模板表 * 模板表
...@@ -27,5 +27,6 @@ public class VideoOriginalDto extends BaseDto { ...@@ -27,5 +27,6 @@ public class VideoOriginalDto extends BaseDto {
@ApiModelProperty(value = "视频代码") @ApiModelProperty(value = "视频代码")
private String indexCode; private String indexCode;
@ApiModelProperty(value = "视频厂商类型")
private String type;
} }
package com.yeejoin.amos.video.entity;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 模板表
*
* @author system_generator
* @date 2021-09-01
*/
@Data
@Accessors(chain = true)
@Document(indexName = "video", type = "videoOriginal", shards = 1, replicas = 0)
public class EsVideoOriginal {
/** 主键 */
@Id
private String sequenceNbr;
/**
* 视频名称
*/
@Field(type = FieldType.Text)
private String cn;
/**
* 视频代码
*/
@Field(type = FieldType.Text)
private String indexCode;
/**
* 原始数据
*/
@Field(type = FieldType.Text, index = false)
private String originalData;
/**
* 视频厂商类型
*/
@Field(type = FieldType.Keyword, index = false)
private String type;
@Field(type = FieldType.Text, index = false)
private String recDate;
@Field(type = FieldType.Text, index = false)
private String recUserId;
@Field(type = FieldType.Text, index = false)
private String recUserName;
}
package com.yeejoin.amos.video.entity; package com.yeejoin.amos.video.entity;
import java.util.Date; import com.baomidou.mybatisplus.annotation.TableName;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
/** /**
...@@ -17,35 +16,35 @@ import lombok.experimental.Accessors; ...@@ -17,35 +16,35 @@ import lombok.experimental.Accessors;
* @date 2021-09-01 * @date 2021-09-01
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true) @Accessors(chain = true)
@Document(indexName = "video", type = "videoOriginal", shards = 1, replicas = 0) @TableName("cb_video_original")
public class VideoOriginal { @ApiModel(value="VideoOriginal对象", description="视频原始数据")
/** 主键 */ public class VideoOriginal extends BaseEntity{
@Id /**
private String sequenceNbr; *
*/
private static final long serialVersionUID = 1L;
/** /**
* 视频名称 * 视频名称
*/ */
@Field(type = FieldType.Keyword) @ApiModelProperty(value = "视频名称")
private String cn; private String cn;
/** /**
* 视频代码 * 视频代码
*/ */
@Field(type = FieldType.Text) @ApiModelProperty(value = "视频名称")
private String indexCode; private String indexCode;
/** /**
* 原始数据 * 原始数据
*/ */
@Field(type = FieldType.Text, index = false) @ApiModelProperty(value = "视频名称")
private String originalData; private String originalData;
@Field(type = FieldType.Text, index = false) /**
private String recDate; * 视频厂商类型
@Field(type = FieldType.Text, index = false) */
private String recUserId; @ApiModelProperty(value = "视频厂商类型")
@Field(type = FieldType.Text, index = false) private String type;
private String recUserName;
} }
package com.yeejoin.amos.video.service;
public interface IVideoOriginalService {
}
package com.yeejoin.amos.video.dao.impl; package com.yeejoin.amos.video.service.impl;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Spliterator;
import java.util.stream.StreamSupport;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import org.apache.commons.compress.utils.Lists;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.FuzzyQueryBuilder;
import org.elasticsearch.index.query.MatchQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.data.elasticsearch.core.SearchHit;
import org.springframework.data.elasticsearch.core.SearchHits;
import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
import org.springframework.http.HttpEntity; import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod; import org.springframework.http.HttpMethod;
...@@ -29,14 +16,18 @@ import org.springframework.http.ResponseEntity; ...@@ -29,14 +16,18 @@ import org.springframework.http.ResponseEntity;
import org.springframework.http.client.SimpleClientHttpRequestFactory; import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import com.alibaba.fastjson.JSONObject; 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.boot.biz.common.utils.DateUtils;
import com.yeejoin.amos.video.dao.IVideoOriginalRepository; import com.yeejoin.amos.video.dao.IVideoOriginalRepository;
import com.yeejoin.amos.video.dto.VideoOriginalDto; import com.yeejoin.amos.video.dto.VideoOriginalDto;
import com.yeejoin.amos.video.entity.EsVideoOriginal;
import com.yeejoin.amos.video.entity.VideoOriginal; import com.yeejoin.amos.video.entity.VideoOriginal;
import com.yeejoin.amos.video.mapper.VideoOriginalMapper;
//import net.sf.json.JSONObject; import com.yeejoin.amos.video.service.IVideoOriginalService;
/** /**
* 模板表服务实现类 * 模板表服务实现类
...@@ -45,15 +36,13 @@ import com.yeejoin.amos.video.entity.VideoOriginal; ...@@ -45,15 +36,13 @@ import com.yeejoin.amos.video.entity.VideoOriginal;
* @date 2021-09-01 * @date 2021-09-01
*/ */
@Service @Service
public class VideoOriginalServiceImpl { public class VideoOriginalServiceImpl extends BaseService<VideoOriginalDto, VideoOriginal, VideoOriginalMapper> implements IVideoOriginalService {
private static final Logger logger = LoggerFactory.getLogger(VideoOriginalServiceImpl.class); private static final Logger logger = LoggerFactory.getLogger(VideoOriginalServiceImpl.class);
@Autowired @Autowired
private RestTemplate restTemplate; private RestTemplate restTemplate;
@Autowired @Autowired
private IVideoOriginalRepository iVideoOriginalRepository; private IVideoOriginalRepository iVideoOriginalRepository;
@Autowired
private ElasticsearchRestTemplate elasticsearchTemplate;
@Value("${biz.hk.video.url}") @Value("${biz.hk.video.url}")
private String hkVideoUrl; private String hkVideoUrl;
...@@ -64,124 +53,157 @@ public class VideoOriginalServiceImpl { ...@@ -64,124 +53,157 @@ public class VideoOriginalServiceImpl {
@Value("${biz.hk.video.csv}") @Value("${biz.hk.video.csv}")
private String hkVideoCsv; private String hkVideoCsv;
private final String protocol="hls"; private final String protocol="hls";
private final static String HK = "HK";
@PostConstruct @PostConstruct
public void init() { public void init() {
// 初始化ES,重建索引
// initEs();
} }
/** /**
* 重建索引 * 重建索引
* @param db
*/ */
public Boolean initEs(String userId,String userName) { public Boolean initEs(String userId,String userName, Boolean db) {
// iVideoOriginalRepository.deleteAll(); iVideoOriginalRepository.deleteAll();
HttpHeaders headers = new HttpHeaders(); // HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "application/json"); // headers.add("Content-Type", "application/json");
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); // SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setConnectTimeout(30000); // factory.setConnectTimeout(30000);
factory.setReadTimeout(30000); // factory.setReadTimeout(30000);
restTemplate.setRequestFactory(factory); // restTemplate.setRequestFactory(factory);
// String objectStr = "{\"httpMethod\":\"GET\",\"path\":\"/api/resource/v1/csv/downloadcsv/{csvFileName}\",\"headers\":{},\"query\":{},\"parameter\":{\"csvFileName\":\"otherDomainCameraFull_1.csv\"},\"mock\":false,\"appKey\":\"25907430\",\"appSecret\":\"RJj3WmSNdQuyX0yCR02b\"}";
String objectStr = new StringBuilder().append( String objectStr = new StringBuilder().append(
"{\"httpMethod\":\"GET\",\"path\":\"/api/resource/v1/csv/downloadcsv/{csvFileName}\",\"headers\":{},\"query\":{},\"parameter\":{\"csvFileName\":\"") "{\"httpMethod\":\"GET\",\"path\":\"/api/resource/v1/csv/downloadcsv/{csvFileName}\",\"headers\":{},\"query\":{},\"parameter\":{\"csvFileName\":\"")
.append(hkVideoCsv).append("\"},\"mock\":false,\"appKey\":\"").append(hkVideoAPPkey) .append(hkVideoCsv).append("\"},\"mock\":false,\"appKey\":\"").append(hkVideoAPPkey)
.append("\",\"appSecret\":\"").append(hkVideoAPPsecret).append("\"}").toString(); .append("\",\"appSecret\":\"").append(hkVideoAPPsecret).append("\"}").toString();
JSONObject obj = JSONObject.parseObject(objectStr); // JSONObject obj = JSONObject.parseObject(objectStr);
HttpEntity<JSONObject> request = new HttpEntity<>(obj, headers); // 组装 // HttpEntity<JSONObject> request = new HttpEntity<>(obj, headers); // 组装
logger.info("开始查询海康视频数据"+objectStr); // logger.info("开始查询海康视频数据"+objectStr);
ResponseEntity<String> response = restTemplate.exchange(hkVideoUrl, HttpMethod.POST, request, String.class); // ResponseEntity<String> response = restTemplate.exchange(hkVideoUrl, HttpMethod.POST, request, String.class);
ResponseEntity<String> response = getVideoData(objectStr);
String ss = response.getBody(); String ss = response.getBody();
JSONObject obj1 = JSONObject.parseObject(ss); JSONObject obj1 = JSONObject.parseObject(ss);
String sss = obj1.get("response").toString(); String sss = obj1.get("response").toString();
logger.info("完成海康视频数据查询:长度:"+sss.length()); logger.info("完成海康视频数据查询:长度:"+sss.length());
String[] str = sss.split("\n"); String[] str = sss.split("\n");
List<VideoOriginal> resultData = new ArrayList<VideoOriginal>(); List<EsVideoOriginal> resultData = new ArrayList<EsVideoOriginal>();
for (String originalStr : str) { for (String originalStr : str) {
String[] strstr = originalStr.split(","); String[] strstr = originalStr.split(",");
String cn = strstr[0]; String cn = strstr[0];
String indexCode = strstr[1]; String indexCode = strstr[1];
if (!cn.equals("cn") && !indexCode.equals("indexCode")) { if (!cn.equals("cn") && !indexCode.equals("indexCode")) {
VideoOriginal videoOriginal = new VideoOriginal(); EsVideoOriginal videoOriginal = new EsVideoOriginal();
videoOriginal.setCn(cn); videoOriginal.setCn(cn);
videoOriginal.setIndexCode(indexCode); videoOriginal.setIndexCode(indexCode);
videoOriginal.setOriginalData(originalStr); videoOriginal.setOriginalData(originalStr);
videoOriginal.setRecUserId(userId); videoOriginal.setRecUserId(userId);
videoOriginal.setRecUserName(userName); videoOriginal.setRecUserName(userName);
videoOriginal.setType(HK);
videoOriginal.setRecDate(DateUtils.getDateNowString()); videoOriginal.setRecDate(DateUtils.getDateNowString());
resultData.add(videoOriginal); resultData.add(videoOriginal);
// iVideoOriginalRepository.save(videoOriginal);
} }
} }
logger.info("开始搜索引擎中存储"+resultData.size()); logger.info("开始搜索引擎中存储"+resultData.size());
iVideoOriginalRepository.saveAll(resultData); iVideoOriginalRepository.saveAll(resultData);
logger.info("完成搜索引擎中存储"); logger.info("完成搜索引擎中存储");
boolean isSuccess = this.saveToDB(str, userId, userName, db);
if(!isSuccess) {
logger.info("搜索引擎存储视频原始数据失败");
}
return true; return true;
} }
public List<VideoOriginalDto> qeueryByKeys(String cn) { public List<VideoOriginalDto> qeueryByKeys(String cn) {
// TODO Auto-generated method stub
// List<VideoOriginal> videoOriginalList = new ArrayList<VideoOriginal>();
// MatchQueryBuilder builder = QueryBuilders.matchQuery("cn", cn);
//// FuzzyQueryBuilder builder = QueryBuilders.fuzzyQuery("cn", cn);
// NativeSearchQuery searchQuery = new NativeSearchQuery(builder);
// SearchHits<VideoOriginal> searchHits = elasticsearchTemplate.search(searchQuery, VideoOriginal.class);
// BoolQueryBuilder boolMust = QueryBuilders.boolQuery();
// BoolQueryBuilder qb4 = QueryBuilders.boolQuery()
// .should(QueryBuilders.termQuery("cn", cn));
// boolMust.must(qb4);
// NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder()
// //过滤条件
// .withQuery(boolMust);
// SearchHits<VideoOriginal> searchHits = elasticsearchTemplate.search(queryBuilder.build(), VideoOriginal.class);
// for (SearchHit searchHit : searchHits.getSearchHits())
// {
// System.out.println(searchHit.getContent());
// JSONObject jsonObject = (JSONObject) JSONObject.toJSON(searchHit.getContent());
// VideoOriginal videoOriginals = (VideoOriginal) JSONObject.toJavaObject(jsonObject,VideoOriginal.class);
// videoOriginalList.add(videoOriginals);
// }
List<VideoOriginalDto> videoOriginalDtoList = new ArrayList<VideoOriginalDto>(); List<VideoOriginalDto> videoOriginalDtoList = new ArrayList<VideoOriginalDto>();
if(cn.equals("all")) { if(cn.equals("all")) {
Iterable<VideoOriginal> it = iVideoOriginalRepository.findAll(); Iterable<EsVideoOriginal> it = iVideoOriginalRepository.findAll();
for (VideoOriginal videoOriginal : it) { for (EsVideoOriginal videoOriginal : it) {
videoOriginalDtoList.add(transDto(videoOriginal)); videoOriginalDtoList.add(transDto(videoOriginal));
} }
}else { }else {
List<VideoOriginal> videoOriginalList = iVideoOriginalRepository.findByCnLike(cn); List<EsVideoOriginal> videoOriginalList = iVideoOriginalRepository.findByCnLike(cn);
for (VideoOriginal videoOriginal : videoOriginalList) { for (EsVideoOriginal videoOriginal : videoOriginalList) {
videoOriginalDtoList.add(transDto(videoOriginal)); videoOriginalDtoList.add(transDto(videoOriginal));
} }
} }
return videoOriginalDtoList; return videoOriginalDtoList;
} }
private VideoOriginalDto transDto(VideoOriginal videoOriginal){ private VideoOriginalDto transDto(EsVideoOriginal videoOriginal){
VideoOriginalDto videoOriginalDto = new VideoOriginalDto(); VideoOriginalDto videoOriginalDto = new VideoOriginalDto();
videoOriginalDto.setCn(videoOriginal.getCn()); videoOriginalDto.setCn(videoOriginal.getCn());
videoOriginalDto.setIndexCode(videoOriginal.getIndexCode()); videoOriginalDto.setIndexCode(videoOriginal.getIndexCode());
videoOriginalDto.setType(HK);
return videoOriginalDto; return videoOriginalDto;
} }
public String qeueryByIndexCode(String indexCode) { public String qeueryByIndexCode(String indexCode) {
// TODO Auto-generated method stub // // TODO Auto-generated method stub
HttpHeaders headers = new HttpHeaders(); // HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "application/json"); // headers.add("Content-Type", "application/json");
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); // SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setConnectTimeout(30000); // factory.setConnectTimeout(30000);
factory.setReadTimeout(30000); // factory.setReadTimeout(30000);
restTemplate.setRequestFactory(factory); // restTemplate.setRequestFactory(factory);
String objectStr = new StringBuilder().append("{\"httpMethod\":\"POST\",\"path\":\"/api/video/v1/cameras/previewURLs\",\"headers\":{},\"query\":{},\"parameter\":{},\"body\":{\"indexCode\":\"") 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(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(); .append("\",\"appSecret\":\"").append(hkVideoAPPsecret).append("\"}").toString();
JSONObject obj = JSONObject.parseObject(objectStr); // JSONObject obj = JSONObject.parseObject(objectStr);
HttpEntity<JSONObject> request = new HttpEntity<>(obj, headers); // 组装 // HttpEntity<JSONObject> request = new HttpEntity<>(obj, headers); // 组装
logger.info("开始查询海康视频数据"+objectStr); // logger.info("开始查询海康视频播放地址"+objectStr);
ResponseEntity<String> response = restTemplate.exchange(hkVideoUrl, HttpMethod.POST, request, String.class); // ResponseEntity<String> response = restTemplate.exchange(hkVideoUrl, HttpMethod.POST, request, String.class);
ResponseEntity<String> response = getVideoData(objectStr);
String ss = response.getBody(); String ss = response.getBody();
JSONObject obj1 = JSONObject.parseObject(ss); JSONObject obj1 = JSONObject.parseObject(ss);
String sss = obj1.get("response").toString(); String sss = obj1.get("response").toString();
String ssss = JSONObject.parseObject(sss).get("data").toString(); String ssss = JSONObject.parseObject(sss).get("data").toString();
String sssss =JSONObject.parseObject(ssss).get("url").toString(); String sssss =JSONObject.parseObject(ssss).get("url").toString();
logger.info("完成海康视频数据查询:长度:"+sss.length()); logger.info("完成海康视频播放地址查询:长度:"+sss.length());
return sssss; return sssss;
} }
private ResponseEntity<String> getVideoData(String urlParam){
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "application/json");
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setConnectTimeout(30000);
factory.setReadTimeout(30000);
restTemplate.setRequestFactory(factory);
JSONObject obj = JSONObject.parseObject(urlParam);
HttpEntity<JSONObject> request = new HttpEntity<>(obj, headers); // 组装
logger.info("开始查询海康视频数据"+urlParam);
ResponseEntity<String> response = restTemplate.exchange(hkVideoUrl, HttpMethod.POST, request, String.class);
return response;
}
private boolean saveToDB(String[] str,String userId,String userName,boolean db) {
List<VideoOriginal> resultData = new ArrayList<VideoOriginal>();
for (String originalStr : str) {
String[] strstr = originalStr.split(",");
String cn = strstr[0];
String indexCode = strstr[1];
if (!cn.equals("cn") && !indexCode.equals("indexCode")) {
VideoOriginal videoOriginal = new VideoOriginal();
videoOriginal.setCn(cn);
videoOriginal.setIndexCode(indexCode);
videoOriginal.setOriginalData(originalStr);
videoOriginal.setRecUserId(userId);
videoOriginal.setRecUserName(userName);
videoOriginal.setType(HK);
videoOriginal.setRecDate(DateUtils.getDateNow());
resultData.add(videoOriginal);
}
}
boolean result = false;
if(db) {
try {
QueryWrapper<VideoOriginal> wrapper = new QueryWrapper<VideoOriginal>();
wrapper.eq("type", HK);
boolean isTrue = this.remove(wrapper);
if(isTrue) {
result = this.saveBatch(resultData);
}
} catch (Exception e) {
// TODO: handle exception
logger.error("HK原始视频数据删除失败:"+e);
e.printStackTrace();
}
}
return result;
}
} }
\ No newline at end of file
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