package com.dy.pipIrrRemote.video; import com.dy.common.aop.SsoAop; import com.dy.common.webUtil.BaseResponse; import com.dy.common.webUtil.BaseResponseUtils; import com.dy.common.webUtil.QueryResultVo; import com.dy.common.webUtil.ResultCodeMsg; import com.dy.pipIrrGlobal.pojoVi.ViYsApp; import com.dy.pipIrrGlobal.util.CameraTypeEnum; import com.dy.pipIrrGlobal.voVi.VoCamera; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; /** * @Author: liurunyu * @Date: 2025/6/9 10:34 * @Description */ @Slf4j @Tag(name = "视频监控", description = "视频监控") @RestController @RequestMapping(path = "video") @RequiredArgsConstructor public class VideoCtrl { private VideoSv sv; private YsAppSv ysSv; @Value("${video.screen.count: 4}") private Integer pageSize;//每页显示条数 @Value("${video.ys.requestVideoCommonUrl: https://open.ys7.com/console/jssdk/pc.html}") private String requestVideoCommonUrl;// @Value("${video.ys.requestVideoCameraPreUrl: ezopen://open.ys7.com/}") private String requestVideoCameraPreUrl;// @Value("${video.ys.requestVideoCameraTailUrl: /1.live&themeId=}") private String requestVideoCameraTailUrl;// @Autowired private void setSv(VideoSv sv, YsAppSv ysSv){ this.sv = sv ; this.ysSv = ysSv ; } /** * 客户端请求得到一些摄像机数据 * @return 所有摄像机数据 */ @Operation(summary = "获得一页摄像机数据", description = "返回一页摄像机数据数据") @ApiResponses(value = { @ApiResponse( responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE, description = "返回一页摄像机数据(BaseResponse.content:QueryResultVo[{}])", content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE, schema = @Schema(implementation = VoCamera.class))} ) }) @PostMapping(path = "some", consumes = MediaType.APPLICATION_JSON_VALUE) @SsoAop() public BaseResponse>> some(CameraQo queryQo){ try { ViYsApp ysApp = this.ysSv.selectSingleton() ; if(ysApp == null){ //remote模块的自动任务可能清空了,所以再查询一次 ysApp = this.ysSv.selectSingleton() ; } List list = new ArrayList<>() ; QueryResultVo> resTmp = this.sv.some(queryQo, pageSize) ; if(resTmp != null && resTmp.obj != null){ for(VoCamera vo : resTmp.obj){ VoVideo vvo = new VoVideo() ; vvo.id = vo.id ; vvo.name = vo.name ; if(ysApp != null && vo.type != null && vo.type.byteValue() == CameraTypeEnum.YINGSHI.getType().byteValue()){ //萤石 StringBuilder sb = new StringBuilder(); sb.append(requestVideoCommonUrl); sb.append("?accessToken="); sb.append(ysApp.accessToken); sb.append("&url="); sb.append(requestVideoCameraPreUrl); sb.append(vo.devNo); sb.append(requestVideoCameraTailUrl); vvo.videoUrl4Simple = sb.toString() + "simple"; vvo.videoUrl4Standard = sb.toString() + "standard" ; vvo.videoUrl4Security = sb.toString() + "security" ; }else{ vvo.videoUrl4Simple = "" ; vvo.videoUrl4Standard = "" ; vvo.videoUrl4Security = "" ; } } } QueryResultVo> res = new QueryResultVo<>() ; resTmp.copyTo(res); res.obj = list ; return BaseResponseUtils.buildSuccess(res); } catch (Exception e) { log.error("查询摄像机异常", e); return BaseResponseUtils.buildException(e.getMessage()) ; } } }