From 1ca9656140c41165459dfb6f6b7606b3aa6a8747 Mon Sep 17 00:00:00 2001
From: zhangnaisong <2434969829@qq.com>
Date: Wed, 24 Jul 2024 15:05:13 +0800
Subject: [PATCH] 三一车辆查询加入关联后bug修改提交

---
 ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java |  177 ++++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 115 insertions(+), 62 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java b/ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java
index fe7ff79..5ca32d2 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java
@@ -11,42 +11,26 @@
 import com.ruoyi.device.camera.domain.CameraCmd;
 import com.ruoyi.device.camera.service.IArdCamerasService;
 import com.ruoyi.device.camera.service.ICameraSdkService;
-import com.ruoyi.device.dhsdk.service.IDhClientService;
-import com.ruoyi.device.hiksdk.service.IHikClientService;
+
+import com.ruoyi.device.noguidezone.domain.ArdCameraNoGuideZone;
+import com.ruoyi.device.noguidezone.service.IArdCameraNoGuideZoneService;
+import com.ruoyi.utils.gis.GisUtil;
+import com.ruoyi.utils.gis.Point;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;
 
-import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
-
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.device.camera.domain.ArdCameras;
-import com.ruoyi.device.camera.domain.CameraCmd;
-import com.ruoyi.device.camera.service.IArdCamerasService;
-import com.ruoyi.device.dhsdk.service.IDhClientService;
-import com.ruoyi.device.hiksdk.service.IHikClientService;
-import com.ruoyi.common.annotation.Anonymous;
-import com.ruoyi.common.core.domain.AjaxResult;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.PostConstruct;
-import javax.annotation.Resource;
-import java.util.List;
-import java.util.Map;
 
 /**
- * @Description:
+ * @Description: 相机通用SDK接口
  * @ClassName: CameraSdkController
  * @Author: 刘苏义
  * @Date: 2023年10月14日17:02:56
@@ -63,12 +47,9 @@
     @Resource
     private IArdCamerasService ardCamerasService;
 
+    @Autowired
+    private IArdCameraNoGuideZoneService ardCameraNoGuideZoneService;
 
-    //初始登录所有相机
-    @PostConstruct
-    public void initLoginAll() {
-        cameraSdkService.loginAll();
-    }
 
     @RequestMapping("/preview")
     private String preview() {
@@ -115,7 +96,7 @@
     public @ResponseBody
     AjaxResult PTZControlWithSpeed(@RequestBody CameraCmd cmd) {
         cmd.setOperator(SecurityUtils.getUserId());
-        return toAjax(cameraSdkService.pTZControl(cmd));
+        return cameraSdkService.pTZControl(cmd);
     }
 
     @ApiOperation("调用预置点")
@@ -125,7 +106,7 @@
     public @ResponseBody
     AjaxResult gotoPreset(@RequestBody CameraCmd cmd) {
         cmd.setOperator(SecurityUtils.getUserId());
-        return toAjax(cameraSdkService.gotoPreset(cmd));
+        return cameraSdkService.gotoPreset(cmd);
     }
 
     @ApiOperation("设置预置点")
@@ -135,7 +116,7 @@
     public @ResponseBody
     AjaxResult setPreset(@RequestBody CameraCmd cmd) {
         cmd.setOperator(SecurityUtils.getUserId());
-        return toAjax(cameraSdkService.setPreset(cmd));
+        return cameraSdkService.setPreset(cmd);
     }
 
     @ApiOperation("获取聚焦值")
@@ -145,8 +126,7 @@
     public @ResponseBody
     AjaxResult getFocusPos(@RequestBody CameraCmd cmd) {
         cmd.setOperator(SecurityUtils.getUserId());
-        int focus = cameraSdkService.getFocusPos(cmd);
-        return AjaxResult.success("获取聚焦值", focus);
+        return cameraSdkService.getFocusPos(cmd);
     }
 
     @ApiOperation("设置聚焦值")
@@ -156,7 +136,7 @@
     public @ResponseBody
     AjaxResult setFocusPos(@RequestBody CameraCmd cmd) {
         cmd.setOperator(SecurityUtils.getUserId());
-        return toAjax(cameraSdkService.setFocusPos(cmd));
+        return cameraSdkService.setFocusPos(cmd);
     }
 
     @ApiOperation("获取PTZ")
@@ -166,9 +146,9 @@
     public @ResponseBody
     AjaxResult getPTZ(@RequestBody CameraCmd cmd) {
         cmd.setOperator(SecurityUtils.getUserId());
-        Map<String, Object> ptzMap = cameraSdkService.getPtz(cmd);
-        return AjaxResult.success("获取ptz", ptzMap);
+        return cameraSdkService.getPtz(cmd);
     }
+
     @ApiOperation("获取PTZ范围")
     @PostMapping("/getPTZScope")
     @Log(title = "获取PTZ范围", businessType = BusinessType.CONTROL)
@@ -176,8 +156,7 @@
     public @ResponseBody
     AjaxResult getPTZScope(@RequestBody CameraCmd cmd) {
         cmd.setOperator(SecurityUtils.getUserId());
-        Map<String, Object> ptzMap = cameraSdkService.getPtzScope(cmd);
-        return AjaxResult.success("获取ptz范围", ptzMap);
+        return cameraSdkService.getPtzScope(cmd);
     }
 
     @ApiOperation("设置PTZ")
@@ -187,7 +166,7 @@
     public @ResponseBody
     AjaxResult setPTZ(@RequestBody CameraCmd cmd) {
         cmd.setOperator(SecurityUtils.getUserId());
-        return toAjax(cameraSdkService.setPtz(cmd));
+        return cameraSdkService.setPtz(cmd);
     }
 
     @ApiOperation("指向目标")
@@ -197,9 +176,45 @@
     public @ResponseBody
     AjaxResult setTargetPosition(@RequestBody CameraCmd cmd) {
         cmd.setOperator(SecurityUtils.getUserId());
-        return toAjax(cameraSdkService.guideTargetPosition(cmd));
+        //拦截手动引导
+        ArdCameraNoGuideZone ardCameraNoGuideZone = new ArdCameraNoGuideZone();
+        ardCameraNoGuideZone.setCameraId(cmd.getCameraId());
+        ardCameraNoGuideZone.setEnabled("1");
+        //获取当前相机的禁引可视域列表
+        List<ArdCameraNoGuideZone> ardCameraNoGuideZones = ardCameraNoGuideZoneService.selectArdCameraNoGuideZoneList(ardCameraNoGuideZone);
+        if (ardCameraNoGuideZones.size() > 0) {
+            //获取到当前相机的坐标集合
+            for (ArdCameraNoGuideZone zone : ardCameraNoGuideZones) {
+                String[] parts = zone.getPoi().split(",");
+                List<Point> pointList = new ArrayList<>();
+                for (int i = 0; i < parts.length; i += 3) {
+                    Point point = new Point();
+                    point.setLongitude(Double.valueOf(parts[i]));
+                    point.setLatitude(Double.valueOf(parts[i + 1]));
+                    pointList.add(point);
+                }
+                double lon = cmd.getTargetPosition()[0];
+                double lat = cmd.getTargetPosition()[1];
+                Point targetPoint = new Point(lon, lat);
+                //判断引导目标是否在坐标集合组成的多边形内
+                boolean inPolygon = GisUtil.isInPolygon(targetPoint, pointList);
+                if (inPolygon) {
+                    return AjaxResult.error("引导坐标位于禁引可视域内");
+                }
+            }
+        }
+        return cameraSdkService.guideTargetPosition(cmd);
     }
 
+    @ApiOperation("指向目标井")
+    @PostMapping("/setTargetWell")
+    @Log(title = "指向目标井", businessType = BusinessType.CONTROL)
+    @ApiOperationSupport(includeParameters = {"cmd.wellId"})
+    public @ResponseBody
+    AjaxResult setTargetWell(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        return cameraSdkService.guideTargetWell(cmd);
+    }
 
     @ApiOperation("设置零方位角")
     @PostMapping("/setZeroPTZ")
@@ -208,7 +223,7 @@
     public @ResponseBody
     AjaxResult setZeroPTZ(@RequestBody CameraCmd cmd) {
         cmd.setOperator(SecurityUtils.getUserId());
-        return toAjax(cameraSdkService.setZeroPtz(cmd));
+        return cameraSdkService.setZeroPtz(cmd);
     }
 
     @ApiOperation("设置锁定")
@@ -218,7 +233,7 @@
     public @ResponseBody
     AjaxResult setPTZLock(@RequestBody CameraCmd cmd) {
         cmd.setOperator(SecurityUtils.getUserId());
-        return AjaxResult.success(cameraSdkService.controlLock(cmd));
+        return cameraSdkService.controlLock(cmd);
     }
 
     @ApiOperation("设置解锁")
@@ -228,7 +243,7 @@
     public @ResponseBody
     AjaxResult setPTZUnLock(@RequestBody CameraCmd cmd) {
         cmd.setOperator(SecurityUtils.getUserId());
-        return AjaxResult.success(cameraSdkService.controlUnLock(cmd));
+        return cameraSdkService.controlUnLock(cmd);
     }
 
     @ApiOperation("获取云台锁定信息")
@@ -238,7 +253,8 @@
     public @ResponseBody
     AjaxResult getPTZLockInfo(@RequestBody CameraCmd cmd) {
         cmd.setOperator(SecurityUtils.getUserId());
-        int byWorkMode = cameraSdkService.getPTZLockInfo(cmd);
+        AjaxResult ajaxResult = cameraSdkService.getPTZLockInfo(cmd);
+        Integer byWorkMode = (Integer) ajaxResult.get("msg");
         if (byWorkMode == 0) {
             return AjaxResult.success("云台锁定状态:解锁");
         } else if (byWorkMode == 1) {
@@ -255,7 +271,7 @@
     public @ResponseBody
     AjaxResult defogcfg(@RequestBody CameraCmd cmd) {
         cmd.setOperator(SecurityUtils.getUserId());
-        return toAjax(cameraSdkService.controlDefogcfg(cmd));
+        return cameraSdkService.controlDefogcfg(cmd);
     }
 
     @ApiOperation("红外开关")
@@ -265,7 +281,7 @@
     public @ResponseBody
     AjaxResult infrarecfg(@RequestBody CameraCmd cmd) {
         cmd.setOperator(SecurityUtils.getUserId());
-        return toAjax(cameraSdkService.controlInfrarecfg(cmd));
+        return cameraSdkService.controlInfrarecfg(cmd);
     }
 
     @ApiOperation(value = "手动/自动聚焦", notes = "true手动flase自动")
@@ -275,7 +291,7 @@
     public @ResponseBody
     AjaxResult enableFocusMode(@RequestBody CameraCmd cmd) {
         cmd.setOperator(SecurityUtils.getUserId());
-        return toAjax(cameraSdkService.controlFocusMode(cmd));
+        return cameraSdkService.controlFocusMode(cmd);
     }
 
     @ApiOperation(value = "获取聚焦模式", notes = "1手动2自动")
@@ -284,8 +300,7 @@
     public @ResponseBody
     AjaxResult getFocusMode(@RequestBody CameraCmd cmd) {
         cmd.setOperator(SecurityUtils.getUserId());
-        String focusMode = cameraSdkService.getFocusMode(cmd);
-        return AjaxResult.success(focusMode);
+        return cameraSdkService.getFocusMode(cmd);
     }
 
     @ApiOperation("云台加热")
@@ -295,7 +310,7 @@
     public @ResponseBody
     AjaxResult heateRpwron(@RequestBody CameraCmd cmd) {
         cmd.setOperator(SecurityUtils.getUserId());
-        return toAjax(cameraSdkService.controlPTHeateRpwron(cmd));
+        return cameraSdkService.controlPTHeateRpwron(cmd);
     }
 
 
@@ -306,7 +321,7 @@
     public @ResponseBody
     AjaxResult cameraDeicing(@RequestBody CameraCmd cmd) {
         cmd.setOperator(SecurityUtils.getUserId());
-        return toAjax(cameraSdkService.controlCameraDeicing(cmd));
+        return cameraSdkService.controlCameraDeicing(cmd);
     }
 
     @ApiOperation("相机抓图")
@@ -320,6 +335,20 @@
         return toAjaxString(path, "相机抓图");
     }
 
+    @ApiOperation("本地抓图")
+    @PostMapping("/localCapture")
+    @Log(title = "相机抓图", businessType = BusinessType.CONTROL)
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"})
+    public @ResponseBody
+    void localCapture(@RequestBody CameraCmd cmd, HttpServletResponse response) throws IOException {
+        cmd.setOperator(SecurityUtils.getUserId());
+        response.setContentType("image/jpeg");
+        AjaxResult result = cameraSdkService.localCapture(cmd);
+        OutputStream outputStream = response.getOutputStream();
+        byte[] data = (byte[]) result.get("data");
+        outputStream.write(data);
+    }
+
     @ApiOperation("获取相机架设参数")
     @PostMapping("/getGisInfo")
     @Log(title = "获取相机架设参数", businessType = BusinessType.CONTROL)
@@ -327,13 +356,13 @@
     public @ResponseBody
     AjaxResult getGisInfo(@RequestBody CameraCmd cmd) {
         cmd.setOperator(SecurityUtils.getUserId());
-        return AjaxResult.success(cameraSdkService.getGisInfo(cmd));
+        return cameraSdkService.getGisInfo(cmd);
     }
 
-    @ApiOperation("录像")
+    //@ApiOperation("录像")
     @PostMapping("/record")
     @Log(title = "手动录像开始", businessType = BusinessType.CONTROL)
-    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"})
+    //@ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"})
     public @ResponseBody
     AjaxResult record(@RequestBody CameraCmd cmd) {
         cmd.setOperator(SecurityUtils.getUserId());
@@ -341,10 +370,10 @@
         return AjaxResult.success(url);
     }
 
-    @ApiOperation("手动录像开始")
+    //@ApiOperation("手动录像开始")
     @PostMapping("/recordStart")
     @Log(title = "手动录像开始", businessType = BusinessType.CONTROL)
-    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"})
+    //@ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"})
     public @ResponseBody
     AjaxResult recordStart(@RequestBody CameraCmd cmd) {
         cmd.setOperator(SecurityUtils.getUserId());
@@ -352,14 +381,38 @@
         return toAjax(b);
     }
 
-    @ApiOperation("手动录像停止")
+    //@ApiOperation("手动录像停止")
     @PostMapping("/recordStop")
     @Log(title = "手动录像停止", businessType = BusinessType.CONTROL)
-    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.recordBucketName", "cmd.recordObjectName"})
+    //@ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.recordBucketName", "cmd.recordObjectName"})
     public @ResponseBody
     AjaxResult recordStop(@RequestBody CameraCmd cmd) {
         cmd.setOperator(SecurityUtils.getUserId());
         String url = cameraSdkService.recordStopToMinio(cmd);
         return AjaxResult.success(url);
     }
+
+    @ApiOperation("本地录像开始")
+    @PostMapping("/localRecordStart")
+    @Log(title = "本地录像开始", businessType = BusinessType.CONTROL)
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"})
+    public @ResponseBody
+    AjaxResult localRecordStart(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        return cameraSdkService.localRecordStart(cmd);
+    }
+
+    @ApiOperation("本地录像停止")
+    @PostMapping("/localRecordStop")
+    @Log(title = "本地录像停止", businessType = BusinessType.CONTROL)
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.recordId"})
+    public @ResponseBody
+    void localRecordStop(@RequestBody CameraCmd cmd, HttpServletResponse response) throws IOException {
+        cmd.setOperator(SecurityUtils.getUserId());
+        response.setContentType("video/mp4");
+        AjaxResult result = cameraSdkService.localRecordStop(cmd);
+        byte[] recordBytes = (byte[]) result.get("data");
+        OutputStream outputStream = response.getOutputStream();
+        outputStream.write(recordBytes);
+    }
 }

--
Gitblit v1.9.3