| New file |
| | |
| | | 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; |
| | | } |
| | | } |