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