CameraController.java 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. package com.sckj.camera.controller;
  2. import com.github.pagehelper.PageHelper;
  3. import com.sckj.camera.model.dto.CameraDTO;
  4. import com.sckj.camera.model.dto.HistoryDTO;
  5. import com.sckj.camera.model.dto.ResultDTO;
  6. import com.sckj.camera.model.entity.Camera;
  7. import com.sckj.camera.service.CameraServiceImpl;
  8. import com.sckj.camera.util.LocalDateUtils;
  9. import com.sckj.common.core.AjaxResult;
  10. import com.sckj.common.validate.commons.PageValidate;
  11. import io.swagger.annotations.Api;
  12. import io.swagger.annotations.ApiImplicitParam;
  13. import io.swagger.annotations.ApiImplicitParams;
  14. import io.swagger.annotations.ApiOperation;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.format.annotation.DateTimeFormat;
  17. import org.springframework.validation.annotation.Validated;
  18. import org.springframework.web.bind.annotation.*;
  19. import java.util.Date;
  20. import java.util.List;
  21. @Api(tags = "相机设备")
  22. @RestController
  23. @RequestMapping(value = "/camera")
  24. public class CameraController {
  25. @Autowired
  26. private CameraServiceImpl cameraService;
  27. @ApiOperation("相机设备分页信息")
  28. @PostMapping("/list")
  29. public AjaxResult list(@Validated PageValidate pageValidate,
  30. @Validated Camera camera) {
  31. PageHelper.startPage(pageValidate.getPageNo(),pageValidate.getPageSize());
  32. return AjaxResult.success(cameraService.list());
  33. }
  34. @ApiOperation("查询相机设备")
  35. @ApiImplicitParams({
  36. @ApiImplicitParam(name = "cameraId", value = "相机设备Id", paramType = "query", dataType = "Long"),
  37. })
  38. @PostMapping("/detail")
  39. public AjaxResult detail(Long cameraId) {
  40. return AjaxResult.success(cameraService.getById(cameraId));
  41. }
  42. //@Log(title = "文章分类新增")
  43. @ApiOperation("相机信息新增")
  44. @PostMapping("/add")
  45. public AjaxResult add(@Validated @RequestBody Camera camera) {
  46. cameraService.add(camera);
  47. return AjaxResult.success();
  48. }
  49. @ApiOperation("相机信息编辑")
  50. @PostMapping("/edit")
  51. public AjaxResult edit(@Validated @RequestBody Camera camera) {
  52. cameraService.edit(camera);
  53. return AjaxResult.success();
  54. }
  55. @ApiOperation("相机信息删除")
  56. @PostMapping("/del")
  57. public AjaxResult del(@RequestBody Long id) {
  58. cameraService.removeById(id);
  59. return AjaxResult.success();
  60. }
  61. @ApiOperation("获取设备通道信息")
  62. @ApiImplicitParams({
  63. @ApiImplicitParam(name = "id", value = "设备id", paramType = "query", dataType = "Long")
  64. })
  65. @PostMapping("/getChannel")
  66. public AjaxResult getChannel(Long id) {
  67. CameraDTO cameraDTO = new CameraDTO();
  68. cameraDTO.setId(id);
  69. ResultDTO result = cameraService.getChannel(cameraDTO);
  70. return AjaxResult.success(result);
  71. }
  72. @ApiOperation("所有可用摄像头推流")
  73. @ApiImplicitParams({
  74. @ApiImplicitParam(name = "id", value = "设备id", paramType = "query", dataType = "Long")
  75. })
  76. @PostMapping("/startTranscodeList")
  77. public AjaxResult startTranscodeList() {
  78. // CameraDTO cameraDTO = new CameraDTO();
  79. // cameraDTO.setId(id);
  80. List<ResultDTO> result = cameraService.startTranscodeList();
  81. return AjaxResult.success(result);
  82. }
  83. @ApiOperation("开始推流")
  84. @ApiImplicitParams({
  85. @ApiImplicitParam(name = "id", value = "设备id", paramType = "query", dataType = "Long")
  86. })
  87. @PostMapping("/startTranscode")
  88. public AjaxResult startTranscode(Long id) {
  89. CameraDTO cameraDTO = new CameraDTO();
  90. cameraDTO.setId(id);
  91. ResultDTO result = cameraService.startTranscode(cameraDTO);
  92. return AjaxResult.success(result);
  93. }
  94. /**
  95. * 回放推流
  96. * @param id 相机id
  97. * @return ResultDTO
  98. */
  99. @ApiOperation("回放推流")
  100. @ApiImplicitParams({
  101. @ApiImplicitParam(name = "id", value = "设备id", paramType = "query", dataType = "Long"),
  102. @ApiImplicitParam(name = "startTime", value = "起始时间", paramType = "query", dataType = "Date"),
  103. @ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "query", dataType = "Date")
  104. })
  105. @PostMapping("/startBackTranscode")
  106. public AjaxResult startBackTranscode(Long id,
  107. @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date startTime,
  108. @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date endTime) {
  109. CameraDTO cameraDTO = new CameraDTO();
  110. cameraDTO.setId(id);
  111. cameraDTO.setHistoryDTO(new HistoryDTO(LocalDateUtils.dateToLocalDateTime(startTime), LocalDateUtils.dateToLocalDateTime(endTime)));
  112. ResultDTO result = cameraService.startBackTranscode(cameraDTO);
  113. return AjaxResult.success(result);
  114. }
  115. /**
  116. * 抓图
  117. * @return ResultDTO
  118. */
  119. @ApiOperation("抓图")
  120. @ApiImplicitParams({
  121. @ApiImplicitParam(name = "id", value = "设备id", paramType = "query", dataType = "Long"),
  122. })
  123. @PostMapping("/catchPic")
  124. public AjaxResult catchPic(Long id){
  125. CameraDTO cameraDTO = new CameraDTO();
  126. cameraDTO.setId(id);
  127. ResultDTO result = cameraService.catchPic(cameraDTO);
  128. return AjaxResult.success(result);
  129. }
  130. /**
  131. * 视频下载
  132. * @return ResultDTO
  133. */
  134. @ApiOperation("视频下载")
  135. @ApiImplicitParams({
  136. @ApiImplicitParam(name = "id", value = "设备id", paramType = "query", dataType = "Long"),
  137. @ApiImplicitParam(name = "startTime", value = "起始时间", paramType = "query", dataType = "Date"),
  138. @ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "query", dataType = "Date")
  139. })
  140. @GetMapping("/downloadVideo")
  141. public AjaxResult downloadVideo(Long id,
  142. @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date startTime,
  143. @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date endTime) {
  144. CameraDTO cameraDTO = new CameraDTO();
  145. cameraDTO.setId(id);
  146. cameraDTO.setHistoryDTO(new HistoryDTO(LocalDateUtils.dateToLocalDateTime(startTime), LocalDateUtils.dateToLocalDateTime(endTime)));
  147. ResultDTO result = cameraService.downloadBack(cameraDTO);
  148. return AjaxResult.success(result);
  149. }
  150. /**
  151. * 获取录像文件信息
  152. * @return ResultDTO
  153. */
  154. @ApiOperation("获取录像文件信息")
  155. @ApiImplicitParams({
  156. @ApiImplicitParam(name = "id", value = "设备id", paramType = "query", dataType = "Long"),
  157. @ApiImplicitParam(name = "startTime", value = "起始时间", paramType = "query", dataType = "Date"),
  158. @ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "query", dataType = "Date")
  159. })
  160. @GetMapping("/getVideoFileList")
  161. public AjaxResult getVideoFileList(Long id,
  162. @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date startTime,
  163. @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date endTime) {
  164. CameraDTO cameraDTO = new CameraDTO();
  165. cameraDTO.setId(id);
  166. cameraDTO.setHistoryDTO(new HistoryDTO(LocalDateUtils.dateToLocalDateTime(startTime), LocalDateUtils.dateToLocalDateTime(endTime)));
  167. ResultDTO result = cameraService.getVideoFileList(cameraDTO);
  168. return AjaxResult.success(result);
  169. }
  170. /**
  171. * 关闭ffmpeg进程
  172. * @param id 相机id
  173. * @return Boolean
  174. */
  175. @ApiOperation("关闭进程")
  176. @ApiImplicitParams({
  177. @ApiImplicitParam(name = "id", value = "FlowId", paramType = "query", dataType = "Long")
  178. })
  179. @PostMapping("/stopRtmp")
  180. public AjaxResult stopRtmp(Long id){
  181. Boolean result = cameraService.stopRtmp(id);
  182. return AjaxResult.success(result);
  183. }
  184. /**
  185. * 关闭ffmpeg进程
  186. * @param taskName 相机id
  187. * @return Boolean
  188. */
  189. @ApiOperation("任务名关闭进程")
  190. @ApiImplicitParams({
  191. @ApiImplicitParam(name = "taskName", value = "taskName", paramType = "query", dataType = "String")
  192. })
  193. @PostMapping("/stopRtmpByTaskName")
  194. public AjaxResult stopRtmpByTaskName(String taskName){
  195. Boolean result = cameraService.stopRtmpByTaskName(taskName);
  196. return AjaxResult.success(result);
  197. }
  198. /**
  199. * 关闭ffmpeg进程
  200. * @param ip 摄像机IP
  201. * @return Boolean
  202. */
  203. @ApiOperation("IP关闭进程")
  204. @ApiImplicitParams({
  205. @ApiImplicitParam(name = "ip", value = "ip", paramType = "query", dataType = "String")
  206. })
  207. @PostMapping("/stopRtmpByIP")
  208. public AjaxResult stopRtmpByIP(String ip){
  209. Boolean result = cameraService.stopRtmpByIP(ip);
  210. return AjaxResult.success(result);
  211. }
  212. /**
  213. * 获取录像文件信息
  214. * @return ResultDTO
  215. */
  216. @ApiOperation("获取摄像机状态")
  217. @ApiImplicitParams({
  218. @ApiImplicitParam(name = "id", value = "设备id", paramType = "query", dataType = "Long"),
  219. })
  220. @GetMapping("/getState")
  221. public AjaxResult getState(Long id) {
  222. CameraDTO cameraDTO = new CameraDTO();
  223. cameraDTO.setId(id);
  224. Integer result = cameraService.getState(cameraDTO);
  225. return AjaxResult.success("成功",result);
  226. }
  227. }