消警指令上报海信iot

main
litao 2 years ago
parent fe73cae165
commit c74c2be7ae
  1. 2
      src/main/java/org/springblade/hospital/agent/service/HikAgentService.java
  2. 4
      src/main/java/org/springblade/hospital/controller/AlarmInformationController.java
  3. 35
      src/main/java/org/springblade/hospital/controller/AppDataController.java
  4. 82
      src/main/java/org/springblade/hospital/hik/alarm/Alarm.java
  5. 2
      src/main/java/org/springblade/hospital/service/impl/CornJobServiceImpl.java

@ -401,7 +401,7 @@ public class HikAgentService extends AgentGrpc.AgentImplBase {
// 消警
if (value == 1) {
System.out.println("shebeikongzhi:zxtxj");
result = Alarm.xiaojing(Alarm.macMap.get(spId[0]), Integer.parseInt(spId[spId.length - 1]));
result = Alarm.xiaojing(Alarm.macMap.get(spId[0]), Integer.parseInt(spId[spId.length - 1]), roadwaySyscode);
}
}
System.out.println("result:" + result);

@ -72,7 +72,7 @@ public class AlarmInformationController extends BladeController {
// Point point = new Gson().fromJson(JSON.toJSONString(params), Point.class);
int status = Integer.parseInt(String.valueOf(params.get("pntTypeValue_")));
byte[] byteValue = DataTrans.shortToBytesBigEndian((short)status);
byte[] byteValue = DataTrans.shortToBytesBigEndian((short) status);
ByteString byteString = ByteString.copyFrom(byteValue);
Point point = Point.newBuilder()
.setData(byteString)
@ -136,7 +136,7 @@ public class AlarmInformationController extends BladeController {
*/
@PostMapping("/clear")
public R clear(@RequestBody AlarmInformation alarmInformation) {
Alarm.xiaojing(alarmInformation.getHostSerialNumber(), alarmInformation.getSystemNum());
Alarm.xiaojing(alarmInformation.getHostSerialNumber(), alarmInformation.getSystemNum(), alarmInformation.getDeviceId());
alarmInformation.setIsClear(1);
return R.status(alarmInformationService.updateById(alarmInformation));
}

@ -246,9 +246,9 @@ public class AppDataController extends BladeController {
for (int i = 0; i < splitHost.length; i++) {
String[] split = splitNum[i].split("_");
if (Alarm.zibufang(splitHost[i], Integer.parseInt(split[split.length - 1]))) {
status += "主机:" + splitHost[i] + "的子系统" + num + "布防成功!";
status += "子系统:" + split[split.length - 2] + "_" + split[split.length - 1] + "布防成功!";
} else {
status += "主机:" + splitHost[i] + "的子系统" + num + "布防失败!";
status += "子系统:" + split[split.length - 2] + "_" + split[split.length - 1] + "布防失败!";
}
}
return R.success(status);
@ -265,9 +265,9 @@ public class AppDataController extends BladeController {
for (int i = 0; i < splitHost.length; i++) {
String[] split = splitNum[i].split("_");
if (Alarm.zichefang(splitHost[i], Integer.parseInt(split[split.length - 1]))) {
status += "主机:" + splitHost[i] + "的子系统" + num + "撤防成功!";
status += "子系统:" + split[split.length - 2] + "_" + split[split.length - 1] + "撤防成功!";
} else {
status += "主机:" + splitHost[i] + "的子系统" + num + "撤防失败!";
status += "子系统:" + split[split.length - 2] + "_" + split[split.length - 1] + "撤防失败!";
}
}
return R.success(status);
@ -294,7 +294,18 @@ public class AppDataController extends BladeController {
*/
@PostMapping("/bypass")
public R bypass(@RequestParam String hostSerialNumber, @RequestParam String num) {
return R.status(Alarm.fqpl(hostSerialNumber, Integer.parseInt(num) - 1));
String[] splitHost = hostSerialNumber.split(",");
String[] splitNum = num.split(",");
String status = "";
for (int i = 0; i < splitHost.length; i++) {
String[] split = splitNum[i].split("_");
if (Alarm.fqpl(splitHost[i], Integer.parseInt(split[split.length - 1]) - 1)) {
status += "防区:" + split[split.length - 2] + "_" + split[split.length - 1] + "旁路成功!";
} else {
status += "防区:" + split[split.length - 2] + "_" + split[split.length - 1] + "旁路失败!";
}
}
return R.success(status);
}
/**
@ -302,8 +313,18 @@ public class AppDataController extends BladeController {
*/
@PostMapping("/unBypass")
public R unBypass(@RequestParam String hostSerialNumber, @RequestParam String num) {
return R.status(Alarm.fqcxpl(hostSerialNumber, Integer.parseInt(num) - 1));
// return R.status(Alarm.xiaojing(hostSerialNumber, Integer.parseInt(num) - 1));
String[] splitHost = hostSerialNumber.split(",");
String[] splitNum = num.split(",");
String status = "";
for (int i = 0; i < splitHost.length; i++) {
String[] split = splitNum[i].split("_");
if (Alarm.fqcxpl(splitHost[i], Integer.parseInt(split[split.length - 1]) - 1)) {
status += "防区:" + split[split.length - 2] + "_" + split[split.length - 1] + "撤销旁路成功!";
} else {
status += "防区:" + split[split.length - 2] + "_" + split[split.length - 1] + "撤销旁路失败!";
}
}
return R.success(status);
}
@GetMapping("/coordinateToWGS84")

@ -3,11 +3,16 @@ 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.google.protobuf.ByteString;
import com.hisense.device.agent.grpc.Point;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.httpclient.HttpClient;
import org.springblade.core.tool.utils.SpringUtil;
import org.springblade.hospital.agent.utils.DataTrans;
import org.springblade.hospital.agent.utils.QueueUtils;
import org.springblade.hospital.hik.CommonMethod.osSelect;
import org.springblade.hospital.hik.NetSDKDemo.HCNetSDK;
import org.springblade.hospital.newalarm.communicationCom.HTTPClientUtil;
@ -21,6 +26,11 @@ import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.stream.Collectors;
/**
* @author AAA
@ -41,6 +51,7 @@ public class Alarm implements CommandLineRunner {
public static Map<String, String> ipMap;
public static Map<String, String> portMap;
public static Map<String, String> macMap;
private static QueueUtils queueUtils;
public static ScheduledThreadPoolExecutor scheduled = new ScheduledThreadPoolExecutor(10);
@ -290,18 +301,66 @@ public class Alarm implements CommandLineRunner {
/**
* 消警
*/
public static boolean xiaojing(String hostSerialNumber, int num) {
public static boolean xiaojing(String hostSerialNumber, int num, String deviceId) {
try {
if (queueUtils == null) {
queueUtils = SpringUtil.getBean(QueueUtils.class);
}
String rzUrl = "http://" + ipMap.get(hostSerialNumber) + ":" + portMap.get(hostSerialNumber) + "/ISAPI/System/deviceInfo";
String renzheng = HTTPClientUtil.renzheng(rzUrl, HTTPClientUtil.client);
if (renzheng.contains(hostSerialNumber)) {
// 消警信息上报海信iot平台
// 子系统消警上报iot
ByteString sysId = ByteString.copyFrom(DataTrans.shortToBytesBigEndian((short) 1));
Point sysPoint = Point.newBuilder()
.setData(sysId)
.setId(deviceId)
.setDevType(3)
.setPntType(11)
.build();
queueUtils.saveQueueDataStatus(sysPoint);
// 获取该报警主机全部防区状态信息
String status = "http://" + ipMap.get(hostSerialNumber) + ":" + portMap.get(hostSerialNumber) + "/ISAPI/SecurityCP/status/zones?format=json";
String statusData = HTTPClientUtil.doGet(status, HTTPClientUtil.client);
System.out.println("statusData:" + statusData);
// 解析状态信息
Map statusMap = JSONObject.parseObject(statusData, Map.class);
// 防区状态列表
List<Map> zoneList = JSONObject.parseObject(statusMap.get("ZoneList").toString(), List.class);
// 过滤只剩该子系统下正在报警的防区
List<Map> zones = zoneList.stream().filter(zone -> (boolean) JSONObject.parseObject(zone.get("Zone").toString(), Map.class).get("alarm") && String.valueOf(num).equals(JSONObject.parseObject(zone.get("Zone").toString(), Map.class).get("id").toString())).collect(Collectors.toList());
System.out.println("zones数量:" + zones);
if (CollectionUtils.isNotEmpty(zones)) {
for (Map zoneMap : zones) {
Map zone = JSONObject.parseObject(zoneMap.get("Zone").toString(), Map.class);
// 封装上报iot
String[] split = deviceId.split("_");
byte[] byteValue = DataTrans.shortToBytesBigEndian((short) 0);
ByteString byteString = ByteString.copyFrom(byteValue);
Point point = Point.newBuilder()
.setData(byteString)
.setId(split[0] + "_sector_" + (Integer.parseInt(zone.get("id").toString()) + 1))
.setDevType(2)
.setPntType(7)
.build();
queueUtils.saveQueueDataStatus(point);
}
}
// 下发消警指令
String xjUrl = "http://" + ipMap.get(hostSerialNumber) + ":" + portMap.get(hostSerialNumber) + "/ISAPI/SecurityCP/control/clearAlarm/" + num;
String respx = HTTPClientUtil.doPut(xjUrl, "", HTTPClientUtil.client);
System.out.println(respx);
System.out.println("respx:" + respx);
return true;
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
return false;
// boolean b = hCNetSDK.NET_DVR_AlarmHostClearAlarm(numMap.get(hostSerialNumber), num);
@ -328,6 +387,7 @@ public class Alarm implements CommandLineRunner {
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
return false;
// boolean b = hCNetSDK.NET_DVR_AlarmHostSubSystemSetupAlarmChan(numMap.get(hostSerialNumber), num);
@ -354,6 +414,7 @@ public class Alarm implements CommandLineRunner {
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
return false;
// boolean b = hCNetSDK.NET_DVR_AlarmHostSubSystemCloseAlarmChan(numMap.get(hostSerialNumber), num);
@ -365,21 +426,6 @@ public class Alarm implements CommandLineRunner {
// return b;
}
// private static void jianting(String hostSerialNumber) {
// try {
// String jlUrl = "http://" + ipMap.get(hostSerialNumber) + ":" + portMap.get(hostSerialNumber) + "/ISAPI/Event/notification/subscribeEvent?deployID=1";
// String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
// "\n" +
// "<SubscribeEvent xmlns=\"http://www.isapi.org/ver20/XMLSchema\" version=\"2.0\">\n" +
// " <heartbeat>1</heartbeat>\n" +
// " <eventMode>all</eventMode>\n" +
// "</SubscribeEvent>";
// System.out.println("jl:" + HTTPClientUtil.doPost(jlUrl, xml, hostSerialNumber, clientMap.get(hostSerialNumber)));
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
/**
* 防区布防
*/
@ -427,6 +473,7 @@ public class Alarm implements CommandLineRunner {
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
return false;
// HCNetSDK.NET_DVR_ALARMIN_SETUP setup = new HCNetSDK.NET_DVR_ALARMIN_SETUP();
@ -456,6 +503,7 @@ public class Alarm implements CommandLineRunner {
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
return false;
// HCNetSDK.NET_DVR_ALARMIN_SETUP setup = new HCNetSDK.NET_DVR_ALARMIN_SETUP();

@ -91,7 +91,7 @@ public class CornJobServiceImpl extends BaseServiceImpl<CornJobMapper, CornJob>
long count = this.count(wrapper);
System.out.println("count数量" + count);
if (count > 0) {
throw new ServiceException("数据重复!");
throw new ServiceException("选择设备已有同类型任务存在!");
}
}

Loading…
Cancel
Save