瀏覽代碼

三维定位

lchao 1 天之前
父節點
當前提交
85a2968120

+ 15 - 0
src/main/java/com/sooka/sponest/monitor/dahua/controller/DahuaController.java

@@ -1,5 +1,6 @@
 package com.sooka.sponest.monitor.dahua.controller;
 
+import com.dahuatech.hutool.json.JSONObject;
 import com.dahuatech.icc.exception.ClientException;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.web.domain.AjaxResult;
@@ -19,6 +20,8 @@ import lombok.extern.slf4j.Slf4j;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.web.bind.annotation.*;
+import springfox.documentation.spring.web.json.Json;
+
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
@@ -65,6 +68,18 @@ public class DahuaController {
     public String getTokenByPassword() {
         return dahuaService.getTokenByPassword();
     }
+    
+    /**
+     * 地视联动、三维定位接口
+     * 根据经纬度和通道编码计算PT角度和坐席位置
+     * */
+    @Log(title = "大华", businessType = BusinessType.OTHER)
+    @ApiOperation(value = "地视联动、三维定位计算", notes = "根据经纬度和通道编码计算PT角度和坐席位置")
+    @RequestMapping(value = "/calPTAngleAndSitPosition",method = POST)
+    public AjaxResult calPTAngleAndSitPosition(@RequestBody JSONObject json) {
+        return dahuaService.calPTAngleAndSitPosition(json);
+    }
+
 
     /**
      * 订阅大华事件方法,更换icc服务后需要更改nacos配置

+ 6 - 0
src/main/java/com/sooka/sponest/monitor/dahua/service/DahuaService.java

@@ -118,4 +118,10 @@ public interface DahuaService {
     AjaxResult cameraSteering(Double lng, Double lat, List<String> list);
 
     AjaxResult reportMp4ToFileService(List<DaHuaMp4VO> mp4VO);
+
+    /**
+     * 地视联动、三维定位接口
+     * 根据经纬度和通道编码计算PT角度和坐席位置
+     */
+    AjaxResult calPTAngleAndSitPosition(JSONObject json);
 }

+ 31 - 0
src/main/java/com/sooka/sponest/monitor/dahua/service/impl/DahuaServiceImpl.java

@@ -873,5 +873,36 @@ public class DahuaServiceImpl extends BaseService implements DahuaService {
         eventBaseService.downloads(downloads);
     }
 
+    /**
+     * 地视联动、三维定位接口
+     * 根据经纬度和通道编码计算PT角度和坐席位置
+     */
+    @Override
+    public AjaxResult calPTAngleAndSitPosition(JSONObject json) {
+        String token = getTokenByPassword();
+        List<String> channelCodes = JSONUtil.toList(JSONUtil.parseArray(json.get("channelCodes")), String.class);
+        for (String channelCode : channelCodes) {
+            String prBody = null;
+            String CALCULATE_PT_ANGLE_URL = host + "/evo-apigw/evo-gmcommon/1.3.2/watchtower/calPTAngleAndSitPosition?lng="
+                    + json.get("lng") + "&lat=" + json.get("lat") + "&channelCode=" + channelCode;
+            try {
+                IccHttpHttpRequest pr = new IccHttpHttpRequest(CALCULATE_PT_ANGLE_URL, Method.GET);
+                pr.getHttpRequest().header("Authorization", "bearer " + token);
+                prBody = pr.execute();
+                log.info("----结束执行----{}------返回报文:{}", "地视联动、三维定位计算", prBody);
+                return AjaxResult.success("操作成功", JSON.parseObject(prBody));
+            } catch (Exception ex) {
+                ex.printStackTrace();
+                if (prBody != null) {
+                    JSONObject jsonObject = JSONUtil.parseObj(prBody);
+                    return AjaxResult.error("操作失败", jsonObject.get("errMsg").toString());
+                }
+                return AjaxResult.error("操作失败", "计算异常,请检查当前角度是否在可视域范围内且设备已完成标定");
+            }
+        }
+        return AjaxResult.success();
+
+    }
+
 
 }