增加球机的连接状态

merge-requests/5/merge
yiming 4 years ago
parent 5d5fa9d2d6
commit 4e518c19d3

@ -1,6 +1,7 @@
package com.zhehekeji.web.entity; package com.zhehekeji.web.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
@ -30,6 +31,9 @@ public class Camera {
private String rtcServer; private String rtcServer;
@TableField(exist = false)
private String status;
private Integer rtcServerPort; private Integer rtcServerPort;
@ApiModelProperty(value = "预置点 增长值",hidden = true) @ApiModelProperty(value = "预置点 增长值",hidden = true)
private Integer ptzId; private Integer ptzId;

@ -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); return hcNetsdk.NET_DVR_RemoteControl(userId,20005,null,0);
} }

@ -1,7 +1,11 @@
package com.zhehekeji.web.lib.joyware; package com.zhehekeji.web.lib.joyware;
import com.sun.jna.CallbackThreadInitializer; import com.sun.jna.CallbackThreadInitializer;
import com.sun.jna.Memory;
import com.sun.jna.Native; import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;
import com.zhehekeji.web.lib.CameraConnMap;
import com.zhehekeji.web.lib.CameraControlLoginModule; import com.zhehekeji.web.lib.CameraControlLoginModule;
import com.zhehekeji.web.lib.joyware.NetSDKLib.LLong; import com.zhehekeji.web.lib.joyware.NetSDKLib.LLong;
import com.zhehekeji.web.lib.joyware.NetSDKLib.NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY; import com.zhehekeji.web.lib.joyware.NetSDKLib.NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY;
@ -34,6 +38,24 @@ public class JoywareLoginModuleImpl implements CameraControlLoginModule {
public static CallBack.Mp4ReceiveCB mp4ReceiveCB= new CallBack.Mp4ReceiveCB(); public static CallBack.Mp4ReceiveCB mp4ReceiveCB= new CallBack.Mp4ReceiveCB();
public static Boolean connectStatus(LLong userId){
IntByReference retLen = new IntByReference(0);
Pointer p = new Memory(Integer.SIZE);
p.clear(Integer.SIZE);
if (!netsdk.CLIENT_QueryDevState(userId,
NetSDKLib.NET_DEVSTATE_ONLINE,
p,
Integer.SIZE,
retLen,
500)) {
log.error("joyware connectStatus error,errorCode:{}",netsdk.CLIENT_GetLastError());
return false;
}
int []a = new int[1];
p.read(0, a, 0, 1);
return a[0] == 1;
}
/** /**
* \if ENGLISH_LANG * \if ENGLISH_LANG
* Init * Init
@ -118,7 +140,7 @@ public class JoywareLoginModuleImpl implements CameraControlLoginModule {
if(m_hLoginHandle.longValue()==0){ if(m_hLoginHandle.longValue()==0){
return null; return null;
} }
log.info("joyware login success"); log.info("joyware login success,loginId:{}",m_hLoginHandle.longValue());
return m_hLoginHandle; return m_hLoginHandle;
} }

@ -11,6 +11,8 @@ import com.zhehekeji.web.entity.CameraIOConfig;
import com.zhehekeji.web.lib.CameraConnMap; import com.zhehekeji.web.lib.CameraConnMap;
import com.zhehekeji.web.lib.CameraControlLoginModule; import com.zhehekeji.web.lib.CameraControlLoginModule;
import com.zhehekeji.web.lib.CameraControlModule; import com.zhehekeji.web.lib.CameraControlModule;
import com.zhehekeji.web.lib.hik.HikLoginModuleImpl;
import com.zhehekeji.web.lib.joyware.JoywareLoginModuleImpl;
import com.zhehekeji.web.lib.joyware.NetSDKLib; import com.zhehekeji.web.lib.joyware.NetSDKLib;
import com.zhehekeji.web.mapper.CameraIOConfigMapper; import com.zhehekeji.web.mapper.CameraIOConfigMapper;
import com.zhehekeji.web.mapper.CameraIOMapper; import com.zhehekeji.web.mapper.CameraIOMapper;
@ -33,6 +35,7 @@ import java.io.IOException;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.concurrent.CountDownLatch;
@Service @Service
@Slf4j @Slf4j
@ -105,9 +108,53 @@ public class CameraService {
public PageInfo<Camera> cameras(StreetSearch streetSearch) { public PageInfo<Camera> cameras(StreetSearch streetSearch) {
PageHelper.startPage(streetSearch.getPageNum(), streetSearch.getPageSize()); PageHelper.startPage(streetSearch.getPageNum(), streetSearch.getPageSize());
List<Camera> cameras = cameraMapper.selectByMap(new HashMap<>(0)); List<Camera> cameras = cameraMapper.selectByMap(new HashMap<>(0));
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); 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 = false;
if(configProperties.getCameraConfig().getCameraType() == ConfigProperties.HIK_CAMERA){
ok = HikLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId()).intValue());
}else {
ok = JoywareLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId()));
}
if(ok){
camera.setStatus("连接正常");
}else {
camera.setStatus("未连接");
}
}catch (Exception e){
camera.setStatus("未连接");
}finally {
latch.countDown();
}
}
}
public Camera detail(Integer id){ public Camera detail(Integer id){
return cameraMapper.selectById(id); return cameraMapper.selectById(id);
} }

Loading…
Cancel
Save