From e71d3d823093bafe0283a57aa640928709d09434 Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期一, 25 九月 2023 11:51:01 +0800 Subject: [PATCH] 优化sql框架使用mybatis-plus代替mybatis --- src/main/java/com/ard/utils/hiksdk/service/impl/FMSGCallBack.java | 597 +++++++++++++++++++++++++++++------------------------------ 1 files changed, 295 insertions(+), 302 deletions(-) diff --git a/src/main/java/com/ard/utils/hiksdk/service/impl/FMSGCallBack.java b/src/main/java/com/ard/utils/hiksdk/service/impl/FMSGCallBack.java index 9ee1b35..62f68de 100644 --- a/src/main/java/com/ard/utils/hiksdk/service/impl/FMSGCallBack.java +++ b/src/main/java/com/ard/utils/hiksdk/service/impl/FMSGCallBack.java @@ -24,6 +24,7 @@ import java.nio.ByteBuffer; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.List; /** * @ClassName: FMSGCallBack @@ -54,80 +55,75 @@ String url = "";//浜嬩欢鍥剧墖 //lCommand鏄紶鐨勬姤璀︾被鍨� //log.debug("鎶ヨ浜嬩欢绫诲瀷:lCommand:" + Integer.toHexString(lCommand)); - switch (lCommand) { - case HCNetSDK.COMM_ALARM_V30: - //log.debug("绉诲姩渚︽祴"); - ArdCameras ardCameras = new ArdCameras(); - ardCameras.setIp(sDeviceIP); - ardCameras.setPort(wLinkPort); - IArdCamerasService ardCamerasService = SpringUtils.getBean(IArdCamerasService.class); - ArdCameras camera = ardCamerasService.selectArdCamerasList(ardCameras).get(0); - HCNetSDK.NET_DVR_ALARMINFO_V30 netDvrAlarminfoV30 = new HCNetSDK.NET_DVR_ALARMINFO_V30(); - netDvrAlarminfoV30.write(); - Pointer pNDAInfo = netDvrAlarminfoV30.getPointer(); - pNDAInfo.write(0, pAlarmInfo.getByteArray(0, netDvrAlarminfoV30.size()), 0, netDvrAlarminfoV30.size()); - netDvrAlarminfoV30.read(); - switch (netDvrAlarminfoV30.dwAlarmType) { - case 3: - info = new CameraEventInfo(); - info.setAlarmName("绉诲姩渚︽祴"); - info.setAlarmTime(fmt.format(new Date())); - info.setCameraName(camera.getName()); - info.setCameraId(camera.getId()); - info.setCameraIp(camera.getIp()); - info.setCameraPort(camera.getPort()); - info.setCameraType(camera.getGdtype()); - info.setCameraChannel(Integer.valueOf(netDvrAlarminfoV30.byChannel[0])); - info.setLongitude(camera.getLongitude()); - info.setLatitude(camera.getLatitude()); - info.setAlarmType("绉诲姩渚︽祴"); - //鍥剧墖瀛樺叆minio - url = savePicture(info); - info.setPicUrl(url); - publishMqtt(info); - break; - } - - case HCNetSDK.COMM_ALARM_RULE: - //log.debug("琛屼负鍒嗘瀽淇℃伅鎶ヨ淇℃伅涓婃姤"); - //region 琛屼负鍒嗘瀽淇℃伅 - ardCameras = new ArdCameras(); - ardCameras.setIp(sDeviceIP); - ardCameras.setPort(wLinkPort); - ardCamerasService = SpringUtils.getBean(IArdCamerasService.class); - ArdCameras ardCamera = ardCamerasService.selectArdCamerasList(ardCameras).get(0); - - HCNetSDK.NET_VCA_RULE_ALARM strVcaAlarm = new HCNetSDK.NET_VCA_RULE_ALARM(); - strVcaAlarm.write(); - Pointer pVCAInfo = strVcaAlarm.getPointer(); - pVCAInfo.write(0, pAlarmInfo.getByteArray(0, strVcaAlarm.size()), 0, strVcaAlarm.size()); - strVcaAlarm.read(); - Integer ruleID = Integer.valueOf(strVcaAlarm.struRuleInfo.byRuleID); - sTime = DateUtils.parseTime(strVcaAlarm.dwAbsTime);//浜嬩欢鏃堕棿 - String ipaddr = new String(strVcaAlarm.struDevInfo.struDevIP.sIpV4).trim();//璁惧ip - Integer channel = Integer.valueOf(strVcaAlarm.struDevInfo.byChannel);//閫氶亾 - info = new CameraEventInfo(); - info.setAlarmName("浜哄憳琛屼负鍒嗘瀽"); - info.setAlarmTime(sTime); - info.setCameraName(ardCamera.getName()); - info.setCameraId(ardCamera.getId()); - info.setCameraIp(ardCamera.getIp()); - info.setCameraPort(ardCamera.getPort()); - info.setCameraType(ardCamera.getGdtype()); - info.setCameraChannel(channel); - info.setLongitude(ardCamera.getLongitude()); - info.setLatitude(ardCamera.getLatitude()); - info.setRuleId(ruleID); - switch (strVcaAlarm.struRuleInfo.wEventTypeEx) { - case 1: //region绌胯秺璀︽垝闈� (瓒婄晫渚︽祴) - info.setAlarmType("瓒婄晫渚︽祴鎶ヨ"); - strVcaAlarm.struRuleInfo.uEventParam.setType(HCNetSDK.NET_VCA_TRAVERSE_PLANE.class); - //鍥剧墖瀛樺叆minio - url = savePicture(info); - info.setPicUrl(url); - publishMqtt(info); - //endregion - break; + ArdCameras ardCameras = new ArdCameras(); + ardCameras.setIp(sDeviceIP); + ardCameras.setPort(wLinkPort); + IArdCamerasService ardCamerasService = SpringUtils.getBean(IArdCamerasService.class); + List<ArdCameras> ardCamerasList = ardCamerasService.selectArdCamerasList(ardCameras); + if (ardCamerasList.size() > 0) { + ArdCameras camera = ardCamerasService.selectArdCamerasList(ardCameras).get(0); + switch (lCommand) { + case HCNetSDK.COMM_ALARM_V30: + //log.debug("绉诲姩渚︽祴"); + HCNetSDK.NET_DVR_ALARMINFO_V30 netDvrAlarminfoV30 = new HCNetSDK.NET_DVR_ALARMINFO_V30(); + netDvrAlarminfoV30.write(); + Pointer pNDAInfo = netDvrAlarminfoV30.getPointer(); + pNDAInfo.write(0, pAlarmInfo.getByteArray(0, netDvrAlarminfoV30.size()), 0, netDvrAlarminfoV30.size()); + netDvrAlarminfoV30.read(); + switch (netDvrAlarminfoV30.dwAlarmType) { + case 3: + info = new CameraEventInfo(); + info.setAlarmName("绉诲姩渚︽祴"); + info.setAlarmTime(fmt.format(new Date())); + info.setCameraName(camera.getName()); + info.setCameraId(camera.getId()); + info.setCameraIp(camera.getIp()); + info.setCameraPort(camera.getPort()); + info.setCameraType(camera.getGdType()); + info.setCameraChannel(Integer.valueOf(netDvrAlarminfoV30.byChannel[0])); + info.setLongitude(camera.getLongitude()); + info.setLatitude(camera.getLatitude()); + info.setAlarmType("绉诲姩渚︽祴"); + //鍥剧墖瀛樺叆minio + url = savePicture(info); + info.setPicUrl(url); + publishMqtt(info); + break; + } + case HCNetSDK.COMM_ALARM_RULE: + //log.debug("琛屼负鍒嗘瀽淇℃伅鎶ヨ淇℃伅涓婃姤"); + //region 琛屼负鍒嗘瀽淇℃伅 + HCNetSDK.NET_VCA_RULE_ALARM strVcaAlarm = new HCNetSDK.NET_VCA_RULE_ALARM(); + strVcaAlarm.write(); + Pointer pVCAInfo = strVcaAlarm.getPointer(); + pVCAInfo.write(0, pAlarmInfo.getByteArray(0, strVcaAlarm.size()), 0, strVcaAlarm.size()); + strVcaAlarm.read(); + Integer ruleID = Integer.valueOf(strVcaAlarm.struRuleInfo.byRuleID); + sTime = DateUtils.parseTime(strVcaAlarm.dwAbsTime);//浜嬩欢鏃堕棿 + String ipaddr = new String(strVcaAlarm.struDevInfo.struDevIP.sIpV4).trim();//璁惧ip + Integer channel = Integer.valueOf(strVcaAlarm.struDevInfo.byChannel);//閫氶亾 + info = new CameraEventInfo(); + info.setAlarmName("浜哄憳琛屼负鍒嗘瀽"); + info.setAlarmTime(sTime); + info.setCameraName(camera.getName()); + info.setCameraId(camera.getId()); + info.setCameraIp(camera.getIp()); + info.setCameraPort(camera.getPort()); + info.setCameraType(camera.getGdType()); + info.setCameraChannel(channel); + info.setLongitude(camera.getLongitude()); + info.setLatitude(camera.getLatitude()); + info.setRuleId(ruleID); + switch (strVcaAlarm.struRuleInfo.wEventTypeEx) { + case 1: //region绌胯秺璀︽垝闈� (瓒婄晫渚︽祴) + info.setAlarmType("瓒婄晫渚︽祴鎶ヨ"); + strVcaAlarm.struRuleInfo.uEventParam.setType(HCNetSDK.NET_VCA_TRAVERSE_PLANE.class); + //鍥剧墖瀛樺叆minio + url = savePicture(info); + info.setPicUrl(url); + publishMqtt(info); + //endregion + break; // case 2: //region 鐩爣杩涘叆鍖哄煙 // info.setAlarmType("鐩爣杩涘叆鍖哄煙鎶ヨ"); // strVcaAlarm.struRuleInfo.uEventParam.setType(HCNetSDK.NET_VCA_AREA.class); @@ -138,15 +134,15 @@ // strVcaAlarm.struRuleInfo.uEventParam.setType(HCNetSDK.NET_VCA_AREA.class); // //endregion // break; - case 4: //region 鍛ㄧ晫鍏ヤ镜 - info.setAlarmType("鍛ㄧ晫鍏ヤ镜鎶ヨ"); - strVcaAlarm.struRuleInfo.uEventParam.setType(HCNetSDK.NET_VCA_INTRUSION.class); - //鍥剧墖瀛樺叆minio - url = savePicture(info); - info.setPicUrl(url); - publishMqtt(info); - //endregion - break; + case 4: //region 鍛ㄧ晫鍏ヤ镜 + info.setAlarmType("鍛ㄧ晫鍏ヤ镜鎶ヨ"); + strVcaAlarm.struRuleInfo.uEventParam.setType(HCNetSDK.NET_VCA_INTRUSION.class); + //鍥剧墖瀛樺叆minio + url = savePicture(info); + info.setPicUrl(url); + publishMqtt(info); + //endregion + break; // case 5: //region 寰樺緤 // info.setAlarmType("寰樺緤浜嬩欢鎶ヨ"); // //endregion @@ -171,224 +167,221 @@ // info.setAlarmType("鐜╂墜鏈烘姤璀︿簨浠�"); // //endregion // break; - default: - // log.debug("鏈煡琛屼负浜嬩欢绫诲瀷:" + strVcaAlarm.struRuleInfo.wEventTypeEx); - break; - } - //endregion - break; -// case HCNetSDK.COMM_UPLOAD_FACESNAP_RESULT: -// log.debug("浜鸿劯妫�娴嬩簨浠朵笂鎶�(鏆備笉瑙f瀽)"); -// break; -// case HCNetSDK.COMM_GISINFO_UPLOAD: -// log.debug("GPS鎶ヨ淇℃伅涓婃姤(鏆備笉瑙f瀽)"); -// break; - case HCNetSDK.COMM_ALARMHOST_CID_ALARM: - //log.debug("鎶ヨ涓绘満CID鎶ュ憡鎶ヨ涓婃姤"); - //region 鎶ヨ涓绘満鎶ヨ澶勭悊 - ArdEquipExternal ardEquipExternal = new ArdEquipExternal(); - ardEquipExternal.setIp(sDeviceIP); - ardEquipExternal.setPort(wLinkPort); - IArdEquipExternalService ardEquipExternalService = SpringUtils.getBean(IArdEquipExternalService.class); - ardEquipExternal = ardEquipExternalService.selectArdEquipExternal(ardEquipExternal); - - - HCNetSDK.NET_DVR_CID_ALARM netDvrCidAlarm = new HCNetSDK.NET_DVR_CID_ALARM(); - netDvrCidAlarm.write(); - Pointer pCIDInfo = netDvrCidAlarm.getPointer(); - pCIDInfo.write(0, pAlarmInfo.getByteArray(0, netDvrCidAlarm.size()), 0, netDvrCidAlarm.size()); - netDvrCidAlarm.read(); - //CID浜嬩欢鍚� - String sCIDCode = ByteUtils.bytesToStringZh(netDvrCidAlarm.sCIDCode);//CID浜嬩欢鍚� - - //CID浜嬩欢鍚� - //String sCIDDescribe = ByteUtils.bytesToStringZh(netDvrCidAlarm.sCIDDescribe);//CID浜嬩欢鍚� - int position = ByteUtils.findIndexOfDoubleZero(netDvrCidAlarm.sCIDDescribe); - String sCIDDescribe; - if (position != -1) { - byte[] result = new byte[position]; - System.arraycopy(netDvrCidAlarm.sCIDDescribe, 0, result, 0, position); - sCIDDescribe = ByteUtils.bytesToStringZh(result); - } else { - sCIDDescribe = ByteUtils.bytesToStringZh(netDvrCidAlarm.sCIDDescribe); - } - //瑙﹀彂鎶ヨ鐨勬椂闂寸偣 - String struTriggerTime = DateUtils.convertDate(parseAlarmTime(netDvrCidAlarm.struTriggerTime), "yyyy-M-d H:m:s"); - //涓婁紶鎶ヨ鐨勬椂闂寸偣 - String struUploadTime = DateUtils.convertDate(parseAlarmTime(netDvrCidAlarm.struUploadTime), "yyyy-M-d H:m:s"); - //鎶ュ憡绫诲瀷 - String byReportType = ""; - switch (netDvrCidAlarm.byReportType) { - case 1: - byReportType = "闃插尯鎶ヨ"; - break; - case 2: - byReportType = "瑙嗛鎶ヨ"; - break; - case 3: - byReportType = "杞槻鍖烘姤璀�"; - break; - case 4: - byReportType = "鎸熸寔鎶ヨ"; - break; - case 5: - byReportType = "闃叉媶鎶ヨ "; - break; - case 6: - byReportType = "鎿嶄綔鎶ュ憡 "; - break; - case 7: - byReportType = "寮傚父鎶ュ憡 "; - break; - } - //瀛愮郴缁熷彿 - Integer bySubSysNo = Integer.valueOf(netDvrCidAlarm.bySubSysNo); - //闃插尯鍙� 璧峰0 - Integer wDefenceNo = Integer.valueOf(netDvrCidAlarm.wDefenceNo); - //闃插尯鍚嶇О - String wDefenceName = ""; - if (!bySubSysNo.equals(-1)) { - CameraCmd cmd = new CameraCmd(); - cmd.setCameraId(ardEquipExternal.getId()); - cmd.setWZoneIndex(wDefenceNo); - wDefenceName = HikClientUtil.getDefenseZoneName(cmd); - } - if (sCIDDescribe.contains("鎭㈠")) { - return true; - } - - ExternalAlarmEventInfo externalAlarmEventInfo = new ExternalAlarmEventInfo(); - externalAlarmEventInfo.setAlarmId(sCIDCode); - externalAlarmEventInfo.setAlarmName(sCIDDescribe); - externalAlarmEventInfo.setDefenseId((wDefenceNo + 1)); - externalAlarmEventInfo.setDefenseName(wDefenceName); - externalAlarmEventInfo.setSubSysNo(bySubSysNo); - externalAlarmEventInfo.setAlarmType(byReportType); - externalAlarmEventInfo.setAlarmTime(struTriggerTime); - externalAlarmEventInfo.setAlarmHostId(ardEquipExternal.getId()); - publishMqtt(externalAlarmEventInfo); - //endregion - break; - case HCNetSDK.COMM_ALARM_ACS: - //region 闂ㄧ涓绘満鎶ヨ澶勭悊 - - ArdEquipExternal accessControlHost = new ArdEquipExternal(); - accessControlHost.setIp(sDeviceIP); - accessControlHost.setPort(wLinkPort); - ardEquipExternalService = SpringUtils.getBean(IArdEquipExternalService.class); - accessControlHost = ardEquipExternalService.selectArdEquipExternal(accessControlHost); - - HCNetSDK.NET_DVR_ACS_ALARM_INFO strACSInfo = new HCNetSDK.NET_DVR_ACS_ALARM_INFO(); - strACSInfo.write(); - Pointer acsInfo = strACSInfo.getPointer(); - acsInfo.write(0, pAlarmInfo.getByteArray(0, strACSInfo.size()), 0, strACSInfo.size()); - strACSInfo.read(); - int dwMajor = strACSInfo.dwMajor; - - if (dwMajor != 5) { - //鍙幏鍙栦簨浠� - // log.debug("闈炰簨浠舵姤璀︽暟鎹笂鎶�(鏆備笉瑙f瀽)"); - break; - } - - int dwMinor = strACSInfo.dwMinor; - if (dwMinor != 80 && dwMinor != 104) { - //鍙В鏋愮湡浜烘娴嬪け璐ュ拰浜鸿劯鎶撴媿澶辫触鐨勬绫诲瀷浜嬩欢 - break; - } - String alarmType = ""; - switch (dwMinor) { - case 104: - alarmType = "鐪熶汉妫�娴嬪け璐�"; - break; - case 80: - alarmType = "浜鸿劯鎶撴媿澶辫触"; - break; - } - log.debug("闂ㄧ涓绘満鎶ヨ涓婁紶:"+alarmType); - String alarmTime = DateUtils.convertDate(parseAlarmTime(strACSInfo.struTime), "yyyy-M-d H:m:s"); - - //浜嬩欢鍥剧墖澶勭悊 - int dwPicDataLen = strACSInfo.dwPicDataLen; - if (dwPicDataLen > 0) { - try { - //灏嗗瓧鑺傚啓鍏ユ枃浠� - long offset = 0; - ByteBuffer buffers = strACSInfo.pPicData.getByteBuffer(offset, strACSInfo.dwPicDataLen); - byte[] bytes = new byte[strACSInfo.dwPicDataLen]; - buffers.rewind(); - buffers.get(bytes); - InputStream input = new ByteArrayInputStream(bytes); - String bucketName = "pic"; - String objectName = "alarm/" + IdUtils.simpleUUID() + ".jpeg"; - boolean uploadObject = MinioUtil.uploadObject(bucketName, objectName, input,input.available(), "image/JPEG"); - if (uploadObject) { - url = MinioUtil.getBucketObjectUrl(bucketName, objectName); - //log.debug("涓婁紶鏂囦欢鎴愬姛!" + url); - } - } catch (Exception e) { - log.error("鍥剧墖淇濆瓨澶辫触"); + default: + // log.debug("鏈煡琛屼负浜嬩欢绫诲瀷:" + strVcaAlarm.struRuleInfo.wEventTypeEx); + break; } - } - HCNetSDK.NET_DVR_ACS_EVENT_INFO struAcsEventInfo = strACSInfo.struAcsEventInfo; - int byType = struAcsEventInfo.byType; - String defenseType = ""; - switch (byType) { - case 0: - defenseType = "鍗虫椂闃插尯"; - break; - case 1: - defenseType = "24灏忔椂闃插尯"; - break; - case 2: - defenseType = "寤舵椂闃插尯"; - break; - case 3: - defenseType = "鍐呴儴闃插尯"; - break; - case 4: - defenseType = "閽ュ寵闃插尯"; - break; - case 5: - defenseType = "鐏闃插尯"; - break; - case 6: - defenseType = "鍛ㄧ晫闃插尯"; - break; - case 7: - defenseType = "24灏忔椂鏃犲0闃插尯"; - break; - case 8: - defenseType = "24灏忔椂杈呭姪闃插尯"; - break; - case 9: - defenseType = "24灏忔椂闇囧姩闃插尯"; - break; - case 10: - defenseType = "闂ㄧ绱ф�ュ紑闂ㄩ槻鍖�"; - break; - case 11: - defenseType = "闂ㄧ绱ф�ュ叧闂ㄩ槻鍖�"; - break; - default: - defenseType = "鏃�"; - break; - } - AccessControlHostEventInfo accessControlHostEventInfo = new AccessControlHostEventInfo(); - accessControlHostEventInfo.setSerialNo(struAcsEventInfo.dwSerialNo); - accessControlHostEventInfo.setAlarmType(alarmType); - accessControlHostEventInfo.setDoorNo(struAcsEventInfo.dwDoorNo); - accessControlHostEventInfo.setDefenseType(defenseType); - accessControlHostEventInfo.setAlarmTime(alarmTime); - accessControlHostEventInfo.setPicUrl(url); - accessControlHostEventInfo.setAcsId(accessControlHost.getId()); - publishMqtt(accessControlHostEventInfo); - //endregion - break; - default: - // log.debug("鏈煡鎶ヨ浜嬩欢绫诲瀷:lCommand:" + Integer.toHexString(lCommand)); - break; + //endregion + break; + case HCNetSDK.COMM_UPLOAD_FACESNAP_RESULT: + //log.debug("浜鸿劯妫�娴嬩簨浠朵笂鎶�(鏆備笉瑙f瀽)"); + break; + case HCNetSDK.COMM_GISINFO_UPLOAD: + //log.debug("GPS鎶ヨ淇℃伅涓婃姤(鏆備笉瑙f瀽)"); + break; + case HCNetSDK.COMM_ALARMHOST_CID_ALARM: + //log.debug("鎶ヨ涓绘満CID鎶ュ憡鎶ヨ涓婃姤"); + //region 鎶ヨ涓绘満鎶ヨ澶勭悊 + ArdEquipExternal ardEquipExternal = new ArdEquipExternal(); + ardEquipExternal.setIp(sDeviceIP); + ardEquipExternal.setPort(wLinkPort); + IArdEquipExternalService ardEquipExternalService = SpringUtils.getBean(IArdEquipExternalService.class); + ardEquipExternal = ardEquipExternalService.selectArdEquipExternal(ardEquipExternal); + HCNetSDK.NET_DVR_CID_ALARM netDvrCidAlarm = new HCNetSDK.NET_DVR_CID_ALARM(); + netDvrCidAlarm.write(); + Pointer pCIDInfo = netDvrCidAlarm.getPointer(); + pCIDInfo.write(0, pAlarmInfo.getByteArray(0, netDvrCidAlarm.size()), 0, netDvrCidAlarm.size()); + netDvrCidAlarm.read(); + //CID浜嬩欢鍚� + String sCIDCode = ByteUtils.bytesToStringZh(netDvrCidAlarm.sCIDCode);//CID浜嬩欢鍚� + //CID浜嬩欢鍚� + //String sCIDDescribe = ByteUtils.bytesToStringZh(netDvrCidAlarm.sCIDDescribe);//CID浜嬩欢鍚� + int position = ByteUtils.findIndexOfDoubleZero(netDvrCidAlarm.sCIDDescribe); + String sCIDDescribe; + if (position != -1) { + byte[] result = new byte[position]; + System.arraycopy(netDvrCidAlarm.sCIDDescribe, 0, result, 0, position); + sCIDDescribe = ByteUtils.bytesToStringZh(result); + } else { + sCIDDescribe = ByteUtils.bytesToStringZh(netDvrCidAlarm.sCIDDescribe); + } + //瑙﹀彂鎶ヨ鐨勬椂闂寸偣 + String struTriggerTime = DateUtils.convertDate(parseAlarmTime(netDvrCidAlarm.struTriggerTime), "yyyy-M-d H:m:s"); + //涓婁紶鎶ヨ鐨勬椂闂寸偣 + String struUploadTime = DateUtils.convertDate(parseAlarmTime(netDvrCidAlarm.struUploadTime), "yyyy-M-d H:m:s"); + //鎶ュ憡绫诲瀷 + String byReportType = ""; + switch (netDvrCidAlarm.byReportType) { + case 1: + byReportType = "闃插尯鎶ヨ"; + break; + case 2: + byReportType = "瑙嗛鎶ヨ"; + break; + case 3: + byReportType = "杞槻鍖烘姤璀�"; + break; + case 4: + byReportType = "鎸熸寔鎶ヨ"; + break; + case 5: + byReportType = "闃叉媶鎶ヨ "; + break; + case 6: + byReportType = "鎿嶄綔鎶ュ憡 "; + break; + case 7: + byReportType = "寮傚父鎶ュ憡 "; + break; + } + //瀛愮郴缁熷彿 + Integer bySubSysNo = Integer.valueOf(netDvrCidAlarm.bySubSysNo); + //闃插尯鍙� 璧峰0 + Integer wDefenceNo = Integer.valueOf(netDvrCidAlarm.wDefenceNo); + //闃插尯鍚嶇О + String wDefenceName = ""; + if (!bySubSysNo.equals(-1)) { + CameraCmd cmd = new CameraCmd(); + cmd.setCameraId(ardEquipExternal.getId()); + cmd.setWZoneIndex(wDefenceNo); + wDefenceName = HikClientUtil.getDefenseZoneName(cmd); + } + if (sCIDDescribe.contains("鎭㈠")) { + return true; + } + + ExternalAlarmEventInfo externalAlarmEventInfo = new ExternalAlarmEventInfo(); + externalAlarmEventInfo.setAlarmId(sCIDCode); + externalAlarmEventInfo.setAlarmName(sCIDDescribe); + externalAlarmEventInfo.setDefenseId((wDefenceNo + 1)); + externalAlarmEventInfo.setDefenseName(wDefenceName); + externalAlarmEventInfo.setSubSysNo(bySubSysNo); + externalAlarmEventInfo.setAlarmType(byReportType); + externalAlarmEventInfo.setAlarmTime(struTriggerTime); + externalAlarmEventInfo.setAlarmHostId(ardEquipExternal.getId()); + publishMqtt(externalAlarmEventInfo); + //endregion + break; + case HCNetSDK.COMM_ALARM_ACS: + //region 闂ㄧ涓绘満鎶ヨ澶勭悊 + ArdEquipExternal accessControlHost = new ArdEquipExternal(); + accessControlHost.setIp(sDeviceIP); + accessControlHost.setPort(wLinkPort); + ardEquipExternalService = SpringUtils.getBean(IArdEquipExternalService.class); + accessControlHost = ardEquipExternalService.selectArdEquipExternal(accessControlHost); + HCNetSDK.NET_DVR_ACS_ALARM_INFO strACSInfo = new HCNetSDK.NET_DVR_ACS_ALARM_INFO(); + strACSInfo.write(); + Pointer acsInfo = strACSInfo.getPointer(); + acsInfo.write(0, pAlarmInfo.getByteArray(0, strACSInfo.size()), 0, strACSInfo.size()); + strACSInfo.read(); + int dwMajor = strACSInfo.dwMajor; + + if (dwMajor != 5) { + //鍙幏鍙栦簨浠� + // log.debug("闈炰簨浠舵姤璀︽暟鎹笂鎶�(鏆備笉瑙f瀽)"); + break; + } + + int dwMinor = strACSInfo.dwMinor; + if (dwMinor != 80 && dwMinor != 104) { + //鍙В鏋愮湡浜烘娴嬪け璐ュ拰浜鸿劯鎶撴媿澶辫触鐨勬绫诲瀷浜嬩欢 + break; + } + String alarmType = ""; + switch (dwMinor) { + case 104: + alarmType = "鐪熶汉妫�娴嬪け璐�"; + break; + case 80: + alarmType = "浜鸿劯鎶撴媿澶辫触"; + break; + } + log.debug("闂ㄧ涓绘満鎶ヨ涓婁紶:" + alarmType); + String alarmTime = DateUtils.convertDate(parseAlarmTime(strACSInfo.struTime), "yyyy-M-d H:m:s"); + + //浜嬩欢鍥剧墖澶勭悊 + int dwPicDataLen = strACSInfo.dwPicDataLen; + if (dwPicDataLen > 0) { + try { + //灏嗗瓧鑺傚啓鍏ユ枃浠� + long offset = 0; + ByteBuffer buffers = strACSInfo.pPicData.getByteBuffer(offset, strACSInfo.dwPicDataLen); + byte[] bytes = new byte[strACSInfo.dwPicDataLen]; + buffers.rewind(); + buffers.get(bytes); + InputStream input = new ByteArrayInputStream(bytes); + String bucketName = "pic"; + String objectName = "alarm/" + IdUtils.simpleUUID() + ".jpeg"; + boolean uploadObject = MinioUtil.uploadObject(bucketName, objectName, input, input.available(), "image/JPEG"); + if (uploadObject) { + url = MinioUtil.getBucketObjectUrl(bucketName, objectName); + //log.debug("涓婁紶鏂囦欢鎴愬姛!" + url); + } + } catch (Exception e) { + log.error("鍥剧墖淇濆瓨澶辫触"); + } + } + HCNetSDK.NET_DVR_ACS_EVENT_INFO struAcsEventInfo = strACSInfo.struAcsEventInfo; + int byType = struAcsEventInfo.byType; + String defenseType = ""; + switch (byType) { + case 0: + defenseType = "鍗虫椂闃插尯"; + break; + case 1: + defenseType = "24灏忔椂闃插尯"; + break; + case 2: + defenseType = "寤舵椂闃插尯"; + break; + case 3: + defenseType = "鍐呴儴闃插尯"; + break; + case 4: + defenseType = "閽ュ寵闃插尯"; + break; + case 5: + defenseType = "鐏闃插尯"; + break; + case 6: + defenseType = "鍛ㄧ晫闃插尯"; + break; + case 7: + defenseType = "24灏忔椂鏃犲0闃插尯"; + break; + case 8: + defenseType = "24灏忔椂杈呭姪闃插尯"; + break; + case 9: + defenseType = "24灏忔椂闇囧姩闃插尯"; + break; + case 10: + defenseType = "闂ㄧ绱ф�ュ紑闂ㄩ槻鍖�"; + break; + case 11: + defenseType = "闂ㄧ绱ф�ュ叧闂ㄩ槻鍖�"; + break; + default: + defenseType = "鏃�"; + break; + } + AccessControlHostEventInfo accessControlHostEventInfo = new AccessControlHostEventInfo(); + accessControlHostEventInfo.setSerialNo(struAcsEventInfo.dwSerialNo); + accessControlHostEventInfo.setAlarmType(alarmType); + accessControlHostEventInfo.setDoorNo(struAcsEventInfo.dwDoorNo); + accessControlHostEventInfo.setDefenseType(defenseType); + accessControlHostEventInfo.setAlarmTime(alarmTime); + accessControlHostEventInfo.setPicUrl(url); + accessControlHostEventInfo.setAcsId(accessControlHost.getId()); + publishMqtt(accessControlHostEventInfo); + //endregion + break; + default: + // log.debug("鏈煡鎶ヨ浜嬩欢绫诲瀷:lCommand:" + Integer.toHexString(lCommand)); + break; + + } } return true; } @@ -399,7 +392,7 @@ */ private String savePicture(CameraEventInfo info) { CameraCmd cmd = new CameraCmd(); - String key=info.getCameraIp()+":"+info.getCameraPort(); + String key = info.getCameraIp() + ":" + info.getCameraPort(); ArdCameras Cameras = GlobalVariable.cameraMap.get(key); if (Cameras == null) { return ""; @@ -407,7 +400,7 @@ cmd.setCameraId(Cameras.getId()); cmd.setChannelNum(info.getCameraChannel()); cmd.setBucketName("pic"); - String filename = "alarm" + "/" + IdUtils.simpleUUID() + ".jpg"; + String filename = "alarm" + "/" + IdUtils.simpleUUID() + ".jpg"; cmd.setObjectName(filename); String url = HikClientUtil.picCutCate(cmd); return url; @@ -446,7 +439,7 @@ * 閫氱敤鍏夌數鎶ヨ鎺ㄩ�乵qtt */ private void publishMqtt(CameraEventInfo info) { - printLog(info); + printLog(info); MqttConsumer.publish(2, false, "camera", JSON.toJSONString(info)); } -- Gitblit v1.9.3