From 30f70fd08d363232dc30c89302a14eeb8598056e Mon Sep 17 00:00:00 2001 From: lxj <15683799673@163.com> Date: Sun, 13 Jul 2025 17:43:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A2=AF=E6=8E=A7=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 9 ++--- .../runner/HikDeviceApplicationRunner.java | 17 ++++++++-- .../sis/sdk/hik/calback/HikAlarmCallBack.java | 34 +++++++++++++++++++ 3 files changed, 50 insertions(+), 10 deletions(-) diff --git a/pom.xml b/pom.xml index 360d154..5331daa 100644 --- a/pom.xml +++ b/pom.xml @@ -91,15 +91,12 @@ dev - 47.109.37.87:8848 - 47.109.37.87:4560 - - + 192.168.24.101:8848 + 192.168.24.101:4560 DEFAULT_GROUP DEFAULT_GROUP nacos nacos - @@ -107,8 +104,6 @@ prod prod - - 47.109.37.87:8848 47.109.37.87:4560 DEFAULT_GROUP diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/runner/HikDeviceApplicationRunner.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/runner/HikDeviceApplicationRunner.java index 268f874..e0a303b 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/runner/HikDeviceApplicationRunner.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/runner/HikDeviceApplicationRunner.java @@ -13,6 +13,7 @@ import org.springframework.boot.ApplicationRunner; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; +import java.util.Arrays; import java.util.List; @Slf4j @@ -37,18 +38,28 @@ public class HikDeviceApplicationRunner implements ApplicationRunner { @Async public void hikElevatorInfoLogin() { - List sisElevatorInfoVos = elevatorInfoService.queryAll(); + /*List sisElevatorInfoVos = elevatorInfoService.queryAll(); if (CollUtil.isNotEmpty(sisElevatorInfoVos)) { sisElevatorInfoVos.forEach(item -> { // 执行设备登录操作 HikApiService.getInstance().login(item.getControlIp(), item.getControlPort().shortValue(), item.getControlAccount(), item.getControlPwd()); - // todo 更新设备心跳信息 }); + }*/ + String ip = "192.168.24.188"; + short port = 8000; + String account = "admin"; + String pwd = "qweasd123"; + HikApiService.getInstance().login(ip, port, account, pwd); + List arrs = Arrays.asList(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2); + for (int i = 0; i < arrs.size(); i++) { + HikApiService.getInstance().controlGateway(ip, (i + 1), arrs.get(i)); } + } + @Async public void hikNetCameraLogin() { - String ip = "192.168.24.17"; + String ip = "192.168.24.19"; short port = 8000; String account = "admin"; String pwd = "xzf13579"; diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/hik/calback/HikAlarmCallBack.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/hik/calback/HikAlarmCallBack.java index fedfff0..ae40039 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/hik/calback/HikAlarmCallBack.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/hik/calback/HikAlarmCallBack.java @@ -2,22 +2,30 @@ package org.dromara.sis.sdk.hik.calback; import cn.hutool.core.codec.Base64Encoder; import com.sun.jna.Pointer; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.sis.sdk.hik.HCNetSDK; +import org.dromara.sis.sdk.hik.HikApiService; +import org.dromara.sis.sdk.huawei.HuaWeiBoxApi; import org.springframework.stereotype.Component; import java.nio.ByteBuffer; +import java.util.Arrays; +import java.util.List; @Slf4j @Component +@RequiredArgsConstructor public class HikAlarmCallBack implements HCNetSDK.FMSGCallBack_V31 { + private final HuaWeiBoxApi huaWeiBoxApi; private static final int COMM_UPLOAD_FACESNAP_RESULT = 0x1112; @Override public boolean invoke(int lCommand, HCNetSDK.NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser) { if (lCommand == COMM_UPLOAD_FACESNAP_RESULT) {// 读取抓拍人脸数据 + long s = System.currentTimeMillis(); log.info("hik 抓拍信息上报完成,lCommand={}", lCommand); HCNetSDK.NET_VCA_FACESNAP_RESULT result = new HCNetSDK.NET_VCA_FACESNAP_RESULT(); result.write(); @@ -29,6 +37,7 @@ public class HikAlarmCallBack implements HCNetSDK.FMSGCallBack_V31 { byte[] smallImg = new byte[result.dwFacePicLen]; buffers.rewind(); buffers.get(smallImg); + String dir = ""; // 读取人脸大图 // ByteBuffer buffers1 = result.pBuffer2.getByteBuffer(0, result.dwBackgroundPicLen); // byte[] bigImg = new byte[result.dwBackgroundPicLen]; @@ -36,6 +45,31 @@ public class HikAlarmCallBack implements HCNetSDK.FMSGCallBack_V31 { // buffers1.get(bigImg); // todo 进行人脸比对 String smallImgBase64Str = Base64Encoder.encode(smallImg); + + long s1 = System.currentTimeMillis(); + Long person = huaWeiBoxApi.findPerson(smallImgBase64Str); + log.info("人脸比对执行完成,耗时:{}", System.currentTimeMillis() - s1); + if (person == null) { + log.info("未命中人脸数据,暂不处理。"); + log.info("权限下发执行完成,耗时:{}", System.currentTimeMillis() - s); + return true; + } + log.info("人脸比对完成,personId={}", person); +// List arrs = Arrays.asList(2, 2, 2, 3, 3, 3 ,3, 3, 3, 3, 3, 3, 3, 3, 3, 3); + List arrs = Arrays.asList(3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2); + for (int i = 0; i < arrs.size(); i++) { + HikApiService.getInstance().controlGateway("192.168.24.188", (i + 1), arrs.get(i)); + } + log.info("权限下发执行完成,耗时:{}", System.currentTimeMillis() - s); + try { + Thread.sleep(10000L); + List ass = Arrays.asList(3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3); + for (int i = 0; i < arrs.size(); i++) { + HikApiService.getInstance().controlGateway("192.168.24.188", (i + 1), arrs.get(i)); + } + } catch (InterruptedException e) { + throw new RuntimeException(e); + } } else { log.info("未知报警类型,lCommand={}", lCommand); }