4 changed files with 347 additions and 0 deletions
@ -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("请求接口:{},返回异常"); |
|||
} |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
} |
|||
|
|||
} |
@ -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")); |
|||
} |
|||
} |
@ -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(); |
|||
|
|||
} |
@ -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…
Reference in new issue