|
|
|
|
@ -1,5 +1,8 @@ |
|
|
|
|
package org.springblade.hospital.hik.alarm; |
|
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSON; |
|
|
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
|
|
|
|
import com.sun.jna.Native; |
|
|
|
|
import com.sun.jna.NativeLong; |
|
|
|
|
import com.sun.jna.Pointer; |
|
|
|
|
@ -10,11 +13,15 @@ import org.springblade.hospital.hik.NetSDKDemo.HCNetSDK; |
|
|
|
|
import org.springblade.hospital.mapper.AlarmInformationMapper; |
|
|
|
|
import org.springblade.hospital.service.IAlarmInformationService; |
|
|
|
|
import org.springblade.hospital.service.impl.AlarmInformationServiceImpl; |
|
|
|
|
import org.springblade.hospital.utils.ExternalUtils; |
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
|
import org.springframework.boot.CommandLineRunner; |
|
|
|
|
import org.springframework.scheduling.annotation.Scheduled; |
|
|
|
|
import org.springframework.stereotype.Component; |
|
|
|
|
|
|
|
|
|
import java.util.HashMap; |
|
|
|
|
import java.util.List; |
|
|
|
|
import java.util.Map; |
|
|
|
|
import java.util.Scanner; |
|
|
|
|
|
|
|
|
|
@Component |
|
|
|
|
@ -27,7 +34,10 @@ public class Alarm implements CommandLineRunner { |
|
|
|
|
static int lListenHandle = -1;//报警监听句柄
|
|
|
|
|
static FMSGCallBack_V31 fMSFCallBack_V31 = null; |
|
|
|
|
static FMSGCallBack fMSFCallBack; |
|
|
|
|
static Map<String, Integer> numMap; |
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
ExternalUtils externalUtils; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 动态库加载 |
|
|
|
|
@ -45,7 +55,8 @@ public class Alarm implements CommandLineRunner { |
|
|
|
|
// strDllPath = "C:\\Users\\Administrator\\Desktop\\grpc-jar\\lib\\HCNetSDK.dll";
|
|
|
|
|
else if (osSelect.isLinux()) |
|
|
|
|
//Linux系统加载库路径
|
|
|
|
|
strDllPath = System.getProperty("user.dir") + "/lib/libhcnetsdk.so"; |
|
|
|
|
// strDllPath = System.getProperty("user.dir") + "/lib/libhcnetsdk.so";
|
|
|
|
|
strDllPath = "/home/hospital/project/lib/libhcnetsdk.so"; |
|
|
|
|
hCNetSDK = (HCNetSDK) Native.loadLibrary(strDllPath, HCNetSDK.class); |
|
|
|
|
} catch (Exception ex) { |
|
|
|
|
System.out.println("loadLibrary: " + strDllPath + " Error: " + ex.getMessage()); |
|
|
|
|
@ -92,7 +103,8 @@ public class Alarm implements CommandLineRunner { |
|
|
|
|
System.out.println("登录失败,错误码为" + hCNetSDK.NET_DVR_GetLastError()); |
|
|
|
|
return; |
|
|
|
|
} else { |
|
|
|
|
System.out.println(ip + ":设备登录成功!"); |
|
|
|
|
numMap.put(new String(m_strDeviceInfo.struDeviceV30.sSerialNumber).trim(), lUserID); |
|
|
|
|
System.out.println(ip + ":设备登录成功!" + "设备序列号:" + new String(m_strDeviceInfo.struDeviceV30.sSerialNumber).trim()); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
@ -127,7 +139,7 @@ public class Alarm implements CommandLineRunner { |
|
|
|
|
*/ |
|
|
|
|
// 每天22点10分30秒执行一次
|
|
|
|
|
// @Scheduled(cron = "30 10 22 * * ?")
|
|
|
|
|
public static void setAlarm() { |
|
|
|
|
public static void setAlarm(int userId) { |
|
|
|
|
if (lAlarmHandle < 0)//尚未布防,需要布防
|
|
|
|
|
{ |
|
|
|
|
//报警布防参数设置
|
|
|
|
|
@ -137,14 +149,13 @@ public class Alarm implements CommandLineRunner { |
|
|
|
|
m_strAlarmInfo.byAlarmInfoType = 1; // 智能交通报警信息上传类型:0- 老报警信息(NET_DVR_PLATE_RESULT),1- 新报警信息(NET_ITS_PLATE_RESULT)
|
|
|
|
|
m_strAlarmInfo.byDeployType = 1; //布防类型:0-客户端布防,1-实时布防
|
|
|
|
|
m_strAlarmInfo.write(); |
|
|
|
|
lAlarmHandle = hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID, m_strAlarmInfo); |
|
|
|
|
lAlarmHandle = hCNetSDK.NET_DVR_SetupAlarmChan_V41(userId, m_strAlarmInfo); |
|
|
|
|
System.out.println("lAlarmHandle: " + lAlarmHandle); |
|
|
|
|
if (lAlarmHandle == -1) { |
|
|
|
|
System.out.println("布防失败,错误码为" + hCNetSDK.NET_DVR_GetLastError()); |
|
|
|
|
return; |
|
|
|
|
} else { |
|
|
|
|
System.out.println("布防成功"); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
System.out.println("设备已经布防,请先撤防!"); |
|
|
|
|
@ -191,14 +202,13 @@ public class Alarm implements CommandLineRunner { |
|
|
|
|
/** |
|
|
|
|
* 获取设备状态信息 |
|
|
|
|
*/ |
|
|
|
|
public static HCNetSDK.NET_DVR_ALARMHOST_MAIN_STATUS_V40 getStatus() { |
|
|
|
|
public static HCNetSDK.NET_DVR_ALARMHOST_MAIN_STATUS_V40 getStatus(String number) { |
|
|
|
|
IntByReference ibrBytesReturned = new IntByReference(0); |
|
|
|
|
HCNetSDK.NET_DVR_ALARMHOST_MAIN_STATUS_V40 statusV40 = new HCNetSDK.NET_DVR_ALARMHOST_MAIN_STATUS_V40(); |
|
|
|
|
statusV40.write(); |
|
|
|
|
Pointer pointer = statusV40.getPointer(); |
|
|
|
|
boolean status = hCNetSDK.NET_DVR_GetDVRConfig(lUserID, HCNetSDK.NET_DVR_GET_ALARMHOST_MAIN_STATUS_V40, 0Xffffffff, pointer, statusV40.size(), ibrBytesReturned); |
|
|
|
|
boolean status = hCNetSDK.NET_DVR_GetDVRConfig(numMap.get(number), HCNetSDK.NET_DVR_GET_ALARMHOST_MAIN_STATUS_V40, 0Xffffffff, pointer, statusV40.size(), ibrBytesReturned); |
|
|
|
|
|
|
|
|
|
// boolean status = hCNetSDK.NET_DVR_RemoteControl(lUserID, HCNetSDK.NET_DVR_CHECK_USER_STATUS, null, 0);
|
|
|
|
|
if (status) { |
|
|
|
|
System.out.println("设备在线"); |
|
|
|
|
statusV40.read(); |
|
|
|
|
@ -271,8 +281,8 @@ public class Alarm implements CommandLineRunner { |
|
|
|
|
/** |
|
|
|
|
* 消警 |
|
|
|
|
*/ |
|
|
|
|
public static boolean xiaojing(int num) { |
|
|
|
|
boolean b = hCNetSDK.NET_DVR_AlarmHostClearAlarm(lUserID, num); |
|
|
|
|
public static boolean xiaojing(String hostSerialNumber, int num) { |
|
|
|
|
boolean b = hCNetSDK.NET_DVR_AlarmHostClearAlarm(numMap.get(hostSerialNumber), num); |
|
|
|
|
if (b) { |
|
|
|
|
System.out.println("消警成功"); |
|
|
|
|
} else { |
|
|
|
|
@ -284,8 +294,8 @@ public class Alarm implements CommandLineRunner { |
|
|
|
|
/** |
|
|
|
|
* 子系统布防 |
|
|
|
|
*/ |
|
|
|
|
public static boolean zibufang(int num) { |
|
|
|
|
boolean b = hCNetSDK.NET_DVR_AlarmHostSubSystemSetupAlarmChan(lUserID, num); |
|
|
|
|
public static boolean zibufang(String hostSerialNumber, int num) { |
|
|
|
|
boolean b = hCNetSDK.NET_DVR_AlarmHostSubSystemSetupAlarmChan(numMap.get(hostSerialNumber), num); |
|
|
|
|
if (b) { |
|
|
|
|
System.out.println("布防成功"); |
|
|
|
|
} else { |
|
|
|
|
@ -297,8 +307,8 @@ public class Alarm implements CommandLineRunner { |
|
|
|
|
/** |
|
|
|
|
* 子系统撤防 |
|
|
|
|
*/ |
|
|
|
|
public static boolean zichefang(int num) { |
|
|
|
|
boolean b = hCNetSDK.NET_DVR_AlarmHostSubSystemCloseAlarmChan(lUserID, num); |
|
|
|
|
public static boolean zichefang(String hostSerialNumber, int num) { |
|
|
|
|
boolean b = hCNetSDK.NET_DVR_AlarmHostSubSystemCloseAlarmChan(numMap.get(hostSerialNumber), num); |
|
|
|
|
if (b) { |
|
|
|
|
System.out.println("撤防成功"); |
|
|
|
|
} else { |
|
|
|
|
@ -310,11 +320,11 @@ public class Alarm implements CommandLineRunner { |
|
|
|
|
/** |
|
|
|
|
* 防区布防 |
|
|
|
|
*/ |
|
|
|
|
public static boolean fqbf(int num) { |
|
|
|
|
public static boolean fqbf(String hostSerialNumber, int num) { |
|
|
|
|
HCNetSDK.NET_DVR_ALARMIN_SETUP setup = new HCNetSDK.NET_DVR_ALARMIN_SETUP(); |
|
|
|
|
setup.byAssiciateAlarmIn[num] = 1; |
|
|
|
|
setup.write(); |
|
|
|
|
boolean b = hCNetSDK.NET_DVR_AlarmHostSetupAlarmChan(lUserID, setup); |
|
|
|
|
boolean b = hCNetSDK.NET_DVR_AlarmHostSetupAlarmChan(numMap.get(hostSerialNumber), setup); |
|
|
|
|
if (b) { |
|
|
|
|
System.out.println("布防成功"); |
|
|
|
|
} else { |
|
|
|
|
@ -326,11 +336,11 @@ public class Alarm implements CommandLineRunner { |
|
|
|
|
/** |
|
|
|
|
* 防区撤防 |
|
|
|
|
*/ |
|
|
|
|
public static boolean fqcf(int num) { |
|
|
|
|
public static boolean fqcf(String hostSerialNumber, int num) { |
|
|
|
|
HCNetSDK.NET_DVR_ALARMIN_SETUP setup = new HCNetSDK.NET_DVR_ALARMIN_SETUP(); |
|
|
|
|
setup.byAssiciateAlarmIn[num] = 1; |
|
|
|
|
setup.write(); |
|
|
|
|
boolean b = hCNetSDK.NET_DVR_AlarmHostCloseAlarmChan(lUserID, setup); |
|
|
|
|
boolean b = hCNetSDK.NET_DVR_AlarmHostCloseAlarmChan(numMap.get(hostSerialNumber), setup); |
|
|
|
|
if (b) { |
|
|
|
|
System.out.println("撤防成功"); |
|
|
|
|
} else { |
|
|
|
|
@ -342,11 +352,11 @@ public class Alarm implements CommandLineRunner { |
|
|
|
|
/** |
|
|
|
|
* 防区旁路 |
|
|
|
|
*/ |
|
|
|
|
public static boolean fqpl(int num) { |
|
|
|
|
public static boolean fqpl(String hostSerialNumber, int num) { |
|
|
|
|
HCNetSDK.NET_DVR_ALARMIN_SETUP setup = new HCNetSDK.NET_DVR_ALARMIN_SETUP(); |
|
|
|
|
setup.byAssiciateAlarmIn[num] = 1; |
|
|
|
|
setup.write(); |
|
|
|
|
boolean b = hCNetSDK.NET_DVR_BypassAlarmChan(lUserID, setup); |
|
|
|
|
boolean b = hCNetSDK.NET_DVR_BypassAlarmChan(numMap.get(hostSerialNumber), setup); |
|
|
|
|
if (b) { |
|
|
|
|
System.out.println("旁路成功"); |
|
|
|
|
} else { |
|
|
|
|
@ -358,11 +368,11 @@ public class Alarm implements CommandLineRunner { |
|
|
|
|
/** |
|
|
|
|
* 防区撤销旁路 |
|
|
|
|
*/ |
|
|
|
|
public static boolean fqcxpl(int num) { |
|
|
|
|
public static boolean fqcxpl(String hostSerialNumber, int num) { |
|
|
|
|
HCNetSDK.NET_DVR_ALARMIN_SETUP setup = new HCNetSDK.NET_DVR_ALARMIN_SETUP(); |
|
|
|
|
setup.byAssiciateAlarmIn[num] = 1; |
|
|
|
|
setup.write(); |
|
|
|
|
boolean b = hCNetSDK.NET_DVR_UnBypassAlarmChan(lUserID, setup); |
|
|
|
|
boolean b = hCNetSDK.NET_DVR_UnBypassAlarmChan(numMap.get(hostSerialNumber), setup); |
|
|
|
|
if (b) { |
|
|
|
|
System.out.println("撤销旁路成功"); |
|
|
|
|
} else { |
|
|
|
|
@ -437,9 +447,22 @@ public class Alarm implements CommandLineRunner { |
|
|
|
|
Pointer pStrNET_DVR_LOCAL_GENERAL_CFG = struNET_DVR_LOCAL_GENERAL_CFG.getPointer(); |
|
|
|
|
hCNetSDK.NET_DVR_SetSDKLocalCfg(17, pStrNET_DVR_LOCAL_GENERAL_CFG); |
|
|
|
|
|
|
|
|
|
Alarm.login_V40("192.168.1.64", (short) 7200, "admin", "asd0514.."); //登录设备
|
|
|
|
|
|
|
|
|
|
Alarm.setAlarm();//报警布防,和报警监听二选一即可
|
|
|
|
|
if (numMap == null) { |
|
|
|
|
numMap = new HashMap<>(); |
|
|
|
|
} |
|
|
|
|
List<Map> list = externalUtils.getList(0, 0, null, null, "105", null); |
|
|
|
|
if (CollectionUtils.isNotEmpty(list)) { |
|
|
|
|
for (Map map : list) { |
|
|
|
|
String s = JSON.toJSONString(map.get("tags")).replace("\\", ""); |
|
|
|
|
s = s.substring(1, s.length() - 1); |
|
|
|
|
Map tagsMap = JSONObject.parseObject(s, Map.class); |
|
|
|
|
String number = tagsMap.get("hostNumber").toString(); |
|
|
|
|
Alarm.login_V40(tagsMap.get("ip").toString(), Short.parseShort(tagsMap.get("port").toString()), "admin", "asd0514.."); //登录设备
|
|
|
|
|
if (numMap.get(number) != null) { |
|
|
|
|
Alarm.setAlarm(numMap.get(number));//报警布防,和报警监听二选一即可
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Alarm.startListen("192.168.1.100", (short) 7200);//报警监听,不需要登陆设备
|
|
|
|
|
while (true) { |
|
|
|
|
|