| | |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.ard.alarm.camera.domain.ArdCameras; |
| | | import com.ard.alarm.camera.domain.CameraCmd; |
| | | import com.ard.alarm.camera.service.IArdCamerasService; |
| | | import com.ard.alarm.camera.service.impl.ArdCamerasServiceImpl; |
| | | import com.ard.alarm.external.domain.ArdEquipExternal; |
| | | import com.ard.alarm.external.service.IArdEquipExternalService; |
| | | import com.ard.alarm.external.service.impl.ArdEquipExternalServiceImpl; |
| | | import com.ard.config.MinioClientSingleton; |
| | | import com.ard.utils.ByteUtils; |
| | | import com.ard.utils.hiksdk.common.GlobalVariable; |
| | |
| | | */ |
| | | @Override |
| | | public boolean invoke(int lCommand, HCNetSDK.NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser) { |
| | | ArdCamerasServiceImpl ardCamerasService = SpringTool.getApplicationContext().getBean(ArdCamerasServiceImpl.class); |
| | | |
| | | String sDeviceIP = ByteUtils.bytesToStringZh(pAlarmer.sDeviceIP); |
| | | Integer wLinkPort = Integer.valueOf(pAlarmer.wLinkPort); |
| | | ArdCameras ardCameras = new ArdCameras(); |
| | | ardCameras.setIp(sDeviceIP); |
| | | ardCameras.setPort(wLinkPort); |
| | | ArdCameras ardcamere = ardCamerasService.selectArdCamerasList(ardCameras).get(0); |
| | | |
| | | String sTime;//事件时间 |
| | | String url;//事件图片 |
| | | alarmEventInfo info;//事件信息 |
| | |
| | | switch (lCommand) { |
| | | case HCNetSDK.COMM_ALARM_RULE: |
| | | //region 行为分析信息 |
| | | ArdCameras ardCameras = new ArdCameras(); |
| | | ardCameras.setIp(sDeviceIP); |
| | | ardCameras.setPort(wLinkPort); |
| | | IArdCamerasService ardCamerasService = SpringTool.getApplicationContext().getBean(IArdCamerasService.class); |
| | | ArdCameras ardcamere = ardCamerasService.selectArdCamerasList(ardCameras).get(0); |
| | | log.info("报警事件类型:lCommand:" + Integer.toHexString(lCommand)); |
| | | HCNetSDK.NET_VCA_RULE_ALARM strVcaAlarm = new HCNetSDK.NET_VCA_RULE_ALARM(); |
| | | strVcaAlarm.write(); |
| | |
| | | break; |
| | | case HCNetSDK.COMM_ALARMHOST_CID_ALARM: |
| | | log.info("报警主机 CID 报告报警上传"); |
| | | ArdEquipExternal ardEquipExternal = new ArdEquipExternal(); |
| | | ardEquipExternal.setIp(sDeviceIP); |
| | | ardEquipExternal.setPort(wLinkPort); |
| | | IArdEquipExternalService ardEquipExternalService = SpringTool.getApplicationContext().getBean(IArdEquipExternalService.class); |
| | | ardEquipExternal = ardEquipExternalService.selectArdEquipExternalList(ardEquipExternal).get(0); |
| | | |
| | | |
| | | HCNetSDK.NET_DVR_CID_ALARM netDvrCidAlarm = new HCNetSDK.NET_DVR_CID_ALARM(); |
| | | netDvrCidAlarm.write(); |
| | | Pointer pCIDInfo = netDvrCidAlarm.getPointer(); |
| | |
| | | String wDefenceName = ""; |
| | | if (!bySubSysNo.equals(-1)) { |
| | | CameraCmd cmd = new CameraCmd(); |
| | | cmd.setCameraId(ardcamere.getId()); |
| | | cmd.setCameraId(ardEquipExternal.getId()); |
| | | cmd.setWZoneIndex(wDefenceNo); |
| | | wDefenceName = HikClientUtil.getDefenseZoneName(cmd); |
| | | } |
| | |
| | | externalAlarmEventInfo.setSubSysNo(bySubSysNo); |
| | | externalAlarmEventInfo.setAlarmType(byReportType); |
| | | externalAlarmEventInfo.setAlarmTime(struTriggerTime); |
| | | externalAlarmEventInfo.setCameraId(ardcamere.getId()); |
| | | externalAlarmEventInfo.setCameraName(ardcamere.getName()); |
| | | externalAlarmEventInfo.setCameraIp(ardcamere.getIp()); |
| | | externalAlarmEventInfo.setCameraType(ardcamere.getGdtype()); |
| | | externalAlarmEventInfo.setAlarmHostId(ardEquipExternal.getId()); |
| | | publishMqtt(externalAlarmEventInfo); |
| | | break; |
| | | default: |
| | |
| | | "【IP】" + info.getCameraIp() + "【通道】" + info.getCameraChannel() + "【型号】" + info.getCameraType() + |
| | | "【图片】" + info.getPicUrl() + "【坐标】" + info.getLongitude() + "," + info.getLatitude()); |
| | | } |
| | | |
| | | /** |
| | | * 打印外联报警日志 |
| | | */ |
| | | private void printLog(ExternalAlarmEventInfo info) { |
| | | log.info("【报警ID】" + info.getAlarmId() + "【报警名称】" + info.getAlarmName() + |
| | | "【防区ID】" + info.getDefenseId() + "【防区名称】" + info.getDefenseName() + "【类型】" + info.getAlarmType() + |
| | | "【时间】" + info.getAlarmTime() + "【相机ID】" + info.getCameraId() + "【相机】" + info.getCameraName() + |
| | | "【IP】" + info.getCameraIp() + "【型号】" + info.getCameraType()); |
| | | "【时间】" + info.getAlarmTime() + "【报警主机ID】" + info.getAlarmHostId()); |
| | | } |
| | | |
| | | /** |
| | |
| | | // printLog(info); |
| | | MqttConsumer.publish(2, false, "camera", JSON.toJSONString(info)); |
| | | } |
| | | |
| | | /** |
| | | * 外联报警推送mqtt |
| | | */ |
| | | private void publishMqtt(ExternalAlarmEventInfo info) { |
| | | printLog(info); |
| | | MqttConsumer.publish(2, false, "camera", JSON.toJSONString(info)); |
| | | MqttConsumer.publish(2, false, "external", JSON.toJSONString(info)); |
| | | } |
| | | |
| | | /** |
| | | * 时间格式化 |
| | | */ |