| 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.GetMapping; | 
| 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))} | 
|             ) | 
|     }) | 
|     @GetMapping(path = "some") | 
|     @SsoAop() | 
|     public BaseResponse<QueryResultVo<List<VoVideo>>> some(VideoQo queryQo){ | 
|         try { | 
|             ViYsApp ysApp = this.ysSv.selectSingleton() ; | 
|             if(ysApp == null){ | 
|                 //remote模块的自动任务可能清空了,所以再查询一次 | 
|                 ysApp = this.ysSv.selectSingleton() ; | 
|             } | 
|             List<VoVideo> list = new ArrayList<>() ; | 
|             QueryResultVo<List<VoCamera>> 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 = "" ; | 
|                     } | 
|                     list.add(vvo) ; | 
|                 } | 
|             } | 
|             QueryResultVo<List<VoVideo>> res = new QueryResultVo<>() ; | 
|             resTmp.copyTo(res); | 
|             res.obj = list ; | 
|             return BaseResponseUtils.buildSuccess(res); | 
|         } catch (Exception e) { | 
|             log.error("查询摄像机异常", e); | 
|             return BaseResponseUtils.buildException(e.getMessage()) ; | 
|         } | 
|     } | 
| } |