增加球机的连接状态

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

@ -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;
@ -30,6 +31,9 @@ public class Camera {
private String rtcServer;
@TableField(exist = false)
private String status;
private Integer rtcServerPort;
@ApiModelProperty(value = "预置点 增长值",hidden = true)
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);
}

@ -1,7 +1,11 @@
package com.zhehekeji.web.lib.joyware;
import com.sun.jna.CallbackThreadInitializer;
import com.sun.jna.Memory;
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.joyware.NetSDKLib.LLong;
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 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
* Init
@ -118,7 +140,7 @@ public class JoywareLoginModuleImpl implements CameraControlLoginModule {
if(m_hLoginHandle.longValue()==0){
return null;
}
log.info("joyware login success");
log.info("joyware login success,loginId:{}",m_hLoginHandle.longValue());
return m_hLoginHandle;
}

@ -11,6 +11,8 @@ 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.JoywareLoginModuleImpl;
import com.zhehekeji.web.lib.joyware.NetSDKLib;
import com.zhehekeji.web.mapper.CameraIOConfigMapper;
import com.zhehekeji.web.mapper.CameraIOMapper;
@ -33,6 +35,7 @@ import java.io.IOException;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.CountDownLatch;
@Service
@Slf4j
@ -105,9 +108,53 @@ public class CameraService {
public PageInfo<Camera> cameras(StreetSearch streetSearch) {
PageHelper.startPage(streetSearch.getPageNum(), streetSearch.getPageSize());
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);
}
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){
return cameraMapper.selectById(id);
}

Loading…
Cancel
Save