feat(property): 访客登记同步 E8 平台门禁

This commit is contained in:
2025-08-18 16:54:10 +08:00
parent be5d00040d
commit 8849b1d889
10 changed files with 188 additions and 25 deletions

View File

@@ -70,7 +70,6 @@ public class RemoteSisAuthServiceImpl implements RemoteSisAuthService {
return sisAuthRecordService.deleteByPersonIds(ids, e8Ids);
}
/**
* 查询人员授权信息
*

View File

@@ -0,0 +1,60 @@
package org.dromara.sis.dubbo;
import cn.hutool.core.lang.Assert;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.apache.dubbo.config.annotation.DubboService;
import org.dromara.resource.api.RemoteFileService;
import org.dromara.sis.api.RemoteVisitorService;
import org.dromara.sis.api.domain.RemoteVisitor;
import org.dromara.sis.sdk.e8.E8PlatformApi;
import org.dromara.sis.sdk.e8.domain.visitors.req.VisitorAddReq;
import org.dromara.sis.sdk.e8.domain.visitors.res.VisitorAddRes;
/**
* @author lsm
* @apiNote RemoteVisitorServiceImpl
* @since 2025/8/18
*/
@Slf4j
@DubboService
@RequiredArgsConstructor
public class RemoteVisitorServiceImpl implements RemoteVisitorService {
private final E8PlatformApi e8PlatformApi;
@DubboReference
private RemoteFileService fileService;
/**
* 访客信息写入E8平台
*
* @param visitor 访客信息
* @return 访客ID
*/
@Override
public Long syncE8PlatVisitor(RemoteVisitor visitor) {
try {
byte[] imgByte = fileService.downloadToByteArray(Long.parseLong(visitor.getVisitorFaceImg()));
Assert.notNull(imgByte,"下载访客照片失败");
String imgUrl = e8PlatformApi.uploadFace(imgByte);
Assert.notNull(imgUrl, "e8平台上传访客照片失败");
VisitorAddReq req = new VisitorAddReq();
req.setVisitorName(visitor.getVisitorName());
req.setMobilePhone(visitor.getMobilePhone());
req.setIntervieweeMobile(visitor.getIntervieweeMobile());
req.setVisitorStartTime(visitor.getVisitorStartTime());
req.setVistorEndTime(visitor.getVistorEndTime());
req.setVisitorFaceImg(imgUrl);
VisitorAddRes res = e8PlatformApi.addVisitor(req);
Assert.notNull(res, "e8平台新增访客登记失败");
return res.getId();
} catch (Exception e) {
log.info(e.getMessage());
return null;
}
}
}

View File

@@ -14,10 +14,7 @@ import java.io.IOException;
* @since 2025/8/8
*/
@Slf4j
@Component
public class ElevatorTcpRunner implements ApplicationRunner {
@Override
public class ElevatorTcpRunner{
public void run(ApplicationArguments args) {
// 获取单例实例
ElevatorControlTcpUtil elevatorHelper = ElevatorControlTcpUtil.getInstance();

View File

@@ -35,6 +35,11 @@ public class VisitorAddReq {
*/
private String vistorEndTime;
/**
* 访客人脸照
*/
private String visitorFaceImg;
/**
* 访客登记类型 0:登记 1:邀请 2:预约
*/

View File

@@ -280,11 +280,8 @@ public class HikAlarmCallBack implements HCNetSDK.FMSGCallBack_V31 {
buffers1.get(bigImg);
//设备ip
String sAlarmInfo = new String(pAlarmer.sDeviceIP).trim();
SisDeviceManage device = sisDeviceManageService.queryByDeviceIp(sAlarmInfo);
if (!device.getIsComparison()) {
log.info("海康设备告警信息上传,设备={}, 人脸图片大小={} 背景图片大小={}", sAlarmInfo, smallImg.length, bigImg.length);
zeroSensationPassageService.pass(sAlarmInfo, smallImg, bigImg);
}
log.info("海康设备告警信息上传,设备={}, 人脸图片大小={} 背景图片大小={}", sAlarmInfo, smallImg.length, bigImg.length);
zeroSensationPassageService.pass(sAlarmInfo, smallImg, bigImg);
}
/**
@@ -320,7 +317,6 @@ public class HikAlarmCallBack implements HCNetSDK.FMSGCallBack_V31 {
log.info("比对结果:{},相似度:{},人员:{}id:{}", compareResults, similarity, name, pid);
log.info("处理前置人脸比对结果,耗时:{}", interval.interval());
zeroSensationPassageService.handleEleOut(new String(pAlarmer.sDeviceIP).trim());
}

View File

@@ -65,7 +65,7 @@ public class ZeroSensationPassageServiceImpl implements IZeroSensationPassageSer
if (result.getCode() != 200) {
log.info("华为盒子比对失败,msg={}", result.getMessage());
// 产生告警数据
alarmEventsService.createAlarmRecord(deviceIp, 1, 1, "人脸比对失败", smallImg, bigImg);
// alarmEventsService.createAlarmRecord(deviceIp, 1, 1, "人脸比对失败", smallImg, bigImg);
return;
}
log.info("人脸比对执行完成,耗时:{}ms", interval.intervalMs());
@@ -81,14 +81,14 @@ public class ZeroSensationPassageServiceImpl implements IZeroSensationPassageSer
} else {
if (Objects.equals(authRecord.getRosterType(), RosterTypeEnum.BLACK_LIST.getCode())) {
log.info("人员[{}]在黑名单中,暂不处理。", person);
alarmEventsService.createAlarmRecord(deviceIp, 3, 1, "黑名单人员入内", smallImg, bigImg);
// alarmEventsService.createAlarmRecord(deviceIp, 3, 1, "黑名单人员入内", smallImg, bigImg);
return;
}
}
Date now = new Date();
if (DateUtil.compare(now, authRecord.getEndDate()) > 0) {
alarmEventsService.createAlarmRecord(deviceIp, 3, 1, "人员授权信息已过期", smallImg, bigImg);
// alarmEventsService.createAlarmRecord(deviceIp, 3, 1, "人员授权信息已过期", smallImg, bigImg);
log.info("当前人脸已过期,暂不处理。");
return;
}
@@ -119,9 +119,9 @@ public class ZeroSensationPassageServiceImpl implements IZeroSensationPassageSer
if (Objects.equals(item.getControlType(), ControlTypeEnum.ACCESS_CONTROL.getCode())) { // 门禁
handleAc(item.getBindId());
} else if (item.getControlType().equals(ControlTypeEnum.ELEVATOR_OUT_CONTROL.getCode())) { // 电梯外面面板权限
handleEle(item.getBindId(), r.getAuthGroupId(), ControlTypeEnum.ELEVATOR_OUT_CONTROL.getCode(), item.getDeviceFloorId());
// handleEle(item.getBindId(), r.getAuthGroupId(), ControlTypeEnum.ELEVATOR_OUT_CONTROL.getCode(), item.getDeviceFloorId());
} else if (item.getControlType().equals(ControlTypeEnum.ELEVATOR_IN_CONTROL.getCode())) { // 电梯里面的面板
handleEle(item.getBindId(), r.getAuthGroupId(), ControlTypeEnum.ELEVATOR_IN_CONTROL.getCode(), 0L);
// handleEle(item.getBindId(), r.getAuthGroupId(), ControlTypeEnum.ELEVATOR_IN_CONTROL.getCode(), 0L);
} else {
log.info("设备绑定了未知的控制类型[{}],不处理", item.getControlType());
}
@@ -166,7 +166,7 @@ public class ZeroSensationPassageServiceImpl implements IZeroSensationPassageSer
* 生成告警事件
*/
public void createAlarmRecord(String deviceIp, Integer level, Integer type, String msg, byte[] smallImg, byte[] bigImg) {
alarmEventsService.createAlarmRecord(deviceIp, level, type, msg, smallImg, bigImg);
// alarmEventsService.createAlarmRecord(deviceIp, level, type, msg, smallImg, bigImg);
}
/**