Browse Source

add:安全运行视频

release-sy-tdsql
“lyd” 1 month ago
parent
commit
cde1d417e1
  1. 128
      shuili-system/src/main/java/com/kms/yg/df/controller/BsSgcDfSpPlayController.java
  2. 162
      shuili-system/src/main/java/com/kms/yg/df/service/BsSgcDfSpPlayService.java
  3. 18
      shuili-system/src/main/java/com/kms/yxgh/df/dto/DfSpPlayDto.java
  4. 39
      shuili-system/src/main/java/com/kms/yxgh/df/dto/DfSpPlayQueDto.java

128
shuili-system/src/main/java/com/kms/yg/df/controller/BsSgcDfSpPlayController.java

@ -0,0 +1,128 @@
/**
* fshows.com
* Copyright (C) 2013-2025 All Rights Reserved.
*/
package com.kms.yg.df.controller;
import com.alibaba.fastjson.JSONObject;
import com.kms.yg.cz.dto.MonitorQueDto;
import com.kms.yg.df.service.BsSgcDfSpPlayService;
import com.kms.yxgh.base.Response;
import com.kms.yxgh.df.dto.DfSpPlayDto;
import com.kms.yxgh.df.dto.DfSpPlayQueDto;
import com.kms.yxgh.df.dto.DfYhCharInfoDto;
import com.kms.yxgh.df.dto.DfYhStatisticsQueDto;
import com.shuili.common.core.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
/**
* @author lyd
* @version SpTest.java, v 0.1 2025-03-07 15:56 lyd
*/
@RestController
@RequestMapping("/safe/operation/")
@Api(tags = "安全运行-视频播放")
public class BsSgcDfSpPlayController extends BaseController {
@Autowired
private BsSgcDfSpPlayService bsSgcDfSpPlayService;
/**
* 获取巡查情况概览统计
* @param dto
* @return
*/
@PostMapping("/Play")
@ApiOperation("视频播放")
public Response<DfSpPlayDto> Play(@RequestBody DfSpPlayQueDto dto) {
return Response.ok(bsSgcDfSpPlayService.getMockData());
}
// 共享接口
static final String GX_URL ="http://19.15.67.125:80/resourceSharing/oauth/token";
// 关系接口
static final String BELONG_URL ="http://19.25.35.205:31190/ZHSL_ZY/dws_rel_wmst_res";
static public HttpHeaders getHttpHeaders() {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("X-H3C-ID", "4846637469663");
headers.set("X-H3C-APPKEY", "xynzynys");
return headers;
}
public static void main(String[] args) {
MonitorQueDto monitorQueDto=new MonitorQueDto();
// monitorQueDto.setResCode("HP0014418020000235");
// monitorQueDto.setPageNum(1);
// monitorQueDto.setPageSize(10);
// RestTemplate restTemplate=new RestTemplate();
// String requestStr = JSONObject.toJSONString(monitorQueDto);
// HttpHeaders headers = getHttpHeaders();
// HttpEntity<String> httpEntity = new HttpEntity<>(requestStr, headers);
// String seqResult = "";
// try {
// ResponseEntity<String> responseEntity = restTemplate.exchange(BELONG_URL, HttpMethod.POST, httpEntity, String.class);
// seqResult = responseEntity.getBody();
// System.out.println(seqResult);
// } catch (Exception e) {
// System.out.println("请求接口:{},返回异常");
// }
DfSpPlayQueDto monitorQueDto=new DfSpPlayQueDto();
monitorQueDto.setMobile("17324499214");
RestTemplate restTemplate=new RestTemplate();
String requestStr = JSONObject.toJSONString(monitorQueDto);
HttpHeaders headers = getHttpHeaders();
HttpEntity<String> httpEntity = new HttpEntity<>(requestStr, headers);
String seqResult = "";
try {
ResponseEntity<String> responseEntity = restTemplate.exchange(GX_URL, HttpMethod.POST, httpEntity, String.class);
seqResult = responseEntity.getBody();
System.out.println(seqResult);
} catch (Exception e) {
System.out.println("请求接口:{},返回异常");
}
}
}

162
shuili-system/src/main/java/com/kms/yg/df/service/BsSgcDfSpPlayService.java

@ -0,0 +1,162 @@
package com.kms.yg.df.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.kms.yg.df.domain.BsSgcDfSwtz;
import com.kms.yg.df.mapper.BsSgcDfSwtzMapper;
import com.kms.yxgh.df.dto.DfSpPlayDto;
import com.kms.yxgh.df.dto.DfSpPlayQueDto;
import com.kms.yxgh.util.DataCenterRestTemplateUtils;
import com.shuili.common.core.service.BaseService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
/**
* 水文特征Service接口
*
* @author kms
* @date 2024-01-16
*/
@AllArgsConstructor
@Service
@Slf4j
public class BsSgcDfSpPlayService {
// @Value("${belong.reservoir.url:}")
// private String belongReservoirUrl;
// @Value("${sp.oauth.token.url:}")
// private String spOauthTokenUrl;
// @Value("${sp.play.url:}")
// private String spPlayUrl;
@Autowired
private DataCenterRestTemplateUtils dataCenterRestTemplateUtils;
static final String BELONG_URL ="http://19.25.35.205:31190/ZHSL_ZY/dws_rel_wmst_res";
static final String OAUTH_TOKEN ="http://19.15.67.125:80/resourceSharing/oauth/token";
static final String SP_PLAY_URL ="http://19.15.67.125:80/resourceSharing/startTransform";
public DfSpPlayDto getMockData () {
DfSpPlayDto rest = new DfSpPlayDto();
Map<String,String> map =new HashMap<>();
map.put("rtspPlayUrl","rtsp://173.46.129.58:554/rtp/da3ca861873949dc66f6657f2adb01ea?token=9eedb58c7b634bc8b97bf2a618bf3bc1");
map.put("flvPlayUrl","http://173.46.129.58:8889/rtp/da3ca861873949dc66f6657f2adb01ea.flv?token=9eedb58c7b634bc8b97bf2a618bf3bc1");
map.put("rtmpPlayUrl","rtmp://173.46.129.58:1935/rtp/da3ca861873949dc66f6657f2adb01ea?token=9eedb58c7b634bc8b97bf2a618bf3bc1");
map.put("hlsPlayUrl","http://173.46.129.58:8889/rtp/da3ca861873949dc66f6657f2adb01ea/hls.m3u8?token=9eedb58c7b634bc8b97bf2a618bf3bc1");
rest.setUrlsMap(map);
return rest;
}
public DfSpPlayDto play(DfSpPlayQueDto dto) {
DfSpPlayDto rest = new DfSpPlayDto();
try {
// 1. 获取水库信息
String belongReservoirUrlJson = dataCenterRestTemplateUtils.doPostRequest(BELONG_URL, dto);
log.info("belongReservoirUrl-请求接口响应报文: {}", belongReservoirUrlJson);
JSONObject belongReservoirJson = parseJson(belongReservoirUrlJson);
if (belongReservoirJson == null || !isSuccess(belongReservoirJson)) {
log.warn("获取水库信息失败,响应: {}", belongReservoirUrlJson);
return rest;
}
JSONArray reservoirData = parseJsonArray(belongReservoirJson.get("data"));
if (reservoirData == null || reservoirData.isEmpty()) {
log.warn("水库信息数据为空");
return rest;
}
// 取第一个水库信息
Map<String, String> detailMap = (Map) reservoirData.get(0);
String resCode = detailMap.getOrDefault("RES_CODE", "");
dto.setResCode(resCode);
// 2. 获取令牌
String spOauthTokenUrlJson = dataCenterRestTemplateUtils.doPostRequest(OAUTH_TOKEN, dto);
log.info("spOauthTokenUrlJson-请求接口响应报文: {}", spOauthTokenUrlJson);
JSONObject tokenJson = parseJson(spOauthTokenUrlJson);
if (tokenJson == null || !isSuccess(tokenJson)) {
log.warn("获取令牌失败,响应: {}", spOauthTokenUrlJson);
return rest;
}
JSONObject tokenData = tokenJson.getJSONObject("data");
if (tokenData == null) {
log.warn("令牌数据为空");
return rest;
}
String token = String.valueOf(tokenData.get("token"));
dto.setCameraId(dto.getResCode());
dto.setToken(token);
// 3. 调用第三方接口获取播放地址
String playOauthTokenUrlJson = dataCenterRestTemplateUtils.doPostRequest(SP_PLAY_URL, dto);
log.info("spPlayUrl-请求接口响应报文: {}", playOauthTokenUrlJson);
JSONObject playJson = parseJson(playOauthTokenUrlJson);
if (playJson == null || !isSuccess(playJson)) {
log.warn("获取播放地址失败,响应: {}", playOauthTokenUrlJson);
return rest;
}
JSONObject playDataJson = playJson.getJSONObject("data");
if (playDataJson == null) {
log.warn("播放地址数据为空");
return rest;
}
JSONObject urls = playDataJson.getJSONObject("urls");
if (urls != null) {
rest.setUrlsMap((Map) urls);
}
} catch (Exception e) {
log.error("请求接口异常: {}", e.getMessage(), e);
}
return rest;
}
/**
* 解析 JSON 字符串为 JSONObject
*/
private JSONObject parseJson(String json) {
if (StringUtils.isEmpty(json)) {
return null;
}
return JSONObject.parseObject(json);
}
/**
* 解析 JSON 字符串为 JSONArray
*/
private JSONArray parseJsonArray(Object obj) {
if (obj == null) {
return null;
}
return JSON.parseArray(obj.toString());
}
/**
* 判断接口响应是否成功
*/
private boolean isSuccess(JSONObject json) {
return json != null && Objects.equals(200, json.getIntValue("code"));
}
}

18
shuili-system/src/main/java/com/kms/yxgh/df/dto/DfSpPlayDto.java

@ -0,0 +1,18 @@
package com.kms.yxgh.df.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@ApiModel("视频播放")
@Data
public class DfSpPlayDto {
@ApiModelProperty(value = "播放地址")
private Map<String,String> urlsMap = Collections.emptyMap();
}

39
shuili-system/src/main/java/com/kms/yxgh/df/dto/DfSpPlayQueDto.java

@ -0,0 +1,39 @@
package com.kms.yxgh.df.dto;
import com.alibaba.fastjson.annotation.JSONField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @ClassName: DfSpPlayQueDto
* @Description: TODO
* @Date: 2024/3/5 上午10:18
* *
* @author: hxh
* @version: 1.0
*/
@Data
@ApiModel("安全运行-视频播放")
public class DfSpPlayQueDto {
private static final long serialVersionUID = 1L;
@ApiModelProperty("手机号码")
private String mobile;
@JSONField(name = "RES_CODE")
@ApiModelProperty(value = "水库编码")
private String resCode;
@ApiModelProperty(value = "视频播放接口入参")
private String cameraId;
@ApiModelProperty(value = "token")
private String token;
@ApiModelProperty(value = "页码")
private Integer pageSize = 10;
@ApiModelProperty(value = "每页条数")
private Integer pageNum = 1;
}
Loading…
Cancel
Save