package com.sckj.camera.controller; import com.github.pagehelper.PageHelper; import com.sckj.camera.model.dto.CameraDTO; import com.sckj.camera.model.dto.HistoryDTO; import com.sckj.camera.model.dto.ResultDTO; import com.sckj.camera.model.entity.Camera; import com.sckj.camera.service.CameraServiceImpl; import com.sckj.camera.util.LocalDateUtils; import com.sckj.common.core.AjaxResult; import com.sckj.common.validate.commons.PageValidate; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.Date; import java.util.List; @Api(tags = "相机设备") @RestController @RequestMapping(value = "/camera") public class CameraController { @Autowired private CameraServiceImpl cameraService; @ApiOperation("相机设备分页信息") @PostMapping("/list") public AjaxResult list(@Validated PageValidate pageValidate, @Validated Camera camera) { PageHelper.startPage(pageValidate.getPageNo(),pageValidate.getPageSize()); return AjaxResult.success(cameraService.list()); } @ApiOperation("查询相机设备") @ApiImplicitParams({ @ApiImplicitParam(name = "cameraId", value = "相机设备Id", paramType = "query", dataType = "Long"), }) @PostMapping("/detail") public AjaxResult detail(Long cameraId) { return AjaxResult.success(cameraService.getById(cameraId)); } //@Log(title = "文章分类新增") @ApiOperation("相机信息新增") @PostMapping("/add") public AjaxResult add(@Validated @RequestBody Camera camera) { cameraService.add(camera); return AjaxResult.success(); } @ApiOperation("相机信息编辑") @PostMapping("/edit") public AjaxResult edit(@Validated @RequestBody Camera camera) { cameraService.edit(camera); return AjaxResult.success(); } @ApiOperation("相机信息删除") @PostMapping("/del") public AjaxResult del(@RequestBody Long id) { cameraService.removeById(id); return AjaxResult.success(); } @ApiOperation("获取设备通道信息") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "设备id", paramType = "query", dataType = "Long") }) @PostMapping("/getChannel") public AjaxResult getChannel(Long id) { CameraDTO cameraDTO = new CameraDTO(); cameraDTO.setId(id); ResultDTO result = cameraService.getChannel(cameraDTO); return AjaxResult.success(result); } @ApiOperation("所有可用摄像头推流") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "设备id", paramType = "query", dataType = "Long") }) @PostMapping("/startTranscodeList") public AjaxResult startTranscodeList() { // CameraDTO cameraDTO = new CameraDTO(); // cameraDTO.setId(id); List result = cameraService.startTranscodeList(); return AjaxResult.success(result); } @ApiOperation("开始推流") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "设备id", paramType = "query", dataType = "Long") }) @PostMapping("/startTranscode") public AjaxResult startTranscode(Long id) { CameraDTO cameraDTO = new CameraDTO(); cameraDTO.setId(id); ResultDTO result = cameraService.startTranscode(cameraDTO); return AjaxResult.success(result); } /** * 回放推流 * @param id 相机id * @return ResultDTO */ @ApiOperation("回放推流") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "设备id", paramType = "query", dataType = "Long"), @ApiImplicitParam(name = "startTime", value = "起始时间", paramType = "query", dataType = "Date"), @ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "query", dataType = "Date") }) @PostMapping("/startBackTranscode") public AjaxResult startBackTranscode(Long id, @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date startTime, @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date endTime) { CameraDTO cameraDTO = new CameraDTO(); cameraDTO.setId(id); cameraDTO.setHistoryDTO(new HistoryDTO(LocalDateUtils.dateToLocalDateTime(startTime), LocalDateUtils.dateToLocalDateTime(endTime))); ResultDTO result = cameraService.startBackTranscode(cameraDTO); return AjaxResult.success(result); } /** * 抓图 * @return ResultDTO */ @ApiOperation("抓图") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "设备id", paramType = "query", dataType = "Long"), }) @PostMapping("/catchPic") public AjaxResult catchPic(Long id){ CameraDTO cameraDTO = new CameraDTO(); cameraDTO.setId(id); ResultDTO result = cameraService.catchPic(cameraDTO); return AjaxResult.success(result); } /** * 视频下载 * @return ResultDTO */ @ApiOperation("视频下载") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "设备id", paramType = "query", dataType = "Long"), @ApiImplicitParam(name = "startTime", value = "起始时间", paramType = "query", dataType = "Date"), @ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "query", dataType = "Date") }) @GetMapping("/downloadVideo") public AjaxResult downloadVideo(Long id, @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date startTime, @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date endTime) { CameraDTO cameraDTO = new CameraDTO(); cameraDTO.setId(id); cameraDTO.setHistoryDTO(new HistoryDTO(LocalDateUtils.dateToLocalDateTime(startTime), LocalDateUtils.dateToLocalDateTime(endTime))); ResultDTO result = cameraService.downloadBack(cameraDTO); return AjaxResult.success(result); } /** * 获取录像文件信息 * @return ResultDTO */ @ApiOperation("获取录像文件信息") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "设备id", paramType = "query", dataType = "Long"), @ApiImplicitParam(name = "startTime", value = "起始时间", paramType = "query", dataType = "Date"), @ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "query", dataType = "Date") }) @GetMapping("/getVideoFileList") public AjaxResult getVideoFileList(Long id, @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date startTime, @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date endTime) { CameraDTO cameraDTO = new CameraDTO(); cameraDTO.setId(id); cameraDTO.setHistoryDTO(new HistoryDTO(LocalDateUtils.dateToLocalDateTime(startTime), LocalDateUtils.dateToLocalDateTime(endTime))); ResultDTO result = cameraService.getVideoFileList(cameraDTO); return AjaxResult.success(result); } /** * 关闭ffmpeg进程 * @param id 相机id * @return Boolean */ @ApiOperation("关闭进程") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "FlowId", paramType = "query", dataType = "Long") }) @PostMapping("/stopRtmp") public AjaxResult stopRtmp(Long id){ Boolean result = cameraService.stopRtmp(id); return AjaxResult.success(result); } /** * 关闭ffmpeg进程 * @param taskName 相机id * @return Boolean */ @ApiOperation("任务名关闭进程") @ApiImplicitParams({ @ApiImplicitParam(name = "taskName", value = "taskName", paramType = "query", dataType = "String") }) @PostMapping("/stopRtmpByTaskName") public AjaxResult stopRtmpByTaskName(String taskName){ Boolean result = cameraService.stopRtmpByTaskName(taskName); return AjaxResult.success(result); } /** * 关闭ffmpeg进程 * @param ip 摄像机IP * @return Boolean */ @ApiOperation("IP关闭进程") @ApiImplicitParams({ @ApiImplicitParam(name = "ip", value = "ip", paramType = "query", dataType = "String") }) @PostMapping("/stopRtmpByIP") public AjaxResult stopRtmpByIP(String ip){ Boolean result = cameraService.stopRtmpByIP(ip); return AjaxResult.success(result); } /** * 获取录像文件信息 * @return ResultDTO */ @ApiOperation("获取摄像机状态") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "设备id", paramType = "query", dataType = "Long"), }) @GetMapping("/getState") public AjaxResult getState(Long id) { CameraDTO cameraDTO = new CameraDTO(); cameraDTO.setId(id); Integer result = cameraService.getState(cameraDTO); return AjaxResult.success("成功",result); } }