From 2607eb0f1105f753d48d8eafe7799b6efb2c66ba Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期一, 10 七月 2023 16:03:05 +0800 Subject: [PATCH] 增加门禁主机报警事件解析上传mqtt --- src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java | 53 +++++- src/main/java/com/ard/utils/hiksdk/domain/CameraEventInfo.java | 6 src/main/java/com/ard/utils/hiksdk/util/minio/MinioUtils.java | 4 src/main/java/com/ard/alarm/external/service/impl/ArdEquipExternalServiceImpl.java | 5 src/main/java/com/ard/utils/hiksdk/service/impl/LoginResultCallBack.java | 14 + src/main/java/com/ard/utils/hiksdk/service/impl/FMSGCallBack.java | 180 +++++++++++++++++++++++-- src/main/java/com/ard/alarm/external/service/IArdEquipExternalService.java | 18 + src/main/java/com/ard/alarm/external/mapper/ArdEquipExternalMapper.java | 8 + src/main/resources/mapper/ArdEquipExternalMapper.xml | 15 ++ src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java | 25 ++- src/main/java/com/ard/utils/hiksdk/domain/AccessControlHostEventInfo.java | 48 ++++++ 11 files changed, 319 insertions(+), 57 deletions(-) diff --git a/src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java b/src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java index 71d9b4b..b0890de 100644 --- a/src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java +++ b/src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java @@ -1,6 +1,7 @@ package com.ard.alarm.camera.service.impl; import java.util.*; + import com.ard.alarm.camera.domain.ArdCameras; import com.ard.alarm.camera.mapper.ArdCamerasMapper; import com.ard.alarm.camera.service.IArdCamerasService; @@ -30,20 +31,28 @@ private ArdCamerasMapper ardCamerasMapper; @Resource private ArdEquipExternalMapper ardEquipExternalMapper; + @Override public void run(ApplicationArguments args) throws Exception { - + //鍔犺浇sdk搴� HikClientUtil.loadHCNetSDKLib(); - //鑾峰彇鍏ㄩ儴娴峰悍鍏夌數 + //鑾峰彇鍏ㄩ儴娴峰悍鍏夌數灏濊瘯鐧诲綍 List<ArdCameras> ardCameras = ardCamerasMapper.selectArdCamerasList(new ArdCameras()); HikClientUtil.loginAllCamera(ardCameras); - //鑾峰彇鍏ㄩ儴娴峰悍鎶ヨ涓绘満 - ArdEquipExternal ardEquipExternal= new ArdEquipExternal(); - ardEquipExternal.setFactory("1"); - ardEquipExternal.setType("1"); - List<ArdEquipExternal> ardEquipExternals = ardEquipExternalMapper.selectArdEquipExternalList(ardEquipExternal); - HikClientUtil.loginAllAlarmHost(ardEquipExternals); + //鑾峰彇鍏ㄩ儴娴峰悍鎶ヨ涓绘満灏濊瘯鐧诲綍 + ArdEquipExternal alarmHost = new ArdEquipExternal(); + alarmHost.setFactory("1"); + alarmHost.setType("1"); + List<ArdEquipExternal> alarmHosts = ardEquipExternalMapper.selectArdEquipExternalList(alarmHost); + HikClientUtil.loginAllAlarmHost(alarmHosts); + //鑾峰彇鍏ㄩ儴闂ㄧ涓绘満灏濊瘯鐧诲綍 + ArdEquipExternal accessControlHost = new ArdEquipExternal(); + accessControlHost.setFactory("1"); + accessControlHost.setType("6"); + List<ArdEquipExternal>accessControlHosts = ardEquipExternalMapper.selectArdEquipExternalList(accessControlHost); + HikClientUtil.loginAllAccessControlHost(accessControlHosts); } + /** * 鏌ヨ鐩告満璁惧 * diff --git a/src/main/java/com/ard/alarm/external/mapper/ArdEquipExternalMapper.java b/src/main/java/com/ard/alarm/external/mapper/ArdEquipExternalMapper.java index a93f6f1..e5b3a23 100644 --- a/src/main/java/com/ard/alarm/external/mapper/ArdEquipExternalMapper.java +++ b/src/main/java/com/ard/alarm/external/mapper/ArdEquipExternalMapper.java @@ -22,6 +22,14 @@ */ public ArdEquipExternal selectArdEquipExternalById(String id); + + /** + * 鏌ヨexternal + * + * @param ardEquipExternal external + * @return external闆嗗悎 + */ + public ArdEquipExternal selectArdEquipExternal(ArdEquipExternal ardEquipExternal); /** * 鏌ヨexternal鍒楄〃 * diff --git a/src/main/java/com/ard/alarm/external/service/IArdEquipExternalService.java b/src/main/java/com/ard/alarm/external/service/IArdEquipExternalService.java index 1c455a6..db2b2e0 100644 --- a/src/main/java/com/ard/alarm/external/service/IArdEquipExternalService.java +++ b/src/main/java/com/ard/alarm/external/service/IArdEquipExternalService.java @@ -1,28 +1,36 @@ package com.ard.alarm.external.service; import java.util.List; + import com.ard.alarm.external.domain.ArdEquipExternal; /** * externalService鎺ュ彛 - * + * * @author zj * @date 2023-03-13 */ -public interface IArdEquipExternalService -{ +public interface IArdEquipExternalService { /** * 鏌ヨexternal - * + * * @param id external涓婚敭 * @return external */ public ArdEquipExternal selectArdEquipExternalById(String id); /** + * 鏌ヨexternal + * + * @param ardEquipExternal external + * @return external闆嗗悎 + */ + public ArdEquipExternal selectArdEquipExternal(ArdEquipExternal ardEquipExternal); + + /** * 鏌ヨexternal鍒楄〃 - * + * * @param ardEquipExternal external * @return external闆嗗悎 */ diff --git a/src/main/java/com/ard/alarm/external/service/impl/ArdEquipExternalServiceImpl.java b/src/main/java/com/ard/alarm/external/service/impl/ArdEquipExternalServiceImpl.java index 4c05ebf..2753ea4 100644 --- a/src/main/java/com/ard/alarm/external/service/impl/ArdEquipExternalServiceImpl.java +++ b/src/main/java/com/ard/alarm/external/service/impl/ArdEquipExternalServiceImpl.java @@ -33,6 +33,11 @@ return ardEquipExternalMapper.selectArdEquipExternalById(id); } + @Override + public ArdEquipExternal selectArdEquipExternal(ArdEquipExternal ardEquipExternal) { + return ardEquipExternalMapper.selectArdEquipExternal(ardEquipExternal); + } + /** * 鏌ヨexternal鍒楄〃 * diff --git a/src/main/java/com/ard/utils/hiksdk/domain/AccessControlHostEventInfo.java b/src/main/java/com/ard/utils/hiksdk/domain/AccessControlHostEventInfo.java new file mode 100644 index 0000000..e88a06f --- /dev/null +++ b/src/main/java/com/ard/utils/hiksdk/domain/AccessControlHostEventInfo.java @@ -0,0 +1,48 @@ +package com.ard.utils.hiksdk.domain; + +import lombok.Data; + +/** + * @Description: 闂ㄧ涓绘満浜嬩欢淇℃伅 + * @ClassName: AccessControlHostEventInfo + * @Author: 鍒樿嫃涔� + * @Date: 2023骞�07鏈�10鏃�14:25 + * @Version: 1.0 + **/ +@Data +public class AccessControlHostEventInfo { + /** + * 浜嬩欢娴佹按鍙� + */ + Integer serialNo; + + /** + * 闂ㄧ紪鍙� + */ + Integer doorNo; + + /** + * 闃插尯绫诲瀷 + */ + String defenseType; + + /** + * 鎶ヨ鏃堕棿 + */ + String alarmTime; + + /** + * 鎶ヨ浜嬩欢绫诲瀷 + */ + String alarmType; + + /** + * 鍥剧墖url + */ + String picUrl; + + /** + * 鍏宠仈闂ㄧ涓绘満id + */ + String acsId; +} diff --git a/src/main/java/com/ard/utils/hiksdk/domain/alarmEventInfo.java b/src/main/java/com/ard/utils/hiksdk/domain/CameraEventInfo.java similarity index 89% rename from src/main/java/com/ard/utils/hiksdk/domain/alarmEventInfo.java rename to src/main/java/com/ard/utils/hiksdk/domain/CameraEventInfo.java index 0f967a1..19bea4e 100644 --- a/src/main/java/com/ard/utils/hiksdk/domain/alarmEventInfo.java +++ b/src/main/java/com/ard/utils/hiksdk/domain/CameraEventInfo.java @@ -3,14 +3,14 @@ import lombok.Data; /** - * @ClassName alarmInfo - * @Description: + * @ClassName CameraAlarmEventInfo + * @Description: 閫氱敤鍏夌數浜嬩欢淇℃伅 * @Author 鍒樿嫃涔� * @Date 2023/2/16 20:31 * @Version 1.0 */ @Data -public class alarmEventInfo { +public class CameraEventInfo { /** * 鎶ヨ鍚嶇О 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 f01a88e..7fe8ac7 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 @@ -4,15 +4,14 @@ 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; +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.domain.alarmEventInfo; import com.ard.utils.hiksdk.util.hikSdkUtil.HCNetSDK; import com.ard.utils.hiksdk.util.minio.MinioUtils; import com.ard.utils.DateUtils; @@ -20,11 +19,8 @@ import com.ard.utils.mqtt.MqttConsumer; import com.sun.jna.Pointer; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import javax.xml.bind.DatatypeConverter; -import java.io.ByteArrayInputStream; -import java.io.InputStream; +import java.io.*; import java.nio.ByteBuffer; import java.text.SimpleDateFormat; import java.util.Date; @@ -55,9 +51,7 @@ Integer wLinkPort = Integer.valueOf(pAlarmer.wLinkPort); String sTime;//浜嬩欢鏃堕棿 - String url;//浜嬩欢鍥剧墖 - alarmEventInfo info;//浜嬩欢淇℃伅 - + String url = "";//浜嬩欢鍥剧墖 //lCommand鏄紶鐨勬姤璀︾被鍨� switch (lCommand) { case HCNetSDK.COMM_ALARM_RULE: @@ -77,7 +71,7 @@ sTime = DateUtils.parseTime(strVcaAlarm.dwAbsTime);//浜嬩欢鏃堕棿 String ipaddr = new String(strVcaAlarm.struDevInfo.struDevIP.sIpV4).trim();//璁惧ip Integer channel = Integer.valueOf(strVcaAlarm.struDevInfo.byChannel);//閫氶亾 - info = new alarmEventInfo(); + CameraEventInfo info = new CameraEventInfo(); info.setAlarmName("浜哄憳琛屼负鍒嗘瀽"); info.setAlarmTime(sTime); info.setCameraName(ardcamere.getName()); @@ -153,11 +147,12 @@ break; case HCNetSDK.COMM_ALARMHOST_CID_ALARM: log.info("鎶ヨ涓绘満 CID 鎶ュ憡鎶ヨ涓婁紶"); + //region 鎶ヨ涓绘満鎶ヨ澶勭悊 ArdEquipExternal ardEquipExternal = new ArdEquipExternal(); ardEquipExternal.setIp(sDeviceIP); ardEquipExternal.setPort(wLinkPort); IArdEquipExternalService ardEquipExternalService = SpringTool.getApplicationContext().getBean(IArdEquipExternalService.class); - ardEquipExternal = ardEquipExternalService.selectArdEquipExternalList(ardEquipExternal).get(0); + ardEquipExternal = ardEquipExternalService.selectArdEquipExternal(ardEquipExternal); HCNetSDK.NET_DVR_CID_ALARM netDvrCidAlarm = new HCNetSDK.NET_DVR_CID_ALARM(); @@ -234,6 +229,122 @@ 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 = SpringTool.getApplicationContext().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) { + //鍙幏鍙栦簨浠� + break; + } + int dwMinor = strACSInfo.dwMinor; + if (dwMinor != 80 && dwMinor != 104) { + //鍙В鏋愮湡浜烘娴嬪け璐ュ拰浜鸿劯鎶撴媿澶辫触鐨勬绫诲瀷浜嬩欢 + break; + } +// log.info("闂ㄧ涓绘満鎶ヨ涓婁紶"); +// log.info("銆愪富绫诲瀷銆戜簨浠�"); + String alarmType = ""; + switch (dwMinor) { + case 104: + alarmType = "鐪熶汉妫�娴嬪け璐�"; + break; + case 80: + alarmType = "浜鸿劯鎶撴媿澶辫触"; + break; + } + 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; + 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_" + newName + ".jpeg"; + boolean uploadObject = MinioUtils.uploadObject(bucketName, objectName, input, "image/JPEG"); + if (uploadObject) { + url = MinioClientSingleton.domainUrl + "/" + 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.info("鏈煡鎶ヨ浜嬩欢绫诲瀷:lCommand:" + Integer.toHexString(lCommand)); @@ -266,7 +377,7 @@ String ipaddr = new String(strVcaAlarm.struDevInfo.struDevIP.sIpV4).trim();//璁惧ip String UUID = java.util.UUID.randomUUID().toString().replace("-", ""); String filename = ipaddr + "/" + currentTime + "/" + eventNameEng + "/" + UUID + ".jpg"; - boolean uploadRes = MinioUtils.uploadObject("pic", filename, inputStream, inputStream.available(), "image/jpeg"); + boolean uploadRes = MinioUtils.uploadObject("pic", filename, inputStream, "image/jpeg"); if (uploadRes) { url = MinioClientSingleton.domainUrl + filename; log.info("鍐欏叆minio鍥剧墖鍦板潃锛�" + url); @@ -279,9 +390,9 @@ } /** - * 鎵撲繚瀛樺浘鐗� + * 鐩告満鎴浘 */ - private String savePicture(alarmEventInfo info) { + private String savePicture(CameraEventInfo info) { CameraCmd cmd = new CameraCmd(); ArdCameras Cameras = GlobalVariable.cameraMap.get(info.getCameraIp()); cmd.setCameraId(Cameras.getId()); @@ -297,7 +408,7 @@ /** * 鎵撳嵃閫氱敤鍏夌數鏃ュ織 */ - private void printLog(alarmEventInfo info) { + private void printLog(CameraEventInfo info) { log.info("銆愯鍒欍��" + info.getAlarmName() + "銆愯鍒檌d銆�" + info.getRuleId() + "銆愮被鍨嬨��" + info.getAlarmType() + "銆愭椂闂淬��" + info.getAlarmTime() + "銆愮浉鏈篿d銆�" + info.getCameraId() + "銆愮浉鏈恒��" + info.getCameraName() + "銆怚P銆�" + info.getCameraIp() + "銆愰�氶亾銆�" + info.getCameraChannel() + "銆愬瀷鍙枫��" + info.getCameraType() + @@ -305,7 +416,7 @@ } /** - * 鎵撳嵃澶栬仈鎶ヨ鏃ュ織 + * 鎵撳嵃鎶ヨ涓绘満浜嬩欢鏃ュ織 */ private void printLog(ExternalAlarmEventInfo info) { log.info("銆愭姤璀D銆�" + info.getAlarmId() + "銆愭姤璀﹀悕绉般��" + info.getAlarmName() + @@ -314,19 +425,37 @@ } /** + * 鎵撳嵃闂ㄧ浜嬩欢鏃ュ織 + */ + private void printLog(AccessControlHostEventInfo info) { + log.info("銆愭姤璀D銆�" + info.getSerialNo() + "銆愯澶囩紪鍙枫��"+ + "銆愰棬缂栧彿銆�" + info.getDoorNo() + "銆愪簨浠剁被鍨嬨��" + info.getAlarmType() + + "銆愰槻鍖虹被鍨嬨��" + info.getDefenseType()+"銆愭椂闂淬��" + info.getAlarmTime() + + "銆愰棬绂佷富鏈篒D銆�" + info.getAcsId()); + } + + /** * 閫氱敤鍏夌數鎶ヨ鎺ㄩ�乵qtt */ - private void publishMqtt(alarmEventInfo info) { + private void publishMqtt(CameraEventInfo info) { // printLog(info); MqttConsumer.publish(2, false, "camera", JSON.toJSONString(info)); } /** - * 澶栬仈鎶ヨ鎺ㄩ�乵qtt + * 鎶ヨ涓绘満浜嬩欢鎺ㄩ�乵qtt */ private void publishMqtt(ExternalAlarmEventInfo info) { printLog(info); MqttConsumer.publish(2, false, "external", JSON.toJSONString(info)); + } + + /** + * 闂ㄧ浜嬩欢鎺ㄩ�乵qtt + */ + private void publishMqtt(AccessControlHostEventInfo info) { + printLog(info); + MqttConsumer.publish(2, false, "accessControl", JSON.toJSONString(info)); } /** @@ -341,4 +470,17 @@ byte bySecond = netDvrTimeEx.bySecond; return wYear + "-" + byMonth + "-" + byDay + " " + byHour + ":" + byMinute + ":" + bySecond; } + + /** + * 鏃堕棿鏍煎紡鍖� + */ + private String parseAlarmTime(HCNetSDK.NET_DVR_TIME netDvrTimeEx) { + int wYear = netDvrTimeEx.dwYear; + int byMonth = netDvrTimeEx.dwMonth; + int byDay = netDvrTimeEx.dwDay; + int byHour = netDvrTimeEx.dwHour; + int byMinute = netDvrTimeEx.dwMinute; + int bySecond = netDvrTimeEx.dwSecond; + return wYear + "-" + byMonth + "-" + byDay + " " + byHour + ":" + byMinute + ":" + bySecond; + } } diff --git a/src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java b/src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java index 5e9590d..594b3c1 100644 --- a/src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java +++ b/src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java @@ -3,6 +3,7 @@ import com.ard.alarm.camera.domain.ArdCameras; import com.ard.alarm.camera.domain.CameraCmd; import com.ard.alarm.external.domain.ArdEquipExternal; +import com.ard.config.MinioClientSingleton; import com.ard.utils.ByteUtils; import com.ard.utils.hiksdk.common.GlobalVariable; import com.ard.utils.hiksdk.domain.DeviceInfo; @@ -19,7 +20,6 @@ import java.io.*; import java.nio.ByteBuffer; import java.util.*; - /** @@ -173,6 +173,7 @@ log.info("鐧诲綍寮傚父锛�" + errorCode); } } + /** * @鎻忚堪 鐧诲綍鎵�鏈夌浉鏈� * @鍙傛暟 [] @@ -185,7 +186,7 @@ try { for (ArdCameras camera : ardCameras) { Thread.sleep(100); - DeviceInfo info=new DeviceInfo(); + DeviceInfo info = new DeviceInfo(); info.setDeviceId(camera.getId()); info.setIp(camera.getIp()); info.setPort(camera.getPort()); @@ -199,6 +200,7 @@ log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage()); } } + /** * @鎻忚堪 鐧诲綍鎵�鏈夋姤璀︿富鏈� * @鍙傛暟 [] @@ -211,7 +213,7 @@ try { for (ArdEquipExternal alarmHost : ardEquipExternals) { Thread.sleep(100); - DeviceInfo info=new DeviceInfo(); + DeviceInfo info = new DeviceInfo(); info.setDeviceId(alarmHost.getId()); info.setIp(alarmHost.getIp()); info.setPort(alarmHost.getPort()); @@ -225,7 +227,32 @@ log.error("鍒濆鍖栨姤璀︿富鏈哄紓甯革細" + ex.getMessage()); } } - + /** + * @鎻忚堪 鐧诲綍鎵�鏈夐棬绂佷富鏈� + * @鍙傛暟 [] + * @杩斿洖鍊� void + * @鍒涘缓浜� 鍒樿嫃涔� + * @鍒涘缓鏃堕棿 2023/2/3 10:10 + * @淇敼浜哄拰鍏跺畠淇℃伅 + */ + public static void loginAllAccessControlHost(List<ArdEquipExternal> ardEquipExternals) { + try { + for (ArdEquipExternal accessControlHost : ardEquipExternals) { + Thread.sleep(100); + DeviceInfo info = new DeviceInfo(); + info.setDeviceId(accessControlHost.getId()); + info.setIp(accessControlHost.getIp()); + info.setPort(accessControlHost.getPort()); + info.setUsername(accessControlHost.getUsername()); + info.setPassword(accessControlHost.getPassword()); + login(info); + String ip = accessControlHost.getIp(); + GlobalVariable.alarmHostMap.put(ip, accessControlHost); + } + } catch (Exception ex) { + log.error("鍒濆鍖栨姤璀︿富鏈哄紓甯革細" + ex.getMessage()); + } + } /** * @鎻忚堪 娉ㄩ攢鐧诲綍 * @鍙傛暟 [dvrLogin] @@ -269,7 +296,7 @@ * @param lUserID 鍞竴鏍囪瘑绗� * @param lAlarmHandle 鎶ヨ澶勭悊鍣� */ - public static int setupAlarmChan(int lUserID, int lAlarmHandle) { + public static int setupAlarmChan(String deviceIpPort, int lUserID, int lAlarmHandle) { // 鏍规嵁璁惧娉ㄥ唽鐢熸垚鐨刲UserID寤虹珛甯冮槻鐨勪笂浼犻�氶亾锛屽嵆鏁版嵁鐨勪笂浼犻�氶亾 if (lUserID == -1) { log.info("璇峰厛娉ㄥ唽"); @@ -296,12 +323,12 @@ // 甯冮槻鎴愬姛锛岃繑鍥炲竷闃叉垚鍔熺殑鏁版嵁浼犺緭閫氶亾鍙� lAlarmHandle = hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID, m_strAlarmInfo); if (lAlarmHandle == -1) { - log.error("璁惧甯冮槻澶辫触锛岄敊璇爜==========銆�" + hCNetSDK.NET_DVR_GetLastError()); + log.error("璁惧銆�" + deviceIpPort + "銆戝竷闃插け璐ワ紝閿欒鐮�==========銆�" + hCNetSDK.NET_DVR_GetLastError()); // 娉ㄩ攢 閲婃斁sdk璧勬簮 logout(lUserID); return lAlarmHandle; } else { - log.info("璁惧甯冮槻鎴愬姛"); + log.info("璁惧銆�" + deviceIpPort + "銆戝竷闃叉垚鍔�"); return lAlarmHandle; } } @@ -361,13 +388,14 @@ InputStream input = new ByteArrayInputStream(array); String url = ""; try { - boolean b = MinioUtils.uploadObject(cmd.getBucketName(), cmd.getObjectName(), input, input.available(), ContentType); + boolean b = MinioUtils.uploadObject(cmd.getBucketName(), cmd.getObjectName(), input, ContentType); if (b) { - url = MinioUtils.getBucketObjectUrl(cmd.getBucketName(), cmd.getObjectName()); - url = url.indexOf('?') != -1 ? url.substring(0, url.indexOf('?')) : url; + // url = MinioUtils.getBucketObjectUrl(cmd.getBucketName(), cmd.getObjectName()); + // url = url.indexOf('?') != -1 ? url.substring(0, url.indexOf('?')) : url; + url = MinioClientSingleton.domainUrl + "/" + cmd.getBucketName() + "/" + cmd.getObjectName(); log.debug("涓婁紶鏂囦欢鎴愬姛!" + url); } - } catch (IOException ex) { + } catch (Exception ex) { log.error("涓婁紶鏂囦欢寮傚父锛�" + ex.getMessage()); } return url; @@ -385,7 +413,7 @@ * 2023/7/6 10:48 */ public static String getDefenseZoneName(CameraCmd cmd) { - String name=""; + String name = ""; try { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getWZoneIndex();//閫氶亾鍙�==闃插尯鍙� @@ -411,6 +439,5 @@ } return name; } - } \ No newline at end of file diff --git a/src/main/java/com/ard/utils/hiksdk/service/impl/LoginResultCallBack.java b/src/main/java/com/ard/utils/hiksdk/service/impl/LoginResultCallBack.java index 4ee2bf5..5f8b731 100644 --- a/src/main/java/com/ard/utils/hiksdk/service/impl/LoginResultCallBack.java +++ b/src/main/java/com/ard/utils/hiksdk/service/impl/LoginResultCallBack.java @@ -19,19 +19,21 @@ public class LoginResultCallBack implements HCNetSDK.FLoginResultCallBack { private DeviceInfo deviceInfo; - public LoginResultCallBack(DeviceInfo deviceInfo) - { - this.deviceInfo=deviceInfo; + + public LoginResultCallBack(DeviceInfo deviceInfo) { + this.deviceInfo = deviceInfo; } + @Override public int invoke(int lUserID, int dwResult, HCNetSDK.NET_DVR_DEVICEINFO_V30 lpDeviceinfo, Pointer pUser) { + String deviceIpPort = deviceInfo.getIp() + ":" + deviceInfo.getPort(); if (dwResult == 1) { GlobalVariable.loginMap.put(deviceInfo.getDeviceId(), lUserID); - log.info(deviceInfo.getIp() + ":" + deviceInfo.getPort() + "鐧诲綍鎴愬姛"); + log.info("璁惧銆�" + deviceIpPort + "銆戠櫥褰曟垚鍔�"); // 璁剧疆鎶ヨ鍥炶皟鍑芥暟锛屽缓绔嬫姤璀︿笂浼犻�氶亾锛堝惎鐢ㄥ竷闃诧級 - HikClientUtil.setupAlarmChan(lUserID, -1); + HikClientUtil.setupAlarmChan(deviceIpPort, lUserID, -1); } else { - log.info(deviceInfo.getIp() + ":" + deviceInfo.getPort() + "鐧诲綍澶辫触"); + log.info("璁惧銆�" + deviceIpPort + "銆戠櫥褰曞け璐�"); } return 1; } diff --git a/src/main/java/com/ard/utils/hiksdk/util/minio/MinioUtils.java b/src/main/java/com/ard/utils/hiksdk/util/minio/MinioUtils.java index 9e96035..a21ee68 100644 --- a/src/main/java/com/ard/utils/hiksdk/util/minio/MinioUtils.java +++ b/src/main/java/com/ard/utils/hiksdk/util/minio/MinioUtils.java @@ -289,12 +289,12 @@ * @param size 饧も缉 * @param contextType 绫诲瀷 Image/jpeg 娴忚鍣ㄥ彲浠ョ洿鎺ユ墦寮�锛屽惁鍒欎笅杞� */ - public static boolean uploadObject(String bucketName, String objectName, InputStream stream, long size, String contextType) { + public static boolean uploadObject(String bucketName, String objectName, InputStream stream, String contextType) { try { PutObjectArgs putObjectArgs = PutObjectArgs.builder() .bucket(bucketName) .object(objectName) - .stream(stream, size, -1) + .stream(stream, stream.available(), -1) .contentType(contextType) .build(); ObjectWriteResponse objectWriteResponse = MinioClientSingleton.getMinioClient().putObject(putObjectArgs); diff --git a/src/main/resources/mapper/ArdEquipExternalMapper.xml b/src/main/resources/mapper/ArdEquipExternalMapper.xml index 646ba44..a7550e1 100644 --- a/src/main/resources/mapper/ArdEquipExternalMapper.xml +++ b/src/main/resources/mapper/ArdEquipExternalMapper.xml @@ -34,7 +34,20 @@ c.altitude from ard_equip_external c </sql> - + <select id="selectArdEquipExternal" parameterType="ArdEquipExternal" resultMap="ArdEquipExternalResult"> + <include refid="selectArdEquipExternalVo"/> + <where> + <if test="name != null and name != ''">and c.name like '%'||#{name}||'%'</if> + <if test="type != null and type != ''">and c.type = #{type}</if> + <if test="factory != null and factory != ''">and c.factory = #{factory}</if> + <if test="deptId != null ">and (c.dept_id = #{deptId} OR c.dept_id IN ( SELECT t.dept_id FROM sys_dept t + WHERE cast(#{deptId} as varchar) = any(string_to_array(ancestors,',')) )) + </if> + <if test="userId != null and userId != ''">and c.user_id = #{userId}</if> + <if test="ip != null and ip != ''">and c.ip = #{ip}</if> + <if test="port != null and port != ''">and c.port = #{port}</if> + </where> + </select> <select id="selectArdEquipExternalList" parameterType="ArdEquipExternal" resultMap="ArdEquipExternalResult"> <include refid="selectArdEquipExternalVo"/> <where> -- Gitblit v1.9.3