From 451193fab6de722dabecc0ecf72c7aedff815ccf Mon Sep 17 00:00:00 2001 From: yiming Date: Mon, 16 May 2022 15:05:11 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=94=9D=E5=83=8F?= =?UTF-8?q?=E9=A0=AD=E9=8F=88=E6=8E=A5=E7=8B=80=E6=85=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/main/java/com/zhehekeji/web/entity/Camera.java | 4 ++++ .../com/zhehekeji/web/lib/hik/HikExceptionCallBack.java | 4 ++-- .../com/zhehekeji/web/lib/hik/HikLoginModuleImpl.java | 2 +- .../java/com/zhehekeji/web/service/CameraService.java | 9 +++++++++ web/src/main/resources/application-prod.yml | 2 +- 5 files changed, 17 insertions(+), 4 deletions(-) diff --git a/web/src/main/java/com/zhehekeji/web/entity/Camera.java b/web/src/main/java/com/zhehekeji/web/entity/Camera.java index 6a68825..4f651e2 100644 --- a/web/src/main/java/com/zhehekeji/web/entity/Camera.java +++ b/web/src/main/java/com/zhehekeji/web/entity/Camera.java @@ -1,6 +1,7 @@ package com.zhehekeji.web.entity; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; @@ -34,6 +35,9 @@ public class Camera { @ApiModelProperty(value = "预置点 增长值",hidden = true) private Integer ptzId; + @TableField(exist = false) + private String status; + @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") private LocalDateTime updateTime; } diff --git a/web/src/main/java/com/zhehekeji/web/lib/hik/HikExceptionCallBack.java b/web/src/main/java/com/zhehekeji/web/lib/hik/HikExceptionCallBack.java index aec408c..033ef75 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/hik/HikExceptionCallBack.java +++ b/web/src/main/java/com/zhehekeji/web/lib/hik/HikExceptionCallBack.java @@ -12,10 +12,10 @@ public class HikExceptionCallBack implements HCNetSDK.FExceptionCallBack { public void invoke(int dwType, int lUserID, int lHandle, Pointer pUser) { Integer cameraId =CameraConnMap.getCameraIdByLoginId(new NetSDKLib.LLong(lUserID)); if(dwType == 32768){ - + //CameraConnMap.disConn(cameraId); log.error("hik disconnect,cameraId:{}", cameraId); }else if(dwType == 32791){ - + //CameraConnMap.conn(cameraId); log.info("hik reconnect,cameraId:{}", CameraConnMap.getCameraIdByLoginId(new NetSDKLib.LLong(lUserID))); } diff --git a/web/src/main/java/com/zhehekeji/web/lib/hik/HikLoginModuleImpl.java b/web/src/main/java/com/zhehekeji/web/lib/hik/HikLoginModuleImpl.java index b777d45..37f09a0 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/hik/HikLoginModuleImpl.java +++ b/web/src/main/java/com/zhehekeji/web/lib/hik/HikLoginModuleImpl.java @@ -57,7 +57,7 @@ public class HikLoginModuleImpl implements CameraControlLoginModule { } //检测球机连接状态 - public Boolean connectStatus(int userId){ + public static Boolean connectStatus(int userId){ return hcNetsdk.NET_DVR_RemoteControl(userId,20005,null,0); } diff --git a/web/src/main/java/com/zhehekeji/web/service/CameraService.java b/web/src/main/java/com/zhehekeji/web/service/CameraService.java index cc2514d..73b1086 100644 --- a/web/src/main/java/com/zhehekeji/web/service/CameraService.java +++ b/web/src/main/java/com/zhehekeji/web/service/CameraService.java @@ -11,6 +11,7 @@ import com.zhehekeji.web.entity.CameraIOConfig; import com.zhehekeji.web.lib.CameraConnMap; import com.zhehekeji.web.lib.CameraControlLoginModule; import com.zhehekeji.web.lib.CameraControlModule; +import com.zhehekeji.web.lib.hik.HikLoginModuleImpl; import com.zhehekeji.web.lib.joyware.NetSDKLib; import com.zhehekeji.web.mapper.CameraIOConfigMapper; import com.zhehekeji.web.mapper.CameraIOMapper; @@ -105,6 +106,14 @@ public class CameraService { public PageInfo cameras(StreetSearch streetSearch) { PageHelper.startPage(streetSearch.getPageNum(), streetSearch.getPageSize()); List cameras = cameraMapper.selectByMap(new HashMap<>(0)); + cameras.forEach(camera -> { + Boolean ok = HikLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId()).intValue()); + if(ok){ + camera.setStatus("連接正常"); + }else { + camera.setStatus("未連接"); + } + }); return new PageInfo<>(cameras); } diff --git a/web/src/main/resources/application-prod.yml b/web/src/main/resources/application-prod.yml index 3dfcf2b..49a192d 100644 --- a/web/src/main/resources/application-prod.yml +++ b/web/src/main/resources/application-prod.yml @@ -37,7 +37,7 @@ cameraConfig: # 下载mp4延迟 海康的下载mp4需要2分钟 # 利珀延迟10s就可 # 单位毫秒 - delayDownloadMp4: 120000 + delayDownloadMp4: 10000 # ------------ # -----图片 mp4下载地址 savePath: From 7f7e2cf6e81018077de4a4df5ff7b64b81434a8a Mon Sep 17 00:00:00 2001 From: yiming Date: Mon, 16 May 2022 15:37:28 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=94=9D=E5=83=8F?= =?UTF-8?q?=E9=A0=AD=E9=8F=88=E6=8E=A5=E7=8B=80=E6=85=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zhehekeji/web/service/CameraService.java | 45 +++++++++++++++---- 1 file changed, 37 insertions(+), 8 deletions(-) diff --git a/web/src/main/java/com/zhehekeji/web/service/CameraService.java b/web/src/main/java/com/zhehekeji/web/service/CameraService.java index 73b1086..99c1cea 100644 --- a/web/src/main/java/com/zhehekeji/web/service/CameraService.java +++ b/web/src/main/java/com/zhehekeji/web/service/CameraService.java @@ -34,6 +34,7 @@ import java.io.IOException; import java.time.LocalDateTime; import java.util.HashMap; import java.util.List; +import java.util.concurrent.CountDownLatch; @Service @Slf4j @@ -103,20 +104,48 @@ public class CameraService { cameraMapper.deleteById(id); } - public PageInfo cameras(StreetSearch streetSearch) { + public PageInfo cameras(StreetSearch streetSearch){ PageHelper.startPage(streetSearch.getPageNum(), streetSearch.getPageSize()); List cameras = cameraMapper.selectByMap(new HashMap<>(0)); - cameras.forEach(camera -> { - Boolean ok = HikLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId()).intValue()); - if(ok){ - camera.setStatus("連接正常"); - }else { - camera.setStatus("未連接"); + if(cameras.size() > 0){ + CountDownLatch latch = new CountDownLatch(cameras.size()); + cameras.forEach(camera -> { + StatusThread statusThread = new StatusThread(camera,latch); + statusThread.start(); + }); + try { + latch.await(); + } catch (InterruptedException e) { + e.printStackTrace(); } - }); + } return new PageInfo<>(cameras); } + public class StatusThread extends Thread{ + private Camera camera; + private CountDownLatch latch; + public StatusThread(Camera camera,CountDownLatch latch){ + this.camera = camera; + this.latch = latch; + } + @Override + public void run() { + try { + Boolean ok = HikLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId()).intValue()); + if(ok){ + camera.setStatus("連接正常"); + }else { + camera.setStatus("未連接"); + } + }catch (Exception e){ + camera.setStatus("未連接"); + }finally { + latch.countDown(); + } + } + } + public Camera detail(Integer id){ return cameraMapper.selectById(id); }