From 8aa86d038ed9152875196e9049e998ca7d620a22 Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期四, 07 十二月 2023 15:47:32 +0800 Subject: [PATCH] 优化超脑报警事件 --- src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Faceexpression.java | 19 + src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Targetattrs.java | 23 + src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/IsapiAlarm.java | 42 ++ src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Gender.java | 19 + src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Faces.java | 30 + src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Glass.java | 19 + src/main/java/com/ard/utils/sdk/hiksdk/domain/ChannelInfo.java | 16 src/main/java/com/ard/utils/sdk/hiksdk/domain/SuperBrainEventInfo.java | 4 src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Extenddata.java | 16 src/main/java/com/ard/utils/sdk/hiksdk/service/impl/LoginResultCallBack.java | 5 src/main/java/com/ard/utils/minio/MinioUtil.java | 2 src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Faceinfo.java | 23 + src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Mask.java | 19 + src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Smile.java | 19 + src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/FaceCapture.java | 20 + src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Faceappenddata.java | 24 + src/main/java/com/ard/utils/sdk/hiksdk/service/impl/FMSGCallBack.java | 452 ++++++++++-------------- src/main/java/com/ard/utils/sdk/hiksdk/common/GlobalVariable.java | 8 src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Facerect.java | 18 + src/main/java/com/ard/utils/sdk/hiksdk/util/hikSdkUtil/HCNetSDK.java | 2 src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java | 10 src/main/java/com/ard/utils/sdk/hiksdk/service/impl/HikClientUtil.java | 272 ++++---------- src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Age.java | 12 23 files changed, 609 insertions(+), 465 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 b825a7c..02bd926 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 @@ -9,6 +9,7 @@ import com.ard.alarm.camera.domain.ArdCameras; import com.ard.alarm.camera.mapper.ArdCamerasMapper; import com.ard.alarm.camera.service.IArdCamerasService; +import com.ard.utils.sdk.hiksdk.common.GlobalVariable; import com.ard.utils.sdk.hiksdk.service.impl.HikClientUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -39,10 +40,9 @@ //鍒濆鍖栨墽琛� @Override public void run(ApplicationArguments args) { - //鑾峰彇灏忓厜鐢靛皾璇曠櫥褰� ardCameraList = selectArdCamerasList(new ArdCameras()); HikClientUtil.loginAllCamera(ardCameraList); - syncCameraListTask(); + syncCameraTask(); } /** @@ -51,10 +51,10 @@ * 鍒樿嫃涔� * 2023/8/11 9:09:27 */ - private void syncCameraListTask() { + private void syncCameraTask() { scheduler.scheduleAtFixedRate(() -> { try { - //region 瀹氭椂鍚屾灏忓厜鐢� + //region 瀹氭椂鍚屾鍏夌數璁惧 List<ArdCameras> newArdCameraList = selectArdCamerasList(new ArdCameras()); //闇�瑕佹洿鏂扮殑鏁版嵁 List<ArdCameras> updateList = sameListWithDifferent(ardCameraList, newArdCameraList); @@ -95,8 +95,6 @@ */ @Override public List<ArdCameras> selectArdCamerasList(ArdCameras ardCamera) { - ardCamera.setGdType("0"); - ardCamera.setFactory("1"); Wrapper<ArdCameras> queryWrapper=new QueryWrapper<>(ardCamera); return ardCamerasMapper.selectList(queryWrapper); } diff --git a/src/main/java/com/ard/utils/minio/MinioUtil.java b/src/main/java/com/ard/utils/minio/MinioUtil.java index c4e8480..00a1606 100644 --- a/src/main/java/com/ard/utils/minio/MinioUtil.java +++ b/src/main/java/com/ard/utils/minio/MinioUtil.java @@ -442,7 +442,7 @@ .stream(stream, size, -1) .contentType(contextType) .build(); - ObjectWriteResponse objectWriteResponse = minioClient.putObject(putObjectArgs); + minioClient.putObject(putObjectArgs); return true; } catch (Exception ex) { log.error("minio涓婁紶鏂囦欢(閫氳繃stream)寮傚父" + ex.getMessage()); diff --git a/src/main/java/com/ard/utils/sdk/hiksdk/common/GlobalVariable.java b/src/main/java/com/ard/utils/sdk/hiksdk/common/GlobalVariable.java index 2f27f06..2e96f9e 100644 --- a/src/main/java/com/ard/utils/sdk/hiksdk/common/GlobalVariable.java +++ b/src/main/java/com/ard/utils/sdk/hiksdk/common/GlobalVariable.java @@ -1,8 +1,10 @@ package com.ard.utils.sdk.hiksdk.common; import com.ard.alarm.camera.domain.ArdCameras; +import com.ard.utils.sdk.hiksdk.domain.ChannelInfo; import lombok.Data; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -14,6 +16,7 @@ **/ @Data public class GlobalVariable { + //淇濆瓨鐩告満淇℃伅key:(ip:port) value:camera瀵硅薄 public static Map<String, ArdCameras> cameraMap = new HashMap<>(); @@ -22,4 +25,7 @@ //淇濆瓨璁惧鐨勫竷闃蹭俊鎭痥ey:deviceId value:lAlarmHandle public static Map<String, Integer> alarmMap = new HashMap<>(); -} + + //淇濆瓨璁惧鐨勯�氶亾淇℃伅key:deviceId value:ChannelInfoList + public static Map<String, List<ChannelInfo>> deviceChanMap= new HashMap<>(); +} \ No newline at end of file diff --git a/src/main/java/com/ard/utils/sdk/hiksdk/domain/ChannelInfo.java b/src/main/java/com/ard/utils/sdk/hiksdk/domain/ChannelInfo.java new file mode 100644 index 0000000..f93df78 --- /dev/null +++ b/src/main/java/com/ard/utils/sdk/hiksdk/domain/ChannelInfo.java @@ -0,0 +1,16 @@ +package com.ard.utils.sdk.hiksdk.domain; + +import lombok.Data; + +/** + * @Description: + * @ClassName: ChannelInfo + * @Author: 鍒樿嫃涔� + * @Date: 2023骞�12鏈�07鏃�8:21:36 + **/ +@Data +public class ChannelInfo { + String ip; + Integer port; + String name; +} diff --git a/src/main/java/com/ard/utils/sdk/hiksdk/domain/SuperBrainEventInfo.java b/src/main/java/com/ard/utils/sdk/hiksdk/domain/SuperBrainEventInfo.java index 9dc4b31..d27b82f 100644 --- a/src/main/java/com/ard/utils/sdk/hiksdk/domain/SuperBrainEventInfo.java +++ b/src/main/java/com/ard/utils/sdk/hiksdk/domain/SuperBrainEventInfo.java @@ -44,6 +44,10 @@ */ Double latitude; /** + * 鍏宠仈瓒呰剳楂樺眰 + */ + Double altitude; + /** * 澶у浘url */ String picUrl; diff --git a/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Age.java b/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Age.java new file mode 100644 index 0000000..244fa86 --- /dev/null +++ b/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Age.java @@ -0,0 +1,12 @@ +package com.ard.utils.sdk.hiksdk.domain.isapi; +import lombok.Data; +/** + * Auto-generated: 2023-12-07 11:38:0 + * + * @author www.jsons.cn + * @website http://www.jsons.cn/json2java/ + */ +@Data +public class Age { + private String ageGroup; +} \ No newline at end of file diff --git a/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Extenddata.java b/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Extenddata.java new file mode 100644 index 0000000..0290b1e --- /dev/null +++ b/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Extenddata.java @@ -0,0 +1,16 @@ +package com.ard.utils.sdk.hiksdk.domain.isapi; +import lombok.Data; +/** + * Auto-generated: 2023-12-07 11:38:0 + * + * @author www.jsons.cn + * @website http://www.jsons.cn/json2java/ + */ +@Data +public class Extenddata { + + private int extendID; + private boolean enable; + private String name; + private String value; +} \ No newline at end of file diff --git a/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/FaceCapture.java b/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/FaceCapture.java new file mode 100644 index 0000000..1d75812 --- /dev/null +++ b/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/FaceCapture.java @@ -0,0 +1,20 @@ +package com.ard.utils.sdk.hiksdk.domain.isapi; +import java.util.List; +import lombok.Data; + +/** + * Auto-generated: 2023-12-07 11:38:0 + * + * @author www.jsons.cn + * @website http://www.jsons.cn/json2java/ + */ +@Data +public class FaceCapture { + + private Targetattrs targetAttrs; + private List<Faces> faces; + private String recordDataIndex; + private String targetId; + private List<Faceinfo> FaceInfo; + +} \ No newline at end of file diff --git a/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Faceappenddata.java b/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Faceappenddata.java new file mode 100644 index 0000000..112bee7 --- /dev/null +++ b/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Faceappenddata.java @@ -0,0 +1,24 @@ +package com.ard.utils.sdk.hiksdk.domain.isapi; + +import lombok.Data; + + +/** + * Auto-generated: 2023-12-07 11:38:0 + * + * @author www.jsons.cn + * @website http://www.jsons.cn/json2java/ + */ +@Data +public class Faceappenddata { + + private String name; + private String gender; + private String bornTime; + private String city; + private String certificateType; + private String certificateNumber; + private String phoneNumber; + private String cityName; + private String provinceName; +} \ No newline at end of file diff --git a/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Faceexpression.java b/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Faceexpression.java new file mode 100644 index 0000000..d709f4c --- /dev/null +++ b/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Faceexpression.java @@ -0,0 +1,19 @@ +package com.ard.utils.sdk.hiksdk.domain.isapi; + +/** + * Auto-generated: 2023-12-07 11:38:0 + * + * @author www.jsons.cn + * @website http://www.jsons.cn/json2java/ + */ +public class Faceexpression { + + private String value; + public void setValue(String value) { + this.value = value; + } + public String getValue() { + return value; + } + +} \ No newline at end of file diff --git a/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Faceinfo.java b/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Faceinfo.java new file mode 100644 index 0000000..3afd709 --- /dev/null +++ b/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Faceinfo.java @@ -0,0 +1,23 @@ +package com.ard.utils.sdk.hiksdk.domain.isapi; + +import java.util.List; + +import lombok.Data; + +/** + * Auto-generated: 2023-12-07 11:38:0 + * + * @author www.jsons.cn + * @website http://www.jsons.cn/json2java/ + */ +@Data +public class Faceinfo { + + private String FDID; + private String faceLibType; + private String PID; + private String face_picurl; + private Faceappenddata FaceAppendData; + private double similarity; + private List<Extenddata> extendData; +} \ No newline at end of file diff --git a/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Facerect.java b/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Facerect.java new file mode 100644 index 0000000..bf2ac1f --- /dev/null +++ b/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Facerect.java @@ -0,0 +1,18 @@ +package com.ard.utils.sdk.hiksdk.domain.isapi; + +import lombok.Data; + +/** + * Auto-generated: 2023-12-07 11:38:0 + * + * @author www.jsons.cn + * @website http://www.jsons.cn/json2java/ + */ +@Data +public class Facerect { + + private double height; + private double width; + private double x; + private double y; +} \ No newline at end of file diff --git a/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Faces.java b/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Faces.java new file mode 100644 index 0000000..ef78f7c --- /dev/null +++ b/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Faces.java @@ -0,0 +1,30 @@ +package com.ard.utils.sdk.hiksdk.domain.isapi; + +import lombok.Data; + + +/** + * Auto-generated: 2023-12-07 11:38:0 + * + * @author www.jsons.cn + * @website http://www.jsons.cn/json2java/ + */ +@Data +public class Faces { + + + private int faceId; + private Facerect faceRect; + private Age age; + private Gender gender; + private Glass glass; + private Smile smile; + private Mask mask; + + private String URL; + private int occurrences; + + private Faceexpression faceExpression; + + +} \ No newline at end of file diff --git a/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Gender.java b/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Gender.java new file mode 100644 index 0000000..c8f509b --- /dev/null +++ b/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Gender.java @@ -0,0 +1,19 @@ +package com.ard.utils.sdk.hiksdk.domain.isapi; + +/** + * Auto-generated: 2023-12-07 11:38:0 + * + * @author www.jsons.cn + * @website http://www.jsons.cn/json2java/ + */ +public class Gender { + + private String value; + public void setValue(String value) { + this.value = value; + } + public String getValue() { + return value; + } + +} \ No newline at end of file diff --git a/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Glass.java b/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Glass.java new file mode 100644 index 0000000..9923f93 --- /dev/null +++ b/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Glass.java @@ -0,0 +1,19 @@ +package com.ard.utils.sdk.hiksdk.domain.isapi; + +/** + * Auto-generated: 2023-12-07 11:38:0 + * + * @author www.jsons.cn + * @website http://www.jsons.cn/json2java/ + */ +public class Glass { + + private String value; + public void setValue(String value) { + this.value = value; + } + public String getValue() { + return value; + } + +} \ No newline at end of file diff --git a/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/IsapiAlarm.java b/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/IsapiAlarm.java new file mode 100644 index 0000000..dbf97d5 --- /dev/null +++ b/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/IsapiAlarm.java @@ -0,0 +1,42 @@ +package com.ard.utils.sdk.hiksdk.domain.isapi; +import java.util.Date; +import java.util.List; +import lombok.Data; + +/** + * Auto-generated: 2023-12-07 11:38:0 + * + * @author www.jsons.cn + * @website http://www.jsons.cn/json2java/ + */ +@Data +public class IsapiAlarm { + + private String ipAddress; + + private String ipv6Address; + + private int portNo; + private String protocol; + + private String macAddress; + + private int channelID; + + private Date dateTime; + + private int activePostCount; + + private String eventType; + + private String eventState; + + private String eventDescription; + + private String channelName; + + private List<FaceCapture> faceCapture; + + private String URLCertificationType; + +} \ No newline at end of file diff --git a/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Mask.java b/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Mask.java new file mode 100644 index 0000000..140282b --- /dev/null +++ b/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Mask.java @@ -0,0 +1,19 @@ +package com.ard.utils.sdk.hiksdk.domain.isapi; + +/** + * Auto-generated: 2023-12-07 11:38:0 + * + * @author www.jsons.cn + * @website http://www.jsons.cn/json2java/ + */ +public class Mask { + + private String value; + public void setValue(String value) { + this.value = value; + } + public String getValue() { + return value; + } + +} \ No newline at end of file diff --git a/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Smile.java b/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Smile.java new file mode 100644 index 0000000..c80e9d8 --- /dev/null +++ b/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Smile.java @@ -0,0 +1,19 @@ +package com.ard.utils.sdk.hiksdk.domain.isapi; + +/** + * Auto-generated: 2023-12-07 11:38:0 + * + * @author www.jsons.cn + * @website http://www.jsons.cn/json2java/ + */ +public class Smile { + + private String value; + public void setValue(String value) { + this.value = value; + } + public String getValue() { + return value; + } + +} \ No newline at end of file diff --git a/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Targetattrs.java b/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Targetattrs.java new file mode 100644 index 0000000..25f8a54 --- /dev/null +++ b/src/main/java/com/ard/utils/sdk/hiksdk/domain/isapi/Targetattrs.java @@ -0,0 +1,23 @@ +package com.ard.utils.sdk.hiksdk.domain.isapi; +import java.util.Date; +import lombok.Data; + +/** + * Auto-generated: 2023-12-07 11:38:0 + * + * @author www.jsons.cn + * @website http://www.jsons.cn/json2java/ + */ +@Data +public class Targetattrs { + + + private int deviceChannel; + + private String deviceName; + + private Date faceTime; + + private String bkgUrl; + +} \ No newline at end of file diff --git a/src/main/java/com/ard/utils/sdk/hiksdk/service/impl/FMSGCallBack.java b/src/main/java/com/ard/utils/sdk/hiksdk/service/impl/FMSGCallBack.java index a5a8575..8a9a3bd 100644 --- a/src/main/java/com/ard/utils/sdk/hiksdk/service/impl/FMSGCallBack.java +++ b/src/main/java/com/ard/utils/sdk/hiksdk/service/impl/FMSGCallBack.java @@ -1,6 +1,7 @@ package com.ard.utils.sdk.hiksdk.service.impl; import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; import com.ard.alarm.camera.domain.ArdCameras; import com.ard.alarm.camera.domain.CameraCmd; import com.ard.alarm.camera.service.impl.ArdCamerasServiceImpl; @@ -8,6 +9,8 @@ import com.ard.alarm.external.service.impl.ArdEquipExternalServiceImpl; import com.ard.utils.sdk.hiksdk.domain.*; import com.ard.utils.minio.MinioUtil; +import com.ard.utils.sdk.hiksdk.domain.isapi.FaceCapture; +import com.ard.utils.sdk.hiksdk.domain.isapi.IsapiAlarm; import com.ard.utils.util.ByteUtils; import com.ard.utils.sdk.hiksdk.common.GlobalVariable; import com.ard.utils.sdk.hiksdk.util.hikSdkUtil.HCNetSDK; @@ -22,6 +25,7 @@ import java.nio.ByteBuffer; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.List; import java.util.Optional; import static com.ard.utils.sdk.hiksdk.util.hikSdkUtil.HCNetSDK.*; @@ -49,7 +53,7 @@ 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).trim();//璁惧IP鍦板潃 - Integer wLinkPort = Integer.valueOf(pAlarmer.wLinkPort);//璁惧閫氳绔彛 + int wLinkPort = pAlarmer.wLinkPort;//璁惧閫氳绔彛 //閫氳繃ip鍜岀鍙f煡璇㈣澶� Optional<ArdCameras> foundCamera = findArdCameraByIpAndPort(sDeviceIP, wLinkPort); Optional<ArdEquipExternal> foundExternal = findArdEquipExternalByIpAndPort(sDeviceIP, wLinkPort); @@ -66,15 +70,13 @@ if (camera == null && ardEquipExternal == null) { return false; } - CameraEventInfo cameraEventInfo; - SuperBrainEventInfo superBrainEventInfo; String alarmName = "";//鎶ヨ鍚嶇О String alarmTime;//浜嬩欢鏃堕棿 String alarmType = "";//鎶ヨ绫诲瀷 String picUrl = "";//浜嬩欢鍥剧墖 String facePicUrl = "";//浜鸿劯鎶撴媿鍥剧墖 - String faceLibUrl = "";//浜鸿劯搴撳浘鐗� int dwPicDataLen;//鍥剧墖鏁版嵁闀垮害 + int chanNo = 0;//閫氶亾鍙� //lCommand鏄紶鐨勬姤璀︾被鍨� log.debug("銆�" + sDeviceIP + ":" + wLinkPort + "銆戞姤璀︿簨浠剁被鍨�:lCommand:" + Integer.toHexString(lCommand)); switch (lCommand) { @@ -89,7 +91,16 @@ switch (netDvrAlarminfoV30.dwAlarmType) { case 3: if (camera != null) { - cameraEventHandler(camera, "绉诲姩渚︽祴", "绉诲姩渚︽祴鎶ヨ", fmt.format(new Date()), ""); + for (byte b : netDvrAlarminfoV30.byChannel) { + if (b == 1) { + chanNo = b; + switch (camera.getGdType()) { + case "0": + cameraEventHandler(camera, chanNo, "绉诲姩渚︽祴", "绉诲姩渚︽祴鎶ヨ", fmt.format(new Date()), picUrl, ""); + break; + } + } + } } break; } @@ -107,7 +118,7 @@ strVcaAlarm.read(); Integer ruleID = Integer.valueOf(strVcaAlarm.struRuleInfo.byRuleID); alarmTime = DateUtils.parseTime(strVcaAlarm.dwAbsTime);//浜嬩欢鏃堕棿 - Integer channel = Integer.valueOf(strVcaAlarm.struDevInfo.byChannel);//閫氶亾 + chanNo = Integer.valueOf(strVcaAlarm.struDevInfo.byChannel);//閫氶亾 switch (strVcaAlarm.struRuleInfo.wEventTypeEx) { case 1: //region绌胯秺璀︽垝闈� (瓒婄晫渚︽祴) alarmType = "瓒婄晫渚︽祴鎶ヨ"; @@ -184,37 +195,23 @@ dwPicDataLen = strVcaAlarm.dwPicDataLen; int byPicTransType = strVcaAlarm.byPicTransType; if (dwPicDataLen > 0 && strVcaAlarm.pImage != null && byPicTransType == 0) { - //灏嗗瓧鑺傚啓鍏ユ枃浠� - long offset = 0; - ByteBuffer buffers = strVcaAlarm.pImage.getByteBuffer(offset, dwPicDataLen); - byte[] bytes = new byte[dwPicDataLen]; - buffers.rewind(); - buffers.get(bytes); - InputStream input = new ByteArrayInputStream(bytes); - try { - String bucketName = "pic"; - String objectName = "alarm/" + IdUtils.simpleUUID() + ".jpeg"; - boolean uploadObject = MinioUtil.uploadObject(bucketName, objectName, input, input.available(), "image/JPEG"); - if (uploadObject) { - picUrl = MinioUtil.getBucketObjectUrl(bucketName, objectName); - //log.debug("涓婁紶鏂囦欢鎴愬姛!" + picUrl); - } - } catch (Exception e) { - log.error("寮傚父琛屼负璇嗗埆淇℃伅鎶ヨ淇℃伅涓婃姤鍥剧墖淇濆瓨澶辫触" + e.getMessage()); - } + picUrl = saveBinPicToMinio(strVcaAlarm.pImage, dwPicDataLen); } if (camera != null) { - camera.setChannel(channel); - cameraEventHandler(camera, alarmName, alarmType, alarmTime, picUrl); - } - if (ardEquipExternal != null) { alarmName = "寮傚父琛屼负璇嗗埆"; - superBrainEventHandler(ardEquipExternal, channel, alarmName, alarmType, alarmTime, picUrl, ""); + switch (camera.getGdType()) { + case "0": + cameraEventHandler(camera, chanNo, alarmName, alarmType, alarmTime, picUrl, ""); + break; + case "3": + superBrainEventHandler(camera, chanNo, alarmName, alarmType, alarmTime, picUrl, ""); + break; + } } //endregion break; case COMM_UPLOAD_FACESNAP_RESULT: - log.debug("浜鸿劯鎶撴媿鎶ヨ淇℃伅(鏆備笉瑙f瀽)"); + log.debug("浜鸿劯鎶撴媿鎶ヨ淇℃伅涓婃姤"); //region 浜鸿劯鎶撴媿鎶ヨ淇℃伅 HCNetSDK.NET_VCA_FACESNAP_RESULT struFaceSnap = new HCNetSDK.NET_VCA_FACESNAP_RESULT(); struFaceSnap.write(); @@ -223,6 +220,7 @@ struFaceSnap.read(); alarmTime = DateUtils.parseTime(struFaceSnap.dwAbsTime); String facePicTyp; + chanNo = struFaceSnap.struDevInfo.byChannel; switch (struFaceSnap.byUploadEventDataType) { case 0: facePicTyp = "浜岃繘鍒舵暟鎹�"; @@ -235,63 +233,38 @@ break; } if (struFaceSnap.dwFacePicLen > 0 && struFaceSnap.pBuffer1 != null) { - //灏嗗瓧鑺傚啓鍏ユ枃浠� - long offset = 0; - ByteBuffer buffers = struFaceSnap.pBuffer1.getByteBuffer(offset, struFaceSnap.dwBackgroundPicLen); - byte[] bytes = new byte[struFaceSnap.dwBackgroundPicLen]; - buffers.rewind(); - buffers.get(bytes); - InputStream input = new ByteArrayInputStream(bytes); - try { - String bucketName = "pic"; - String objectName = "alarm/" + IdUtils.simpleUUID() + ".jpeg"; - boolean uploadObject = MinioUtil.uploadObject(bucketName, objectName, input, input.available(), "image/JPEG"); - if (uploadObject) { - facePicUrl = MinioUtil.getBucketObjectUrl(bucketName, objectName); - //log.debug("涓婁紶鏂囦欢鎴愬姛!" + url); - } - } catch (Exception e) { - log.error("浜鸿劯鎶撴媿鎶ヨ淇℃伅鍥剧墖淇濆瓨澶辫触" + e.getMessage()); - } + facePicUrl = saveBinPicToMinio(struFaceSnap.pBuffer1, struFaceSnap.dwFacePicLen); } if (struFaceSnap.dwBackgroundPicLen > 0 && struFaceSnap.pBuffer2 != null) { - //灏嗗瓧鑺傚啓鍏ユ枃浠� - long offset = 0; - ByteBuffer buffers = struFaceSnap.pBuffer2.getByteBuffer(offset, struFaceSnap.dwBackgroundPicLen); - byte[] bytes = new byte[struFaceSnap.dwBackgroundPicLen]; - buffers.rewind(); - buffers.get(bytes); - InputStream input = new ByteArrayInputStream(bytes); - try { - String bucketName = "pic"; - String objectName = "alarm/" + IdUtils.simpleUUID() + ".jpeg"; - boolean uploadObject = MinioUtil.uploadObject(bucketName, objectName, input, input.available(), "image/JPEG"); - if (uploadObject) { - picUrl = MinioUtil.getBucketObjectUrl(bucketName, objectName); - //log.debug("涓婁紶鏂囦欢鎴愬姛!" + url); - } - } catch (Exception e) { - log.error("浜鸿劯鎶撴媿鎶ヨ淇℃伅鍥剧墖淇濆瓨澶辫触" + e.getMessage()); - } + picUrl = saveBinPicToMinio(struFaceSnap.pBuffer2, struFaceSnap.dwBackgroundPicLen); } //log.debug("銆愪汉鑴告姄鎷嶆姤璀︿俊鎭��: alarmTime:" + alarmTime + " picUrl:" + picUrl + " facePicType:" + facePicTyp + " facePicUrl:" + facePicUrl); - FaceSnapEventInfo faceSnapEventInfo = new FaceSnapEventInfo(); - faceSnapEventInfo.setAlarmTime(alarmTime); - faceSnapEventInfo.setPicUrl(picUrl); - publishMqtt(faceSnapEventInfo, "superbrain"); + if (camera != null) { + alarmName = "浜鸿劯鎶撴媿妫�娴�"; + alarmType = "浜鸿劯鎶撴媿鎶ヨ"; + switch (camera.getGdType()) { + case "0": + cameraEventHandler(camera, chanNo, alarmName, alarmType, alarmTime, "", ""); + break; + case "3": + superBrainEventHandler(camera, chanNo, alarmName, alarmType, alarmTime, picUrl, facePicUrl); + break; + } + } //endregion break; case COMM_SNAP_MATCH_ALARM: - log.debug("浜鸿劯姣斿鎶ヨ淇℃伅"); + log.debug("浜鸿劯姣斿鎶ヨ淇℃伅涓婃姤"); //region 浜鸿劯姣斿鎶ヨ淇℃伅 HCNetSDK.NET_VCA_FACESNAP_MATCH_ALARM struFaceMatchAlarm = new HCNetSDK.NET_VCA_FACESNAP_MATCH_ALARM(); - struFaceMatchAlarm.byPicTransType = 0; struFaceMatchAlarm.write(); Pointer fmaInfo = struFaceMatchAlarm.getPointer(); fmaInfo.write(0, pAlarmInfo.getByteArray(0, struFaceMatchAlarm.size()), 0, struFaceMatchAlarm.size()); struFaceMatchAlarm.read(); alarmTime = DateUtils.parseTime(struFaceMatchAlarm.struSnapInfo.dwAbsTime);//鎶ヨ鏃堕棿 + chanNo = struFaceMatchAlarm.struSnapInfo.struDevInfo.byChannel; int byMatchPicNum = struFaceMatchAlarm.byMatchPicNum;//鍖归厤鍥剧墖鏁伴噺 + int picTransType = struFaceMatchAlarm.byPicTransType;////鍥剧墖鏁版嵁浼犺緭鏂瑰紡: 0-浜岃繘鍒讹紱1-url String contrastStatus = ""; switch (struFaceMatchAlarm.byContrastStatus) { case 1: @@ -315,76 +288,6 @@ default: BlockType = "鏈煡"; break; - } - //浜鸿劯姣斿鎶ヨ鍥剧墖淇濆瓨锛屽浘鐗囨牸寮忎簩杩涘埗 - if ((struFaceMatchAlarm.dwSnapPicLen > 0) && (struFaceMatchAlarm.byPicTransType == 0)) { - SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); - String newName = sf.format(new Date()); - FileOutputStream fout; - try { - String filename = "../pic/" + newName + "_pSnapPicBuffer" + ".jpg"; - fout = new FileOutputStream(filename); - //灏嗗瓧鑺傚啓鍏ユ枃浠� - long offset = 0; - ByteBuffer buffers = struFaceMatchAlarm.pSnapPicBuffer.getByteBuffer(offset, struFaceMatchAlarm.dwSnapPicLen); - byte[] bytes = new byte[struFaceMatchAlarm.dwSnapPicLen]; - buffers.rewind(); - buffers.get(bytes); - fout.write(bytes); - fout.close(); - } catch (FileNotFoundException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - if ((struFaceMatchAlarm.struSnapInfo.dwSnapFacePicLen > 0) && (struFaceMatchAlarm.byPicTransType == 0)) { - SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); - String newName = sf.format(new Date()); - FileOutputStream fout; - try { - String filename = "../pic/" + newName + "_struSnapInfo_pBuffer1" + ".jpg"; - fout = new FileOutputStream(filename); - //灏嗗瓧鑺傚啓鍏ユ枃浠� - long offset = 0; - ByteBuffer buffers = struFaceMatchAlarm.struSnapInfo.pBuffer1.getByteBuffer(offset, struFaceMatchAlarm.struSnapInfo.dwSnapFacePicLen); - byte[] bytes = new byte[struFaceMatchAlarm.struSnapInfo.dwSnapFacePicLen]; - buffers.rewind(); - buffers.get(bytes); - fout.write(bytes); - fout.close(); - } catch (FileNotFoundException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - if ((struFaceMatchAlarm.struBlockListInfo.dwBlockListPicLen > 0) && (struFaceMatchAlarm.byPicTransType == 0)) { - SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); - String newName = sf.format(new Date()); - FileOutputStream fout; - try { - String filename = "../pic/" + newName + "_fSimilarity_" + struFaceMatchAlarm.fSimilarity + "_struBlackListInfo_pBuffer1" + ".jpg"; - fout = new FileOutputStream(filename); - //灏嗗瓧鑺傚啓鍏ユ枃浠� - long offset = 0; - ByteBuffer buffers = struFaceMatchAlarm.struBlockListInfo.pBuffer1.getByteBuffer(offset, struFaceMatchAlarm.struBlockListInfo.dwBlockListPicLen); - byte[] bytes = new byte[struFaceMatchAlarm.struBlockListInfo.dwBlockListPicLen]; - buffers.rewind(); - buffers.get(bytes); - fout.write(bytes); - fout.close(); - } catch (FileNotFoundException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } } //浜鸿劯姣斿鎶ヨ鍥剧墖淇濆瓨锛屽浘鐗囨牸寮廢RL鏍煎紡 if ((struFaceMatchAlarm.dwSnapPicLen > 0) && (struFaceMatchAlarm.byPicTransType == 1)) { @@ -414,18 +317,35 @@ byte[] bytes = new byte[struFaceMatchAlarm.struBlockListInfo.dwBlockListPicLen]; buffers.rewind(); buffers.get(bytes); - faceLibUrl = new String(bytes); + String faceLibUrl = new String(bytes); //System.out.println("浜鸿劯搴撲汉鑴稿浘鐨刄RL锛�" + SnapPicUrl); } - if (ardEquipExternal != null) { + //浜鸿劯姣斿鎶ヨ鍥剧墖淇濆瓨锛屽浘鐗囨牸寮忎簩杩涘埗 + //if ((struFaceMatchAlarm.dwSnapPicLen > 0) && (struFaceMatchAlarm.byPicTransType == 0)) { + // picUrl = saveBinPicToMinio(struFaceMatchAlarm.pSnapPicBuffer, struFaceMatchAlarm.dwSnapPicLen); + //} + //if ((struFaceMatchAlarm.struSnapInfo.dwSnapFacePicLen > 0) && (struFaceMatchAlarm.byPicTransType == 0)) { + // facePicUrl = saveBinPicToMinio(struFaceMatchAlarm.struSnapInfo.pBuffer1, struFaceMatchAlarm.struSnapInfo.dwSnapFacePicLen); + //} + //if ((struFaceMatchAlarm.struBlockListInfo.dwBlockListPicLen > 0) && (struFaceMatchAlarm.byPicTransType == 0)) { + // //String faceBlockPicUrl = saveBinPicToMinio(struFaceMatchAlarm.struBlockListInfo.pBuffer1, struFaceMatchAlarm.struBlockListInfo.dwBlockListPicLen); + //} + if (camera != null) { alarmName = "浜鸿劯姣斿妫�娴�"; - alarmType = contrastStatus + "[" + BlockType + "]"; - superBrainEventHandler(ardEquipExternal, 0, alarmName, alarmType, alarmTime, picUrl, facePicUrl); + alarmType = BlockType + "[" + contrastStatus + "]"; + switch (camera.getGdType()) { + case "0": + cameraEventHandler(camera, chanNo, alarmName, alarmType, alarmTime, "", ""); + break; + case "3": + superBrainEventHandler(camera, chanNo, alarmName, alarmType, alarmTime, picUrl, facePicUrl); + break; + } } //endregion break; case COMM_UPLOAD_AIOP_VIDEO: - log.debug("AI寮�鏀惧钩鍙版帴鍏ヨ棰戞娴嬫姤璀︿笂浼�"); + log.debug("AI瑙嗛妫�娴嬫姤璀︿笂浼�"); //region AI寮�鏀惧钩鍙版帴鍏ヨ棰戞娴� HCNetSDK.NET_AIOP_VIDEO_HEAD struAIOPVideo = new HCNetSDK.NET_AIOP_VIDEO_HEAD(); struAIOPVideo.write(); @@ -441,9 +361,9 @@ String.format("%02d", struAIOPVideo.struTime.wDay) + " " + String.format("%02d", struAIOPVideo.struTime.wHour) + ":" + String.format("%02d", struAIOPVideo.struTime.wMinute) + ":" + - String.format("%02d", struAIOPVideo.struTime.wSecond) + "." + - String.format("%03d", struAIOPVideo.struTime.wMilliSec); - alarmName = "AI寮�鏀惧钩鍙版帴鍏ヨ棰戞娴�"; + String.format("%02d", struAIOPVideo.struTime.wSecond); + // + "." + String.format("%03d", struAIOPVideo.struTime.wMilliSec); + chanNo = struAIOPVideo.dwChannel; switch (szMPID) { case "H930_MODEL_SPD": alarmType = "鎶界儫鎵撶數璇�"; @@ -451,80 +371,79 @@ } //鍥剧墖鏁版嵁淇濆瓨 if (struAIOPVideo.dwPictureSize > 0) { - //灏嗗瓧鑺傚啓鍏ユ枃浠� - long offset = 0; - ByteBuffer buffers = struAIOPVideo.pBufferPicture.getByteBuffer(offset, struAIOPVideo.dwPictureSize); - byte[] bytes = new byte[struAIOPVideo.dwPictureSize]; - buffers.rewind(); - buffers.get(bytes); - InputStream input = new ByteArrayInputStream(bytes); - try { - String bucketName = "pic"; - String objectName = "alarm/" + IdUtils.simpleUUID() + ".jpeg"; - boolean uploadObject = MinioUtil.uploadObject(bucketName, objectName, input, input.available(), "image/JPEG"); - if (uploadObject) { - picUrl = MinioUtil.getBucketObjectUrl(bucketName, objectName); - //log.debug("涓婁紶鏂囦欢鎴愬姛!" + picUrl); - } - } catch (Exception e) { - log.error("AI寮�鏀惧钩鍙版帴鍏ヨ棰戞娴嬫姤璀︿笂浼犱笂鎶ュ浘鐗囦繚瀛樺け璐�" + e.getMessage()); - } + picUrl = saveBinPicToMinio(struAIOPVideo.pBufferPicture, struAIOPVideo.dwPictureSize); } - if (ardEquipExternal != null) { - superBrainEventHandler(ardEquipExternal, struAIOPVideo.dwChannel, alarmName, alarmType, alarmTime, picUrl, ""); + if (camera != null) { + alarmName = "AI瑙嗛妫�娴�"; + switch (camera.getGdType()) { + case "3": + superBrainEventHandler(camera, chanNo, alarmName, alarmType, alarmTime, picUrl, facePicUrl); + break; + } } //endregion break; - case COMM_ISAPI_ALARM: - log.debug("瀹夊叏甯芥娴嬫姤璀︿俊鎭笂鎶�"); - //region 瀹夊叏甯芥娴嬫姤璀︿俊鎭� + case COMM_ISAPI_ALARM://ISAPI鍗忚鎶ヨ淇℃伅 + log.debug("ISAPI鍗忚鎶ヨ淇℃伅涓婃姤"); + //region ISAPI鍗忚鎶ヨ淇℃伅 HCNetSDK.NET_DVR_ALARM_ISAPI_INFO struEventISAPI = new HCNetSDK.NET_DVR_ALARM_ISAPI_INFO(); struEventISAPI.write(); Pointer pEventISAPI = struEventISAPI.getPointer(); pEventISAPI.write(0, pAlarmInfo.getByteArray(0, struEventISAPI.size()), 0, struEventISAPI.size()); struEventISAPI.read(); - int dwAlarmDataLen = struEventISAPI.dwAlarmDataLen; - int byDataType = struEventISAPI.byDataType; - int byPicturesNumber = struEventISAPI.byPicturesNumber; - //澶勭悊瀹夊叏甯芥娴嬩笂浼犵殑鐓х墖鏁版嵁 - Pointer pPicPackData = struEventISAPI.pPicPackData; - if (pPicPackData != null) { - HCNetSDK.NET_DVR_ALARM_ISAPI_PICDATA struPicData = new HCNetSDK.NET_DVR_ALARM_ISAPI_PICDATA(); - struPicData.write(); - if (struPicData.size() > 0) { - Pointer pPicData = struPicData.getPointer(); - pPicData.write(0, pPicPackData.getByteArray(0, struPicData.size()), 0, struPicData.size()); - struPicData.read(); - int dwPicLen = struPicData.dwPicLen; - pPicData = struPicData.pPicData; - if (dwPicLen > 0 && pPicData != null) { - //灏嗗瓧鑺傚啓鍏ユ枃浠� - long offset = 0; - ByteBuffer buffers = pPicData.getByteBuffer(offset, dwPicLen); - byte[] bytes = new byte[dwPicLen]; - buffers.rewind(); - buffers.get(bytes); - InputStream input = new ByteArrayInputStream(bytes); - try { - String bucketName = "pic"; - String objectName = "alarm/" + IdUtils.simpleUUID() + ".jpeg"; - boolean uploadObject = MinioUtil.uploadObject(bucketName, objectName, input, input.available(), "image/JPEG"); - if (uploadObject) { - picUrl = MinioUtil.getBucketObjectUrl(bucketName, objectName); - //log.debug("涓婁紶鏂囦欢鎴愬姛!" + picUrl); + int dwAlarmDataLen = struEventISAPI.dwAlarmDataLen;// 鎶ヨ鏁版嵁闀垮害 + int byDataType = struEventISAPI.byDataType;// 0-invalid,1-xml,2-json + int byPicturesNumber = struEventISAPI.byPicturesNumber;// 鍥剧墖鏁伴噺 + if (dwAlarmDataLen > 0) {//鎶ヨ鏁版嵁鎵撳嵃 + HCNetSDK.BYTE_ARRAY m_strISAPIData = new HCNetSDK.BYTE_ARRAY(struEventISAPI.dwAlarmDataLen); + m_strISAPIData.write(); + Pointer pPlateInfo = m_strISAPIData.getPointer(); + pPlateInfo.write(0, struEventISAPI.pAlarmData.getByteArray(0, m_strISAPIData.size()), 0, m_strISAPIData.size()); + m_strISAPIData.read(); + String json = new String(m_strISAPIData.byValue).trim(); + // log.debug(new String(m_strISAPIData.byValue).trim() + "\n"); + //瑙f瀽JSON鏁版嵁 + if (byDataType == 2) { + IsapiAlarm isapiAlarm = JSONObject.parseObject(json, IsapiAlarm.class); + alarmName = "ISAPI鍗忚淇℃伅妫�娴�"; + switch (isapiAlarm.getEventType()) { + //case "HFPD": + //chanNo = isapiAlarm.getChannelID(); + //alarmType = "楂橀浜哄憳浜嬩欢鎶ヨ"; + //picUrl = isapiAlarm.getFaceCapture().get(0).getTargetAttrs().getBkgUrl(); + //facePicUrl = isapiAlarm.getFaceCapture().get(0).getFaces().get(0).getURL(); + // break; + case "safetyHelmetDetection": + chanNo = isapiAlarm.getChannelID(); + alarmType = "瀹夊叏甯戒簨浠舵姤璀�"; + alarmTime = fmt.format(isapiAlarm.getDateTime()); + //鍥剧墖淇濆瓨 + for (int i = 0; i < struEventISAPI.byPicturesNumber; i++) { + HCNetSDK.NET_DVR_ALARM_ISAPI_PICDATA struPicData = new HCNetSDK.NET_DVR_ALARM_ISAPI_PICDATA(); + struPicData.write(); + Pointer pPicData = struPicData.getPointer(); + pPicData.write(0, struEventISAPI.pPicPackData.getByteArray(i * struPicData.size(), struPicData.size()), 0, struPicData.size()); + struPicData.read(); + switch (i) { + case 0: + picUrl = saveBinPicToMinio(struPicData.pPicData, struPicData.dwPicLen); + break; + case 1: + facePicUrl = saveBinPicToMinio(struPicData.pPicData, struPicData.dwPicLen); + break; + } } - } catch (Exception e) { - log.error("寮傚父琛屼负璇嗗埆淇℃伅鎶ヨ淇℃伅涓婃姤鍥剧墖淇濆瓨澶辫触" + e.getMessage()); - } + if (camera != null) { + switch (camera.getGdType()) { + case "3": + superBrainEventHandler(camera, chanNo, alarmName, alarmType, alarmTime, picUrl, facePicUrl); + break; + } + } + break; } } - } - if (ardEquipExternal != null) { - alarmName = "瀹夊叏甯芥娴�"; - alarmType = "瀹夊叏甯戒簨浠舵姤璀�"; - alarmTime = fmt.format(new Date()); - superBrainEventHandler(ardEquipExternal, 0, alarmName, alarmType, alarmTime, picUrl, ""); } //endregion break; @@ -643,24 +562,7 @@ //浜嬩欢鍥剧墖澶勭悊 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) { - picUrl = MinioUtil.getBucketObjectUrl(bucketName, objectName); - //log.debug("涓婁紶鏂囦欢鎴愬姛!" + url); - } - } catch (Exception e) { - log.error("鍥剧墖淇濆瓨澶辫触"); - } + picUrl = saveBinPicToMinio(strACSInfo.pPicData, strACSInfo.dwPicDataLen); } HCNetSDK.NET_DVR_ACS_EVENT_INFO struAcsEventInfo = strACSInfo.struAcsEventInfo; int byType = struAcsEventInfo.byType; @@ -725,36 +627,23 @@ Pointer pFireDecAlarm = struFireDecAlarm.getPointer(); pFireDecAlarm.write(0, pAlarmInfo.getByteArray(0, struFireDecAlarm.size()), 0, struFireDecAlarm.size()); struFireDecAlarm.read(); - String sFireDecAlarmInfo = "缁濆鏃堕棿锛�" + struFireDecAlarm.dwAbsTime + ",鎶ヨ瀛愮被鍨嬶細" + struFireDecAlarm.byAlarmSubType + ",鐏偣鏈�楂樻俯搴� :" + - struFireDecAlarm.wFireMaxTemperature + ",鐏偣鐩爣璺濈锛�" + struFireDecAlarm.wTargetDistance; - System.out.println(sFireDecAlarmInfo); + //String sFireDecAlarmInfo = "缁濆鏃堕棿锛�" + struFireDecAlarm.dwAbsTime + ",鎶ヨ瀛愮被鍨嬶細" + struFireDecAlarm.byAlarmSubType + ",鐏偣鏈�楂樻俯搴� :" + + // struFireDecAlarm.wFireMaxTemperature + ",鐏偣鐩爣璺濈锛�" + struFireDecAlarm.wTargetDistance; + //System.out.println(sFireDecAlarmInfo); //鍥剧墖淇濆瓨 if ((struFireDecAlarm.dwPicDataLen > 0) && (struFireDecAlarm.byPicTransType == 0)) { - long offset = 0; - ByteBuffer buffers = struFireDecAlarm.pBuffer.getByteBuffer(offset, struFireDecAlarm.dwPicDataLen); - byte[] bytes = new byte[struFireDecAlarm.dwPicDataLen]; - buffers.rewind(); - buffers.get(bytes); - InputStream input = new ByteArrayInputStream(bytes); - try { - String bucketName = "pic"; - String objectName = "alarm/" + IdUtils.simpleUUID() + ".jpeg"; - boolean uploadObject = MinioUtil.uploadObject(bucketName, objectName, input, input.available(), "image/JPEG"); - if (uploadObject) { - picUrl = MinioUtil.getBucketObjectUrl(bucketName, objectName); - //log.debug("涓婁紶鏂囦欢鎴愬姛!" + picUrl); - } - } catch (Exception e) { - log.error("鐏偣妫�娴嬩簨浠舵姤璀︿笂鎶ョ儹鎴愬儚鍥剧墖淇濆瓨澶辫触" + e.getMessage()); - } - + picUrl = saveBinPicToMinio(struFireDecAlarm.pBuffer, struFireDecAlarm.dwPicDataLen); } - if (ardEquipExternal != null) { + chanNo = struFireDecAlarm.dwVisibleChannel; + alarmTime = DateUtils.parseTime(struFireDecAlarm.dwAbsTime);//鎶ヨ鏃堕棿 + if (camera != null) { alarmName = "鐏劙妫�娴嬩俊鎭笂鎶�"; alarmType = "鐏劙妫�娴嬩簨浠舵姤璀�"; - int dwVisibleChannel = struFireDecAlarm.dwVisibleChannel; - alarmTime = DateUtils.parseTime(struFireDecAlarm.dwAbsTime);//鎶ヨ鏃堕棿 - superBrainEventHandler(ardEquipExternal, dwVisibleChannel, alarmName, alarmType, alarmTime, picUrl, ""); + switch (camera.getGdType()) { + case "3": + superBrainEventHandler(camera, chanNo, alarmName, alarmType, alarmTime, picUrl, facePicUrl); + break; + } } //endregion break; @@ -769,14 +658,12 @@ return true; } - /** * 鐩告満浜嬩欢澶勭悊 * 鍒樿嫃涔� * 2023/12/5 12:56:47 */ - public void cameraEventHandler(ArdCameras camera, String alarmName, String alarmType, String alarmTime, String picUrl) { - + public void cameraEventHandler(ArdCameras camera, Integer chanNo, String alarmName, String alarmType, String alarmTime, String picUrl, String faceUrl) { CameraEventInfo cameraEventInfo = new CameraEventInfo(); cameraEventInfo.setAlarmName(alarmName); cameraEventInfo.setAlarmTime(alarmTime); @@ -785,7 +672,7 @@ cameraEventInfo.setCameraIp(camera.getIp()); cameraEventInfo.setCameraPort(camera.getPort()); cameraEventInfo.setCameraType(camera.getGdType()); - cameraEventInfo.setCameraChannel(camera.getChannel()); + cameraEventInfo.setCameraChannel(chanNo); cameraEventInfo.setLongitude(camera.getLongitude()); cameraEventInfo.setLatitude(camera.getLatitude()); cameraEventInfo.setAlarmType(alarmType); @@ -803,20 +690,33 @@ * 鍒樿嫃涔� * 2023/12/5 12:56:47 */ - public void superBrainEventHandler(ArdEquipExternal superBrainDevice, Integer chanNo, String alarmName, String alarmType, String alarmTime, String picUrl, String faceUrl) { + public void superBrainEventHandler(ArdCameras camera, Integer chanNo, String alarmName, String alarmType, String alarmTime, String picUrl, String faceUrl) { SuperBrainEventInfo superBrainEventInfo = new SuperBrainEventInfo(); superBrainEventInfo.setAlarmName(alarmName); superBrainEventInfo.setAlarmType(alarmType); superBrainEventInfo.setAlarmTime(alarmTime); - superBrainEventInfo.setDeviceId(superBrainDevice.getId()); - superBrainEventInfo.setDeviceName(superBrainDevice.getName()); + List<ChannelInfo> channelInfoList = GlobalVariable.deviceChanMap.get(camera.getId());//鑾峰彇瓒呰剳鐨勯�氶亾闆嗗悎 + if (channelInfoList.size() > 0) { + if (chanNo > 0) { + ChannelInfo channelInfo = channelInfoList.get(chanNo - 1);//鏍规嵁閫氶亾鍙疯幏鍙栭�氶亾淇℃伅 + if (channelInfo != null) { + Optional<ArdCameras> foundCamera = findArdCameraByIpAndPort(channelInfo.getIp(), channelInfo.getPort()); + if (foundCamera.isPresent()) { + camera = foundCamera.get(); + superBrainEventInfo.setDeviceId(camera.getId()); + superBrainEventInfo.setDeviceName(camera.getName()); + superBrainEventInfo.setLongitude(camera.getLongitude()); + superBrainEventInfo.setLatitude(camera.getLatitude()); + superBrainEventInfo.setAltitude(camera.getAltitude()); + } + } + } + } superBrainEventInfo.setChanNo(chanNo); - superBrainEventInfo.setLongitude(superBrainDevice.getLongitude()); - superBrainEventInfo.setLatitude(superBrainDevice.getLatitude()); superBrainEventInfo.setPicUrl(picUrl); superBrainEventInfo.setFaceUrl(faceUrl); - log.debug("澶勭悊閫氳秴鑴戜簨浠舵姤璀�:銆怤ame銆�" + alarmName + "銆怲ype銆�" + alarmType + "銆怲ime銆�" + alarmTime + "銆怐evice銆�" + superBrainDevice.getName() + "銆怳rl銆�" + picUrl + "銆恌aceUrl銆�" + faceUrl ); + log.debug("澶勭悊瓒呰剳浜嬩欢鎶ヨ:銆怤ame銆�" + alarmName + "銆怲ype銆�" + alarmType + "銆怲ime銆�" + alarmTime + "銆怐evice銆�" + camera.getName() + "銆怳rl銆�" + picUrl + "銆恌aceUrl銆�" + faceUrl); publishMqtt(superBrainEventInfo, "superBrain"); } @@ -930,4 +830,28 @@ return wYear + "-" + byMonth + "-" + byDay + " " + byHour + ":" + byMinute + ":" + bySecond; } + //浜岃繘鍒跺浘鐗囨帴鏀跺啓鍏inio杩斿洖url + private String saveBinPicToMinio(Pointer picData, int picDataLen) { + String picUrl = ""; + try { + //灏嗗瓧鑺傚啓鍏ユ枃浠� + long offset = 0; + ByteBuffer buffers = picData.getByteBuffer(offset, picDataLen); + byte[] bytes = new byte[picDataLen]; + 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, picDataLen, "image/JPEG"); + if (uploadObject) { + picUrl = MinioUtil.getBucketObjectUrl(bucketName, objectName); + //log.debug("涓婁紶鏂囦欢鎴愬姛!" + picUrl); + } + } catch (Exception e) { + log.error("鍥剧墖淇濆瓨澶辫触:" + e.getMessage()); + } + return picUrl; + } + } diff --git a/src/main/java/com/ard/utils/sdk/hiksdk/service/impl/HikClientUtil.java b/src/main/java/com/ard/utils/sdk/hiksdk/service/impl/HikClientUtil.java index f98eddc..ad6ca50 100644 --- a/src/main/java/com/ard/utils/sdk/hiksdk/service/impl/HikClientUtil.java +++ b/src/main/java/com/ard/utils/sdk/hiksdk/service/impl/HikClientUtil.java @@ -4,10 +4,12 @@ import com.ard.alarm.camera.domain.CameraCmd; import com.ard.alarm.external.domain.ArdEquipExternal; import com.ard.utils.minio.MinioUtil; +import com.ard.utils.sdk.hiksdk.domain.ChannelInfo; import com.ard.utils.util.ByteUtils; import com.ard.utils.sdk.hiksdk.common.GlobalVariable; import com.ard.utils.sdk.hiksdk.domain.DeviceInfo; import com.ard.utils.sdk.hiksdk.util.hikSdkUtil.HCNetSDK; +import com.sun.jna.NativeLong; import com.sun.jna.Platform; import com.sun.jna.Pointer; import com.sun.jna.ptr.IntByReference; @@ -16,7 +18,6 @@ import java.io.*; import java.nio.ByteBuffer; import java.util.*; - /** * @ClassName: hikClientServiceImpl @@ -32,58 +33,11 @@ public static HCNetSDK.FMSGCallBack_V31 fMSFCallBack_V31; /** - * @鎻忚堪 娉ㄥ唽鐧诲綍 鍙敮鎸佸悓姝ョ櫥闄嗭紝涓斿畼鏂逛笉寤鸿鐩存帴鍦ㄦ鎺ュ彛涓嬪啓鑰楁椂鎿嶄綔 - * @鍙傛暟 [dvrLogin] - * @杩斿洖鍊� java.lang.Integer - * @鍒涘缓浜� 鍒樿嫃涔� - * @鍒涘缓鏃堕棿 2023/1/17 16:12 - * @淇敼浜哄拰鍏跺畠淇℃伅 - */ - public ArdCameras login1(ArdCameras camera) { - // 鍒濆鍖� - if (!hCNetSDK.NET_DVR_Init()) { - log.error("SDK鍒濆鍖栧け璐�"); - } - - //鎵撳嵃娴峰悍sdk鏃ュ織 - if (Platform.isWindows()) { - String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator; - hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true); - } else { - hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true); - } - String m_sDeviceIP = camera.getIp(); - String m_sUsername = camera.getUsername(); - String m_sPassword = camera.getPassword(); - short m_sPort = camera.getPort().shortValue(); - //璁剧疆杩炴帴鏃堕棿涓庨噸杩炴椂闂� - hCNetSDK.NET_DVR_SetConnectTime(2000, 1); - hCNetSDK.NET_DVR_SetReconnect(100000, true); - - //璁惧淇℃伅, 杈撳嚭鍙傛暟 - HCNetSDK.NET_DVR_DEVICEINFO_V30 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V30(); - int lUserID = hCNetSDK.NET_DVR_Login_V30(m_sDeviceIP, m_sPort, m_sUsername, m_sPassword, m_strDeviceInfo); - if (lUserID < 0) { - //閲婃斁SDK璧勬簮 - hCNetSDK.NET_DVR_Cleanup(); - camera.setLoginId(-1); - } - if (GlobalVariable.loginMap.containsKey(camera.getId())) { - GlobalVariable.loginMap.remove(camera.getId()); - } - GlobalVariable.loginMap.put(camera.getId(), lUserID); - - camera.setLoginId(lUserID); - camera.setChannel((int) m_strDeviceInfo.byStartChan); - return camera; - } - - /** * @鎻忚堪 娉ㄥ唽鐧诲綍 闆嗘垚浜嶯ET_DVR_Login_V30锛屾敮鎸佸悓姝ュ拰寮傛鐧诲綍 * @鍒涘缓浜� 鍒樿嫃涔� * @鍒涘缓鏃堕棿 2023/1/17 16:12 */ - public static void login(DeviceInfo deviceInfo) { + public static int login(DeviceInfo deviceInfo) { // 鍒濆鍖� if (!hCNetSDK.NET_DVR_Init()) { log.error("SDK鍒濆鍖栧け璐�"); @@ -94,6 +48,7 @@ struNET_DVR_LOCAL_GENERAL_CFG.write(); Pointer pStrNET_DVR_LOCAL_GENERAL_CFG = struNET_DVR_LOCAL_GENERAL_CFG.getPointer(); hCNetSDK.NET_DVR_SetSDKLocalCfg(17, pStrNET_DVR_LOCAL_GENERAL_CFG); + //鎵撳嵃娴峰悍sdk鏃ュ織 if (Platform.isWindows()) { String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator; @@ -127,11 +82,12 @@ //寮傛鐧诲綍鍥炶皟 m_strLoginInfo.cbLoginResult = new LoginResultCallBack(deviceInfo); m_strLoginInfo.write(); - int i = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo); - if (i < 0) { + int loginId = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo); + if (loginId < 0) { int errorCode = hCNetSDK.NET_DVR_GetLastError(); log.error("鐧诲綍寮傚父锛�" + errorCode); } + return loginId; } /** @@ -174,12 +130,13 @@ info.setPort(camera.getPort()); info.setUsername(camera.getUsername()); info.setPassword(camera.getPassword()); + info.setDeviceType(camera.getGdType()); login(info); String key = camera.getIp() + ":" + camera.getPort(); GlobalVariable.cameraMap.put(key, camera); } } catch (Exception ex) { - log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage()); + log.error("鐧诲綍鐩告満寮傚父锛�" + ex.getMessage()); } } @@ -203,147 +160,10 @@ GlobalVariable.cameraMap.remove(key); } } catch (Exception ex) { - log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage()); + log.error("娉ㄩ攢鐩告満寮傚父锛�" + ex.getMessage()); } } - /** - * @鎻忚堪 鐧诲綍鎵�鏈夋姤璀︿富鏈� - * @鍒涘缓浜� 鍒樿嫃涔� - * @鍒涘缓鏃堕棿 2023/2/3 10:10 - */ - public static void loginAllAlarmHost(List<ArdEquipExternal> ardEquipExternals) { - try { - for (ArdEquipExternal alarmHost : ardEquipExternals) { - Thread.sleep(100); - DeviceInfo info = new DeviceInfo(); - info.setDeviceId(alarmHost.getId()); - info.setIp(alarmHost.getIp()); - info.setPort(alarmHost.getPort()); - info.setUsername(alarmHost.getUsername()); - info.setPassword(alarmHost.getPassword()); - login(info); -// String key=alarmHost.getIp()+":"+alarmHost.getPort(); -// GlobalVariable.alarmHostMap.put(key, alarmHost); - } - } catch (Exception ex) { - log.error("鐧诲綍鎵�鏈夋姤璀︿富鏈哄紓甯革細" + ex.getMessage()); - } - } - - /** - * @鎻忚堪 鐧诲嚭鎵�鏈夋姤璀︿富鏈� - * @鍒涘缓浜� 鍒樿嫃涔� - * @鍒涘缓鏃堕棿 2023/2/3 10:10 - */ - public static void logoutAllAlarmHost(List<ArdEquipExternal> ardEquipExternals) { - try { - for (ArdEquipExternal alarmHost : ardEquipExternals) { - Thread.sleep(100); - DeviceInfo info = new DeviceInfo(); - info.setDeviceId(alarmHost.getId()); - info.setIp(alarmHost.getIp()); - info.setPort(alarmHost.getPort()); - info.setUsername(alarmHost.getUsername()); - info.setPassword(alarmHost.getPassword()); - logout(info); -// String key=alarmHost.getIp()+":"+alarmHost.getPort(); -// GlobalVariable.alarmHostMap.remove(key); - } - } catch (Exception ex) { - log.error("鐧诲嚭鎵�鏈夋姤璀︿富鏈哄紓甯革細" + ex.getMessage()); - } - } - - /** - * @鎻忚堪 鐧诲綍鎵�鏈夐棬绂佷富鏈� - * @鍒涘缓浜� 鍒樿嫃涔� - * @鍒涘缓鏃堕棿 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); - } - } catch (Exception ex) { - log.error("鐧诲綍鎵�鏈夐棬绂佷富鏈哄紓甯革細" + ex.getMessage()); - } - } - - /** - * @鎻忚堪 鐧诲嚭鎵�鏈夐棬绂佷富鏈� - * @鍒涘缓浜� 鍒樿嫃涔� - * @鍒涘缓鏃堕棿 2023/2/3 10:10 - */ - public static void logoutAllAccessControlHost(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()); - logout(info); - } - } catch (Exception ex) { - log.error("鐧诲嚭鎵�鏈夐棬绂佷富鏈哄紓甯革細" + ex.getMessage()); - } - } - - /** - * @鎻忚堪 鐧诲綍鎵�鏈夎秴鑴� - * @鍒涘缓浜� 鍒樿嫃涔� - * @鍒涘缓鏃堕棿 2023/2/3 10:10 - */ - public static void loginAllSuperBrainHost(List<ArdEquipExternal> ardEquipExternals) { - try { - for (ArdEquipExternal superBrainHost : ardEquipExternals) { - Thread.sleep(100); - DeviceInfo info = new DeviceInfo(); - info.setDeviceId(superBrainHost.getId()); - info.setIp(superBrainHost.getIp()); - info.setPort(superBrainHost.getPort()); - info.setUsername(superBrainHost.getUsername()); - info.setPassword(superBrainHost.getPassword()); - login(info); - } - } catch (Exception ex) { - log.error("鐧诲綍鎵�鏈夎秴鑴戝紓甯革細" + ex.getMessage()); - } - } - - /** - * @鎻忚堪 鐧诲嚭鎵�鏈夎秴鑴� - * @鍒涘缓浜� 鍒樿嫃涔� - * @鍒涘缓鏃堕棿 2023/2/3 10:10 - */ - public static void logoutAllSuperBrainHost(List<ArdEquipExternal> ardEquipExternals) { - try { - for (ArdEquipExternal superBrainHost : ardEquipExternals) { - Thread.sleep(100); - DeviceInfo info = new DeviceInfo(); - info.setDeviceId(superBrainHost.getId()); - info.setIp(superBrainHost.getIp()); - info.setPort(superBrainHost.getPort()); - info.setUsername(superBrainHost.getUsername()); - info.setPassword(superBrainHost.getPassword()); - logout(info); -// String key=accessControlHost.getIp()+":"+accessControlHost.getPort(); -// GlobalVariable.accessHostMap.remove(key); - } - } catch (Exception ex) { - log.error("鐧诲嚭鎵�鏈夎秴鑴戝紓甯革細" + ex.getMessage()); - } - } /** * @鎻忚堪 鐧诲綍鎵�鏈夊鑱旇澶� * @鍒涘缓浜� 鍒樿嫃涔� @@ -365,6 +185,7 @@ log.error("鐧诲綍鎵�鏈夊鑱旇澶囧紓甯革細" + ex.getMessage()); } } + /** * @鎻忚堪 鐧诲嚭鎵�鏈夊鑱旇澶� * @鍒涘缓浜� 鍒樿嫃涔� @@ -383,10 +204,9 @@ logout(info); } } catch (Exception ex) { - log.error("鐧诲嚭鎵�鏈夎秴鑴戝紓甯革細" + ex.getMessage()); + log.error("鐧诲嚭鎵�鏈夊鑱旇澶囧紓甯革細" + ex.getMessage()); } } - /** @@ -420,6 +240,11 @@ m_strAlarmInfo.byDeployType = 1; //浜鸿劯鎶ヨ淇℃伅绫诲瀷锛�1- 浜鸿劯渚︽祴鎶ヨ 0- 浜鸿劯鎶撴媿鎶ヨ m_strAlarmInfo.byFaceAlarmDetection = 0; + //鎶ヨ鍥剧墖鏁版嵁绫诲瀷锛屾寜浣嶈〃绀猴細 + //bit0- 浜鸿劯鎶撴媿(鎶ヨ绫诲瀷涓篊OMM_UPLOAD_FACESNAP_RESULT)涓浘鐗囨暟鎹笂浼犵被鍨嬶細0- 浜岃繘鍒朵紶杈擄紝1- URL浼犺緭 + //bit1- EVENT_JSON(鎶ヨ绫诲瀷涓篊OMM_VCA_ALARM)涓浘鐗囨暟鎹笂浼犵被鍨嬶細0- 浜岃繘鍒朵紶杈擄紝1- URL浼犺緭 + //bit2- 浜鸿劯姣斿(鎶ヨ绫诲瀷涓篊OMM_SNAP_MATCH_ALARM)涓浘鐗囨暟鎹笂浼犵被鍨嬶細0- 浜岃繘鍒朵紶杈擄紝1- URL浼犺緭 + m_strAlarmInfo.byAlarmTypeURL = 0; m_strAlarmInfo.write(); // 甯冮槻鎴愬姛锛岃繑鍥炲竷闃叉垚鍔熺殑鏁版嵁浼犺緭閫氶亾鍙� lAlarmHandle = hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID, m_strAlarmInfo); @@ -535,4 +360,67 @@ return name; } + //鑾峰彇IP閫氶亾 + public static void getIPChannelInfo(String deviceId, int iUserID) { + try { + GlobalVariable.deviceChanMap.remove(deviceId); + List<ChannelInfo> channelInfoList = new ArrayList<>(); + int chanNum = 64; + IntByReference ibrBytesReturned = new IntByReference(0);//鑾峰彇IP鎺ュ叆閰嶇疆鍙傛暟 + HCNetSDK.NET_DVR_IPPARACFG_V40 m_strIpparaCfg = new HCNetSDK.NET_DVR_IPPARACFG_V40(); + m_strIpparaCfg.write(); + //lpIpParaConfig 鎺ユ敹鏁版嵁鐨勭紦鍐叉寚閽� + Pointer lpIpParaConfig = m_strIpparaCfg.getPointer(); + boolean bRet = hCNetSDK.NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_IPPARACFG_V40, 0, lpIpParaConfig, m_strIpparaCfg.size(), ibrBytesReturned); + m_strIpparaCfg.read(); + //log.debug("璧峰鏁板瓧閫氶亾鍙凤細" + m_strIpparaCfg.dwStartDChan); + for (int iChannum = 0; iChannum < chanNum; iChannum++) { + int channum = iChannum + m_strIpparaCfg.dwStartDChan; + HCNetSDK.NET_DVR_PICCFG_V40 strPicCfg = new HCNetSDK.NET_DVR_PICCFG_V40(); + strPicCfg.dwSize = strPicCfg.size(); + strPicCfg.write(); + Pointer pStrPicCfg = strPicCfg.getPointer(); + NativeLong lChannel = new NativeLong(channum); + IntByReference pInt = new IntByReference(0); + boolean b_GetPicCfg = hCNetSDK.NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_PICCFG_V40, lChannel.intValue(), + pStrPicCfg, strPicCfg.size(), pInt); +// if (b_GetPicCfg == false) { +// System.out.println("鑾峰彇鍥惧儚鍙傛暟澶辫触锛岄敊璇爜锛�" + hCNetSDK.NET_DVR_GetLastError()); +// } + strPicCfg.read(); + m_strIpparaCfg.struStreamMode[iChannum].read(); + if (m_strIpparaCfg.struStreamMode[iChannum].byGetStreamType == 0) { + m_strIpparaCfg.struStreamMode[iChannum].uGetStream.setType(HCNetSDK.NET_DVR_IPCHANINFO.class); + m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.read(); + + //log.debug("--------------绗�" + (iChannum + 1) + "涓�氶亾------------------"); + int channel = m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.byIPID + m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.byIPIDHigh * 256; + //log.debug("channel:" + channel); + if (channel > 0) { + //log.debug("name锛� " + new String(strPicCfg.sChanName, "GBK").trim()); + //log.debug("ip锛� " + new String(m_strIpparaCfg.struIPDevInfo[channel - 1].struIP.sIpV4).trim()); + //log.debug("port锛� " + m_strIpparaCfg.struIPDevInfo[channel - 1].wDVRPort); + String name = new String(strPicCfg.sChanName, "GBK").trim(); + String ip = new String(m_strIpparaCfg.struIPDevInfo[channel - 1].struIP.sIpV4).trim(); + int port = m_strIpparaCfg.struIPDevInfo[channel - 1].wDVRPort; + ChannelInfo channelInfo = new ChannelInfo(); + channelInfo.setIp(ip); + channelInfo.setPort(port); + channelInfo.setName(name); + channelInfoList.add(channelInfo); + } + if (m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.byEnable == 1) { + //log.debug("IP閫氶亾" + channum + "鍦ㄧ嚎"); + } else { + //log.debug("IP閫氶亾" + channum + "涓嶅湪绾�"); + } + } + } + if (channelInfoList.size() > 0) { + GlobalVariable.deviceChanMap.put(deviceId, channelInfoList); + } + } catch (Exception ex) { + log.error("鑾峰彇IP閫氶亾寮傚父锛�" + ex.getMessage()); + } + } } \ No newline at end of file diff --git a/src/main/java/com/ard/utils/sdk/hiksdk/service/impl/LoginResultCallBack.java b/src/main/java/com/ard/utils/sdk/hiksdk/service/impl/LoginResultCallBack.java index 5b5ee1b..697f83d 100644 --- a/src/main/java/com/ard/utils/sdk/hiksdk/service/impl/LoginResultCallBack.java +++ b/src/main/java/com/ard/utils/sdk/hiksdk/service/impl/LoginResultCallBack.java @@ -28,6 +28,11 @@ if (dwResult == 1) { GlobalVariable.loginMap.put(deviceInfo.getDeviceId(), lUserID); log.debug("璁惧銆�" + deviceIpPort + "銆戠櫥褰曟垚鍔�"); + //鑾峰彇閫氶亾 + if(deviceInfo.getDeviceType().equals("3")) { + //浠呰秴鑴戣澶囪幏鍙栭�氶亾 + HikClientUtil.getIPChannelInfo(deviceInfo.getDeviceId(), lUserID); + } // 璁剧疆鎶ヨ鍥炶皟鍑芥暟锛屽缓绔嬫姤璀︿笂浼犻�氶亾锛堝惎鐢ㄥ竷闃诧級 int lAlarmHandle = HikClientUtil.setupAlarmChan(deviceIpPort, lUserID, -1); if (lAlarmHandle != -1) { diff --git a/src/main/java/com/ard/utils/sdk/hiksdk/util/hikSdkUtil/HCNetSDK.java b/src/main/java/com/ard/utils/sdk/hiksdk/util/hikSdkUtil/HCNetSDK.java index 91dfaf0..469e5fa 100644 --- a/src/main/java/com/ard/utils/sdk/hiksdk/util/hikSdkUtil/HCNetSDK.java +++ b/src/main/java/com/ard/utils/sdk/hiksdk/util/hikSdkUtil/HCNetSDK.java @@ -2257,7 +2257,7 @@ public byte byChannel; /* 閫氶亾鍙� */ public byte[] byres = new byte[33]; /* 淇濈暀 */ - + public int byIPIDHigh; } public static class NET_DVR_IPPARACFG extends HIKSDKStructure {/* IP鎺ュ叆閰嶇疆缁撴瀯 */ -- Gitblit v1.9.3