梯控对接

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> <properties>
<!-- 环境标识,需要与配置文件的名称相对应 --> <!-- 环境标识,需要与配置文件的名称相对应 -->
<profiles.active>dev</profiles.active> <profiles.active>dev</profiles.active>
<nacos.server>47.109.37.87:8848</nacos.server> <nacos.server>192.168.24.101:8848</nacos.server>
<logstash.address>47.109.37.87:4560</logstash.address> <logstash.address>192.168.24.101:4560</logstash.address>
<!-- <nacos.server>192.168.110.207:8848</nacos.server>-->
<!-- <logstash.address>192.168.110.207:4560</logstash.address>-->
<nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group> <nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>
<nacos.config.group>DEFAULT_GROUP</nacos.config.group> <nacos.config.group>DEFAULT_GROUP</nacos.config.group>
<nacos.username>nacos</nacos.username> <nacos.username>nacos</nacos.username>
<nacos.password>nacos</nacos.password> <nacos.password>nacos</nacos.password>
<!-- <logstash.address>127.0.0.1:4560</logstash.address>-->
</properties> </properties>
</profile> </profile>
@ -107,8 +104,6 @@
<id>prod</id> <id>prod</id>
<properties> <properties>
<profiles.active>prod</profiles.active> <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> <nacos.server>47.109.37.87:8848</nacos.server>
<logstash.address>47.109.37.87:4560</logstash.address> <logstash.address>47.109.37.87:4560</logstash.address>
<nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group> <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.scheduling.annotation.Async;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List; import java.util.List;
@Slf4j @Slf4j
@ -37,18 +38,28 @@ public class HikDeviceApplicationRunner implements ApplicationRunner {
@Async @Async
public void hikElevatorInfoLogin() { public void hikElevatorInfoLogin() {
List<SisElevatorInfoVo> sisElevatorInfoVos = elevatorInfoService.queryAll(); /*List<SisElevatorInfoVo> sisElevatorInfoVos = elevatorInfoService.queryAll();
if (CollUtil.isNotEmpty(sisElevatorInfoVos)) { if (CollUtil.isNotEmpty(sisElevatorInfoVos)) {
sisElevatorInfoVos.forEach(item -> { sisElevatorInfoVos.forEach(item -> {
// 执行设备登录操作 // 执行设备登录操作
HikApiService.getInstance().login(item.getControlIp(), item.getControlPort().shortValue(), item.getControlAccount(), item.getControlPwd()); 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() { public void hikNetCameraLogin() {
String ip = "192.168.24.17"; String ip = "192.168.24.19";
short port = 8000; short port = 8000;
String account = "admin"; String account = "admin";
String pwd = "xzf13579"; String pwd = "xzf13579";

View File

@ -2,22 +2,30 @@ package org.dromara.sis.sdk.hik.calback;
import cn.hutool.core.codec.Base64Encoder; import cn.hutool.core.codec.Base64Encoder;
import com.sun.jna.Pointer; import com.sun.jna.Pointer;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.sis.sdk.hik.HCNetSDK; 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 org.springframework.stereotype.Component;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.util.Arrays;
import java.util.List;
@Slf4j @Slf4j
@Component @Component
@RequiredArgsConstructor
public class HikAlarmCallBack implements HCNetSDK.FMSGCallBack_V31 { public class HikAlarmCallBack implements HCNetSDK.FMSGCallBack_V31 {
private final HuaWeiBoxApi huaWeiBoxApi;
private static final int COMM_UPLOAD_FACESNAP_RESULT = 0x1112; private static final int COMM_UPLOAD_FACESNAP_RESULT = 0x1112;
@Override @Override
public boolean invoke(int lCommand, HCNetSDK.NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser) { public boolean invoke(int lCommand, HCNetSDK.NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser) {
if (lCommand == COMM_UPLOAD_FACESNAP_RESULT) {// 读取抓拍人脸数据 if (lCommand == COMM_UPLOAD_FACESNAP_RESULT) {// 读取抓拍人脸数据
long s = System.currentTimeMillis();
log.info("hik 抓拍信息上报完成,lCommand={}", lCommand); log.info("hik 抓拍信息上报完成,lCommand={}", lCommand);
HCNetSDK.NET_VCA_FACESNAP_RESULT result = new HCNetSDK.NET_VCA_FACESNAP_RESULT(); HCNetSDK.NET_VCA_FACESNAP_RESULT result = new HCNetSDK.NET_VCA_FACESNAP_RESULT();
result.write(); result.write();
@ -29,6 +37,7 @@ public class HikAlarmCallBack implements HCNetSDK.FMSGCallBack_V31 {
byte[] smallImg = new byte[result.dwFacePicLen]; byte[] smallImg = new byte[result.dwFacePicLen];
buffers.rewind(); buffers.rewind();
buffers.get(smallImg); buffers.get(smallImg);
String dir = "";
// 读取人脸大图 // 读取人脸大图
// ByteBuffer buffers1 = result.pBuffer2.getByteBuffer(0, result.dwBackgroundPicLen); // ByteBuffer buffers1 = result.pBuffer2.getByteBuffer(0, result.dwBackgroundPicLen);
// byte[] bigImg = new byte[result.dwBackgroundPicLen]; // byte[] bigImg = new byte[result.dwBackgroundPicLen];
@ -36,6 +45,31 @@ public class HikAlarmCallBack implements HCNetSDK.FMSGCallBack_V31 {
// buffers1.get(bigImg); // buffers1.get(bigImg);
// todo 进行人脸比对 // todo 进行人脸比对
String smallImgBase64Str = Base64Encoder.encode(smallImg); 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 { } else {
log.info("未知报警类型,lCommand={}", lCommand); log.info("未知报警类型,lCommand={}", lCommand);
} }