From e8ce7b13646fb144a6d2d99c564ef899531d892c Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Thu, 20 Apr 2023 14:14:02 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/jtdev' into jtdev
---
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/controller/HkController.java | 30 ++++
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/service/impl/HkServiceImpl.java | 194 ++++++++++++++++++++++++++++++++
skjcmanager/skjcmanager-common/src/main/java/cn/gistack/common/node/TreeNode.java | 5
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/constant/HkConstant.java | 20 +++
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/entity/Hk.java | 42 +++++++
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/service/HkService.java | 30 +++++
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/vo/HkVO.java | 10 +
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/util/GetCameraUtils.java | 2
8 files changed, 330 insertions(+), 3 deletions(-)
diff --git a/skjcmanager/skjcmanager-common/src/main/java/cn/gistack/common/node/TreeNode.java b/skjcmanager/skjcmanager-common/src/main/java/cn/gistack/common/node/TreeNode.java
index 9805600..b14e0cf 100644
--- a/skjcmanager/skjcmanager-common/src/main/java/cn/gistack/common/node/TreeNode.java
+++ b/skjcmanager/skjcmanager-common/src/main/java/cn/gistack/common/node/TreeNode.java
@@ -32,6 +32,11 @@
private String name;
/**
+ * 层级
+ */
+ private String level;
+
+ /**
* 子孙节点
*/
private List<TreeNode> children = new ArrayList<>();
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/constant/HkConstant.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/constant/HkConstant.java
index 912c6da..d6322c4 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/constant/HkConstant.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/constant/HkConstant.java
@@ -75,4 +75,24 @@
*/
public static final String manualCaptureUrls = "/api/video/v1/manualCapture";
+ /**
+ * 查询区域根节点数据url
+ */
+ public static final String regionsRootUrls = "/api/resource/v1/regions/root";
+
+ /**
+ * 获取摄像头在线信息
+ */
+ public static final String onlineCameraGetUrls = "/api/nms/v1/online/camera/get";
+
+ /**
+ * 根据编号获取监控点详细信息
+ */
+ public static final String camerasIndexCodeUrls = "/api/resource/v1/cameras/indexCode";
+
+ /**
+ * 根据编号获取区域详细信息
+ */
+ public static final String regionInfoUrls = "/api/resource/v1/region/regionCatalog/regionInfo";
+
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/controller/HkController.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/controller/HkController.java
index c2d6b4b..79a835b 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/controller/HkController.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/controller/HkController.java
@@ -2,6 +2,7 @@
import cn.gistack.sm.hk.constant.HkConstant;
import cn.gistack.sm.hk.constant.ProtocolConstant;
+import cn.gistack.sm.hk.service.HkService;
import cn.gistack.sm.hk.vo.HkVO;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api;
@@ -12,10 +13,9 @@
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.*;
-import java.util.HashMap;
import java.util.Map;
-import static cn.gistack.sm.hk.util.GetCameraPreviewURL.*;
+import static cn.gistack.sm.hk.util.GetCameraUtils.*;
/**
* @author zhongrj
@@ -28,6 +28,8 @@
@RequestMapping("/hk/hk")
@AllArgsConstructor
public class HkController {
+
+ private final HkService hkService;
/**
* 分页列表查询
@@ -108,4 +110,28 @@
return R.data(result);
}
+ /**
+ * 懒加载树
+ * @param hk 查询参数
+ * @return
+ */
+ @ApiOperation(value = "海康设备-懒加载树", notes = "海康设备-懒加载树")
+ @GetMapping(value = "/lazy-tree")
+ public R lazyTree(HkVO hk) {
+ // 查询海康设备懒加载树并返回
+ return R.data(hkService.lazyTree(hk));
+ }
+
+ /**
+ * 查询监控统计数量
+ * @param hk 查询参数
+ * @return
+ */
+ @ApiOperation(value = "海康设备-查询监控统计数量", notes = "海康设备-查询监控统计数量")
+ @GetMapping(value = "/getHkStatisticData")
+ public R getHkStatisticData(HkVO hk,Query query) {
+ // 查询海康设备懒加载树并返回
+ return R.data(hkService.getHkStatisticData(hk,query));
+ }
+
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/entity/Hk.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/entity/Hk.java
new file mode 100644
index 0000000..ed8acd6
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/entity/Hk.java
@@ -0,0 +1,42 @@
+package cn.gistack.sm.hk.entity;
+
+import lombok.Data;
+
+/**
+ * 海康实体类
+ * @author zhongrj
+ * @date 2023-04-19
+ */
+@Data
+public class Hk {
+
+ /**
+ * 摄像头名称
+ */
+ private String cameraName;
+
+ /**
+ * 摄像头播放编号
+ */
+ private String cameraIndexCode;
+
+ /**
+ * 摄像头预览url
+ */
+ private String previewUrl;
+
+ /**
+ * 摄像头地址信息
+ */
+ private String address;
+
+ /**
+ * 1:在线 0:离线 -1:未检测
+ */
+ private Integer status;
+
+ /**
+ * 水库名称
+ */
+ private String waterName;
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/service/HkService.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/service/HkService.java
new file mode 100644
index 0000000..e9c6a61
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/service/HkService.java
@@ -0,0 +1,30 @@
+package cn.gistack.sm.hk.service;
+
+import cn.gistack.common.node.TreeNode;
+import cn.gistack.sm.hk.vo.HkVO;
+import org.springblade.core.mp.support.Query;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 海康服务接口层
+ * @author zhongrj
+ * @date 2023-04-18
+ */
+public interface HkService {
+
+ /**
+ * 懒加载树
+ * @param hk 查询参数
+ * @return
+ */
+ List<TreeNode> lazyTree(HkVO hk);
+
+ /**
+ * 查询监控统计数量
+ * @param hk 查询参数
+ * @return
+ */
+ Map<String, Object> getHkStatisticData(HkVO hk, Query query);
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/service/impl/HkServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/service/impl/HkServiceImpl.java
new file mode 100644
index 0000000..f24a2ab
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/service/impl/HkServiceImpl.java
@@ -0,0 +1,194 @@
+package cn.gistack.sm.hk.service.impl;
+
+import cn.gistack.common.node.TreeNode;
+import cn.gistack.sm.hk.entity.Hk;
+import cn.gistack.sm.hk.service.HkService;
+import cn.gistack.sm.hk.util.GetCameraUtils;
+import cn.gistack.sm.hk.vo.HkVO;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import org.springblade.core.mp.support.Query;
+import org.springframework.stereotype.Service;
+
+import java.lang.reflect.Array;
+import java.util.*;
+
+import static cn.gistack.sm.hk.constant.HkConstant.*;
+
+/**
+ * 海康服务接口实现层
+ * @author zhongrj
+ * @date 2023-04-18
+ */
+@Service
+public class HkServiceImpl implements HkService {
+
+ /**
+ * 懒加载树
+ * @param hk 查询参数
+ * @return
+ */
+ @Override
+ public List<TreeNode> lazyTree(HkVO hk) {
+ List<TreeNode> list = new ArrayList<>();
+ if (hk.getLevel().equals(0)){
+ // 查询第一级,并计算下级摄像头总数,获取湖北省的行政区数据
+
+ }else {
+ // 查询其它层级
+
+ }
+ // 返回数据
+ return list;
+ }
+
+ /**
+ * 查询监控统计数量
+ * @param hk 查询参数
+ * @return
+ */
+ @Override
+ public Map<String, Object> getHkStatisticData(HkVO hk, Query query) {
+ Map<String, Object> hashMap = new HashMap<>();
+ // 获取根区域编号
+ String rootRegionId = getRootRegionId(hk);
+ // 查询摄像头统计数据(需要有在线状态)
+ hashMap.put("total",getCameraStatisticCount(rootRegionId,null));
+ hashMap.put("onlineTotal",getCameraStatisticCount(rootRegionId,1));
+ hashMap.put("offlineTotal",getCameraStatisticCount(rootRegionId,0));
+ // 查询摄像头集合数据
+ hashMap.put("list",getCameraStatisticList(rootRegionId, hk,query));
+ // 返回数据
+ return hashMap;
+ }
+
+ /**
+ * 摄像头数据处理
+ * @param list
+ * @return
+ */
+ private Object handleCameraList(JSONArray list) {
+ List<Hk> cameraList = new ArrayList<>();
+ // 当前只有水库名称,还需查询地址,cameraIndexCode(用于视频播放),摄像头图片
+ for (int i = 0; i < list.size(); i++) {
+ Hk hk = new Hk();
+ hk.setCameraIndexCode(((JSONObject) list.get(i)).getString("indexCode"));
+ hk.setStatus(((JSONObject) list.get(i)).getInteger("online"));
+ hk.setWaterName(((JSONObject) list.get(i)).getString("regionName"));
+ hk.setCameraName(((JSONObject) list.get(i)).getString("cn"));
+// hk.setCameraName(getCameraName(hk.getCameraIndexCode()));
+// hk.setAddress(getCameraAddress(((JSONObject) list.get(i)).getString("regionIndexCode")),hk.getCameraIndexCode());
+ cameraList.add(hk);
+ }
+ return cameraList;
+ }
+
+ /**
+ * 根据编号获取区域详细信息
+ * @param regionIndexCode
+ * @param cameraIndexCode
+ * @return
+ */
+ private String getCameraAddress(String regionIndexCode,String cameraIndexCode) {
+ // 组装请求参数
+ JSONObject jsonBody = new JSONObject();
+ jsonBody.put("regionIndexCodes", Arrays.asList(regionIndexCode));
+ List<Map<String, Object>> list = new ArrayList<>();
+ Map<String, Object> map = new HashMap<>();
+ map.put("key","indexCode");
+ map.put("operator",0);
+ map.put("values",Arrays.asList(cameraIndexCode));
+ list.add(map);
+ jsonBody.put("expressions", list);
+ String body = jsonBody.toJSONString();
+ String result = GetCameraUtils.common(regionInfoUrls, body);
+ // 数据处理
+ JSONObject jsonObject = JSONObject.parseObject(result);
+ JSONObject data = (JSONObject) jsonObject.get("data");
+ JSONArray jsonArray = JSON.parseArray(data.getString("list"));
+ String name = ((JSONObject)jsonArray.get(0)).getString("regionPathName");
+ // 返回
+ return name;
+ }
+
+ /**
+ * 根据编号获取监控点详细信息
+ * @param cameraIndexCode
+ * @return
+ */
+ private JSONObject getCameraDetail(String cameraIndexCode) {
+ // 组装请求参数
+ JSONObject jsonBody = new JSONObject();
+ jsonBody.put("cameraIndexCode", cameraIndexCode);
+ String body = jsonBody.toJSONString();
+ String result = GetCameraUtils.common(camerasIndexCodeUrls, body);
+ // 数据处理
+ JSONObject jsonObject = JSONObject.parseObject(result);
+ // 返回
+ return (JSONObject) jsonObject.get("data");
+ }
+
+ /**
+ * 查询海康摄像头列表
+ * @param regionId
+ * @param hk
+ * @param query
+ * @return
+ */
+ private JSONObject getCameraStatisticList(String regionId, HkVO hk,Query query) {
+ // 组装请求参数
+ JSONObject jsonBody = new JSONObject();
+ jsonBody.put("regionId", regionId);
+ jsonBody.put("pageNo", query.getCurrent());
+ jsonBody.put("pageSize", query.getSize());
+ if (null!=hk.getStatus()){
+ jsonBody.put("status",hk.getStatus());
+ }
+ String body = jsonBody.toJSONString();
+ String result = GetCameraUtils.common(onlineCameraGetUrls, body);
+ // 数据处理
+ JSONObject jsonObject = JSONObject.parseObject(result);
+ // 返回数据
+ return (JSONObject) jsonObject.get("data");
+ }
+
+ /**
+ * 查询海康摄像头总数,在线,离线数
+ * @param regionId
+ * @param status
+ * @return
+ */
+ private String getCameraStatisticCount(String regionId,Integer status) {
+ // 组装请求参数
+ JSONObject jsonBody = new JSONObject();
+ jsonBody.put("regionId", regionId);
+ if (null!=status){
+ jsonBody.put("status",status);
+ }
+ String body = jsonBody.toJSONString();
+ String result = GetCameraUtils.common(onlineCameraGetUrls, body);
+ // 数据处理
+ JSONObject jsonObject = JSONObject.parseObject(result);
+ JSONObject data = (JSONObject) jsonObject.get("data");
+ // 返回数据
+ return data.getString("total");
+ }
+
+ /**
+ * 获取根节点区域信息
+ * @param hk
+ */
+ private String getRootRegionId(HkVO hk) {
+ // 组装请求参数
+ JSONObject jsonBody = new JSONObject();
+ String body = jsonBody.toJSONString();
+ String result = GetCameraUtils.common(regionsRootUrls, body);
+ // 数据处理
+ JSONObject jsonObject = JSONObject.parseObject(result);
+ JSONObject data = (JSONObject) jsonObject.get("data");
+ String indexCode = data.get("indexCode").toString();
+ // 返回
+ return indexCode;
+ }
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/util/GetCameraPreviewURL.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/util/GetCameraUtils.java
similarity index 99%
rename from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/util/GetCameraPreviewURL.java
rename to skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/util/GetCameraUtils.java
index 1fa4208..7db553d 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/util/GetCameraPreviewURL.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/util/GetCameraUtils.java
@@ -15,7 +15,7 @@
import static cn.gistack.sm.hk.constant.HkConstant.ARTEMIS_PATH;
-public class GetCameraPreviewURL {
+public class GetCameraUtils {
/**
* 公共方法
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/vo/HkVO.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/vo/HkVO.java
index 13868db..e456098 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/vo/HkVO.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/vo/HkVO.java
@@ -105,5 +105,15 @@
*/
private Integer transmode;
+ /**
+ * 层级
+ */
+ private Integer level;
+
+ /**
+ * 摄像头在线离线状态 1-在线,0-离线
+ */
+ private Integer status;
+
}
--
Gitblit v1.9.3