Browse Source

新增开启录像和关闭录像功能

gao.qiang 2 years ago
parent
commit
6c948e78da

+ 12 - 0
business-service/src/main/java/com/ozs/service/entity/BaseCameraManagement.java

@@ -106,6 +106,18 @@ public class BaseCameraManagement extends BaseEntity implements Serializable {
     @Excel(name = "物联网卡号")
     private String cardNum;
 
+    /**
+     * 是否开启录像(1开启2不开启)
+     */
+    @Excel(name = "是否开启录像")
+    private Integer startRecording;
+
+    /**
+     * 录像接口返回的任务ID
+     */
+    @Excel(name = "录像接口返回的任务ID")
+    private String taskId;
+
 
     /**
      * 监控相机安装里程位置字符串形式

+ 37 - 0
hazard-admin/src/main/java/com/ozs/web/controller/accountmanagment/BaseCameraManagementController.java

@@ -167,6 +167,14 @@ public class BaseCameraManagementController extends BaseController {
     @ApiOperation("新增相机台账管理信息")
     @Transactional
     public AjaxResult saveDistributionModule(@RequestBody BaseCameraManagement baseCameraManagement) {
+        LambdaQueryWrapper<BaseCameraManagement> lw = new LambdaQueryWrapper<BaseCameraManagement>();
+        if (!ObjectUtils.isEmpty(baseCameraManagement.getCameraCode())) {
+            lw.eq(BaseCameraManagement::getCameraCode, baseCameraManagement.getCameraCode());
+        }
+        BaseCameraManagement cameraManagement = baseCameraManagementService.getOne(lw);
+        if (!ObjectUtils.isEmpty(cameraManagement)) {
+            return error("相机编码已存在,不能重复添加");
+        }
         int miles = AppendUtils.stringSplit(baseCameraManagement.getBeginMiles());
         baseCameraManagement.setBeginMile(miles);
         int install = AppendUtils.stringSplit(baseCameraManagement.getInstallMiles());
@@ -179,6 +187,13 @@ public class BaseCameraManagementController extends BaseController {
         baseDynamicManagement.setCameraCode(baseCameraManagement.getCameraCode());
         baseDynamicManagement.setUpdateBy(getUserId());
         baseDynamicManagement.setCreateBy(getUserId());
+        String start = HttpUtils.sendGet(CameraUtil.startRecording(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel()));
+        if (start.startsWith(baseCameraManagement.getCameraCode() + "/" + baseCameraManagement.getChannel())) {
+            baseCameraManagement.setStartRecording(1);
+            baseCameraManagement.setTaskId(start);
+        } else {
+            baseCameraManagement.setStartRecording(2);
+        }
         if (baseCameraManagementService.save(baseCameraManagement) && baseDeviceDynamicManagementService.save(baseDynamicManagement)) {
             return AjaxResult.success();
         }
@@ -194,6 +209,14 @@ public class BaseCameraManagementController extends BaseController {
     @PutMapping("/editAccountManagement")
     @ApiOperation("修改相机台账管理信息")
     public AjaxResult editAccountManagement(@RequestBody BaseCameraManagement baseCameraManagement) {
+        LambdaQueryWrapper<BaseCameraManagement> lw = new LambdaQueryWrapper<BaseCameraManagement>();
+        if (!ObjectUtils.isEmpty(baseCameraManagement.getCameraCode())) {
+            lw.eq(BaseCameraManagement::getCameraCode, baseCameraManagement.getCameraCode());
+        }
+        BaseCameraManagement cameraManagement = baseCameraManagementService.getOne(lw);
+        if (!ObjectUtils.isEmpty(cameraManagement)) {
+            return error("相机编码已存在,不能进行修改操作");
+        }
         int miles = AppendUtils.stringSplit(baseCameraManagement.getBeginMiles());
         baseCameraManagement.setBeginMile(miles);
         int install = AppendUtils.stringSplit(baseCameraManagement.getInstallMiles());
@@ -368,6 +391,20 @@ public class BaseCameraManagementController extends BaseController {
         return success(baseDeviceDynamicManagementService.cameraTree(name));
     }
 
+    @ApiOperation("关闭视频录制")
+    @GetMapping("/endRecording/{id}")
+    public AjaxResult endRecording(@PathVariable Long id) {
+        BaseCameraManagement baseCameraManagement = baseCameraManagementService.getById(id);
+        String start = HttpUtils.sendGet(CameraUtil.endRecording(baseCameraManagement.getTaskId()));
+        if ("success".equals(start)) {
+            baseCameraManagement.setStartRecording(2);
+            if (baseCameraManagementService.updateById(baseCameraManagement)) {
+                return success();
+            }
+        }
+        return error("关闭视频录制失败");
+    }
+
     @GetMapping(value = "/getAlarm/{cameraCode}")
     @ApiOperation("根据视频ID获取详细信息")
     public AjaxResult getAlarm(@PathVariable String cameraCode) {

+ 24 - 0
hazard-admin/src/main/java/com/ozs/web/core/util/CameraUtil.java

@@ -3,15 +3,18 @@ package com.ozs.web.core.util;
 
 import com.alibaba.fastjson2.JSON;
 import com.ozs.common.config.BaseConfig;
+import com.ozs.common.core.domain.AjaxResult;
 import com.ozs.common.exception.base.BaseException;
 import com.ozs.common.utils.DateUtils;
 import com.ozs.common.utils.http.HttpUtils;
 import com.ozs.web.core.config.CaneraConfig;
+import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.util.ObjectUtils;
+import org.springframework.web.bind.annotation.GetMapping;
 
 import javax.annotation.PostConstruct;
 import java.io.*;
@@ -65,6 +68,27 @@ public class CameraUtil {
         return historyUrl + "/hdl/" + channel + "/" + cameraCode + ".flv";
     }
 
+    /**
+     * 开启录制功能
+     *
+     * @param cameraCode 相机编码
+     * @param channel    相机通道
+     * @return
+     */
+    public static String startRecording(String cameraCode, String channel) {
+        return historyUrl + "/api/record/flv/start?streamPath=" + channel + "/" + cameraCode;
+    }
+
+    /**
+     * 关闭录制功能
+     *
+     * @param taskId 录像接口返回的任务ID
+     * @return
+     */
+    public static String endRecording(String taskId) {
+        return historyUrl + "/api/record/flv/stop?id=" + taskId;
+    }
+
     /**
      * 实时播放
      *