From 092d7c56bb8653075b8f4b27220e69e6bb8e5d37 Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期四, 09 十一月 2023 16:49:26 +0800 Subject: [PATCH] 增加超脑业务 --- src/main/java/com/ard/utils/hiksdk/service/impl/FMSGCallBack.java | 194 ++++++++++++++++++++++++------------------------ 1 files changed, 96 insertions(+), 98 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 9314aa7..6e3ca3c 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 @@ -6,17 +6,17 @@ import com.ard.alarm.camera.service.IArdCamerasService; import com.ard.alarm.external.domain.ArdEquipExternal; import com.ard.alarm.external.service.IArdEquipExternalService; -import com.ard.config.MinioClientSingleton; +import com.ard.utils.minio.MinioUtil; import com.ard.utils.other.ByteUtils; import com.ard.utils.hiksdk.common.GlobalVariable; import com.ard.utils.hiksdk.domain.AccessControlHostEventInfo; import com.ard.utils.hiksdk.domain.CameraEventInfo; import com.ard.utils.hiksdk.domain.ExternalAlarmEventInfo; import com.ard.utils.hiksdk.util.hikSdkUtil.HCNetSDK; -import com.ard.utils.hiksdk.util.minio.MinioUtils; import com.ard.utils.other.DateUtils; -import com.ard.utils.other.SpringTool; -import com.ard.utils.mqtt.MqttConsumer; +import com.ard.utils.mqtt.MqttProducer; +import com.ard.utils.spring.SpringUtils; +import com.ard.utils.uuid.IdUtils; import com.sun.jna.Pointer; import lombok.extern.slf4j.Slf4j; @@ -24,6 +24,7 @@ import java.nio.ByteBuffer; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.List; /** * @ClassName: FMSGCallBack @@ -47,56 +48,55 @@ @Override public boolean invoke(int lCommand, HCNetSDK.NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser) { SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - String sDeviceIP = ByteUtils.bytesToStringZh(pAlarmer.sDeviceIP);//璁惧IP鍦板潃 + String sDeviceIP = ByteUtils.bytesToStringZh(pAlarmer.sDeviceIP).trim();//璁惧IP鍦板潃 Integer wLinkPort = Integer.valueOf(pAlarmer.wLinkPort);//璁惧閫氳绔彛 CameraEventInfo info; String sTime;//浜嬩欢鏃堕棿 String url = "";//浜嬩欢鍥剧墖 //lCommand鏄紶鐨勬姤璀︾被鍨� - //log.debug("鎶ヨ浜嬩欢绫诲瀷:lCommand:" + Integer.toHexString(lCommand)); + log.debug("鎶ヨ浜嬩欢绫诲瀷:lCommand:" + Integer.toHexString(lCommand)); + ArdCameras ardCameras = new ArdCameras(); + ardCameras.setIp(sDeviceIP); + ardCameras.setPort(wLinkPort); + IArdCamerasService ardCamerasService = SpringUtils.getBean(IArdCamerasService.class); + List<ArdCameras> ardCamerasList = ardCamerasService.selectArdCamerasList(ardCameras); switch (lCommand) { + //region 绉诲姩渚︽祴銆佽棰戜涪澶便�侀伄鎸°�両O淇″彿閲忕瓑鎶ヨ淇℃伅(V3.0浠ヤ笂鐗堟湰鏀寔鐨勮澶�) case HCNetSDK.COMM_ALARM_V30: - log.debug("绉诲姩渚︽祴"); - ArdCameras ardCameras = new ArdCameras(); - ardCameras.setIp(sDeviceIP); - ardCameras.setPort(wLinkPort); - IArdCamerasService ardCamerasService = SpringTool.getApplicationContext().getBean(IArdCamerasService.class); - ArdCameras camera = ardCamerasService.selectArdCamerasList(ardCameras).get(0); + //region 绉诲姩渚︽祴銆佽棰戜涪澶便�侀伄鎸°�両O淇″彿閲忕瓑鎶ヨ淇℃伅(V3.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.setCameraType(camera.getGdtype()); - info.setCameraChannel(Integer.valueOf(netDvrAlarminfoV30.byChannel[0])); - info.setLongitude(camera.getLongitude()); - info.setLatitude(camera.getLatitude()); - info.setAlarmType("绉诲姩渚︽祴"); - printLog(info); - //鍥剧墖瀛樺叆minio - url = savePicture(info); - info.setPicUrl(url); - publishMqtt(info); - break; + if (ardCamerasList.size() > 0) { + ArdCameras camera = ardCamerasService.selectArdCamerasList(ardCameras).get(0); + 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; + } } - + //endregion + break; case HCNetSDK.COMM_ALARM_RULE: - log.debug("琛屼负鍒嗘瀽淇℃伅鎶ヨ淇℃伅涓婃姤"); - //region 琛屼负鍒嗘瀽淇℃伅 - ardCameras = new ArdCameras(); - ardCameras.setIp(sDeviceIP); - ardCameras.setPort(wLinkPort); - ardCamerasService = SpringTool.getApplicationContext().getBean(IArdCamerasService.class); - ArdCameras ardCamera = ardCamerasService.selectArdCamerasList(ardCameras).get(0); - + //log.debug("琛屼负鍒嗘瀽淇℃伅鎶ヨ淇℃伅涓婃姤"); + //region 寮傚父琛屼负璇嗗埆淇℃伅 HCNetSDK.NET_VCA_RULE_ALARM strVcaAlarm = new HCNetSDK.NET_VCA_RULE_ALARM(); strVcaAlarm.write(); Pointer pVCAInfo = strVcaAlarm.getPointer(); @@ -109,25 +109,27 @@ info = new CameraEventInfo(); info.setAlarmName("浜哄憳琛屼负鍒嗘瀽"); info.setAlarmTime(sTime); - info.setCameraName(ardCamera.getName()); - info.setCameraId(ardCamera.getId()); - info.setCameraIp(ipaddr); - 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); - printLog(info); - //鍥剧墖瀛樺叆minio - url = savePicture(info); - info.setPicUrl(url); - publishMqtt(info); - //endregion - break; + if (ardCamerasList.size() > 0) { + ArdCameras camera = ardCamerasService.selectArdCamerasList(ardCameras).get(0); + 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,16 +140,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); - printLog(info); - //鍥剧墖瀛樺叆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 @@ -172,27 +173,27 @@ // info.setAlarmType("鐜╂墜鏈烘姤璀︿簨浠�"); // //endregion // break; - default: - // log.debug("鏈煡琛屼负浜嬩欢绫诲瀷:" + strVcaAlarm.struRuleInfo.wEventTypeEx); - 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_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 = SpringTool.getApplicationContext().getBean(IArdEquipExternalService.class); + IArdEquipExternalService ardEquipExternalService = SpringUtils.getBean(IArdEquipExternalService.class); ardEquipExternal = ardEquipExternalService.selectArdEquipExternal(ardEquipExternal); - HCNetSDK.NET_DVR_CID_ALARM netDvrCidAlarm = new HCNetSDK.NET_DVR_CID_ALARM(); netDvrCidAlarm.write(); @@ -201,7 +202,6 @@ netDvrCidAlarm.read(); //CID浜嬩欢鍚� String sCIDCode = ByteUtils.bytesToStringZh(netDvrCidAlarm.sCIDCode);//CID浜嬩欢鍚� - //CID浜嬩欢鍚� //String sCIDDescribe = ByteUtils.bytesToStringZh(netDvrCidAlarm.sCIDDescribe);//CID浜嬩欢鍚� int position = ByteUtils.findIndexOfDoubleZero(netDvrCidAlarm.sCIDDescribe); @@ -271,13 +271,13 @@ //endregion break; case HCNetSDK.COMM_ALARM_ACS: + log.debug("闂ㄧ涓绘満鎶ヨ涓婃姤"); //region 闂ㄧ涓绘満鎶ヨ澶勭悊 ArdEquipExternal accessControlHost = new ArdEquipExternal(); accessControlHost.setIp(sDeviceIP); accessControlHost.setPort(wLinkPort); - ardEquipExternalService = SpringTool.getApplicationContext().getBean(IArdEquipExternalService.class); + 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(); @@ -290,13 +290,12 @@ // log.debug("闈炰簨浠舵姤璀︽暟鎹笂鎶�(鏆備笉瑙f瀽)"); break; } + int dwMinor = strACSInfo.dwMinor; if (dwMinor != 80 && dwMinor != 104) { //鍙В鏋愮湡浜烘娴嬪け璐ュ拰浜鸿劯鎶撴媿澶辫触鐨勬绫诲瀷浜嬩欢 break; } -// log.info("闂ㄧ涓绘満鎶ヨ涓婁紶"); -// log.info("銆愪富绫诲瀷銆戜簨浠�"); String alarmType = ""; switch (dwMinor) { case 104: @@ -306,13 +305,12 @@ 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) { - SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); - String newName = sf.format(new Date()); try { //灏嗗瓧鑺傚啓鍏ユ枃浠� long offset = 0; @@ -322,10 +320,10 @@ buffers.get(bytes); InputStream input = new ByteArrayInputStream(bytes); String bucketName = "pic"; - String objectName = "alarm_" + newName + ".jpeg"; - boolean uploadObject = MinioUtils.uploadObject(bucketName, objectName, input, "image/JPEG"); + String objectName = "alarm/" + IdUtils.simpleUUID() + ".jpeg"; + boolean uploadObject = MinioUtil.uploadObject(bucketName, objectName, input, input.available(), "image/JPEG"); if (uploadObject) { - url = MinioClientSingleton.domainUrl + "/" + bucketName + "/" + objectName; + url = MinioUtil.getBucketObjectUrl(bucketName, objectName); //log.debug("涓婁紶鏂囦欢鎴愬姛!" + url); } } catch (Exception e) { @@ -388,7 +386,7 @@ //endregion break; default: - // log.debug("鏈煡鎶ヨ浜嬩欢绫诲瀷:lCommand:" + Integer.toHexString(lCommand)); + log.debug("鏈煡鎶ヨ浜嬩欢绫诲瀷:lCommand:" + Integer.toHexString(lCommand)); break; } @@ -401,15 +399,15 @@ */ private String savePicture(CameraEventInfo info) { CameraCmd cmd = new CameraCmd(); - ArdCameras Cameras = GlobalVariable.cameraMap.get(info.getCameraIp()); + String key = info.getCameraIp() + ":" + info.getCameraPort(); + ArdCameras Cameras = GlobalVariable.cameraMap.get(key); if (Cameras == null) { return ""; } cmd.setCameraId(Cameras.getId()); cmd.setChannelNum(info.getCameraChannel()); cmd.setBucketName("pic"); - String UUID = java.util.UUID.randomUUID().toString().replace("-", ""); - String filename = info.getCameraName() + "/" + info.getAlarmType() + "/" + UUID + ".jpg"; + String filename = "alarm" + "/" + IdUtils.simpleUUID() + ".jpg"; cmd.setObjectName(filename); String url = HikClientUtil.picCutCate(cmd); return url; @@ -448,8 +446,8 @@ * 閫氱敤鍏夌數鎶ヨ鎺ㄩ�乵qtt */ private void publishMqtt(CameraEventInfo info) { - // printLog(info); - MqttConsumer.publish(2, false, "camera", JSON.toJSONString(info)); + printLog(info); + MqttProducer.publish(2, false, "camera", JSON.toJSONString(info)); } /** @@ -457,7 +455,7 @@ */ private void publishMqtt(ExternalAlarmEventInfo info) { printLog(info); - MqttConsumer.publish(2, false, "external", JSON.toJSONString(info)); + MqttProducer.publish(2, false, "external", JSON.toJSONString(info)); } /** @@ -465,7 +463,7 @@ */ private void publishMqtt(AccessControlHostEventInfo info) { printLog(info); - MqttConsumer.publish(2, false, "accessControl", JSON.toJSONString(info)); + MqttProducer.publish(2, false, "accessControl", JSON.toJSONString(info)); } /** -- Gitblit v1.9.3