梯控对接

This commit is contained in:
lxj 2025-07-13 17:43:02 +08:00
parent 3e81ca335f
commit 30f70fd08d
3 changed files with 50 additions and 10 deletions

View File

@ -91,15 +91,12 @@
<properties>
<!-- 环境标识,需要与配置文件的名称相对应 -->
<profiles.active>dev</profiles.active>
<nacos.server>47.109.37.87:8848</nacos.server>
<logstash.address>47.109.37.87:4560</logstash.address>
<!-- <nacos.server>192.168.110.207:8848</nacos.server>-->
<!-- <logstash.address>192.168.110.207:4560</logstash.address>-->
<nacos.server>192.168.24.101:8848</nacos.server>
<logstash.address>192.168.24.101:4560</logstash.address>
<nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>
<nacos.config.group>DEFAULT_GROUP</nacos.config.group>
<nacos.username>nacos</nacos.username>
<nacos.password>nacos</nacos.password>
<!-- <logstash.address>127.0.0.1:4560</logstash.address>-->
</properties>
</profile>
@ -107,8 +104,6 @@
<id>prod</id>
<properties>
<profiles.active>prod</profiles.active>
<!-- <nacos.server>127.0.0.1:8848</nacos.server>-->
<!-- <logstash.address>127.0.0.1:4560</logstash.address>-->
<nacos.server>47.109.37.87:8848</nacos.server>
<logstash.address>47.109.37.87:4560</logstash.address>
<nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>

View File

@ -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<SisElevatorInfoVo> sisElevatorInfoVos = elevatorInfoService.queryAll();
/*List<SisElevatorInfoVo> 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<Integer> 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";

View File

@ -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<Integer> arrs = Arrays.asList(2, 2, 2, 3, 3, 3 ,3, 3, 3, 3, 3, 3, 3, 3, 3, 3);
List<Integer> 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<Integer> 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);
}