feat(property): 访客登记同步 E8 平台门禁
This commit is contained in:
@@ -70,7 +70,6 @@ public class RemoteSisAuthServiceImpl implements RemoteSisAuthService {
|
||||
return sisAuthRecordService.deleteByPersonIds(ids, e8Ids);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询人员授权信息
|
||||
*
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
@@ -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();
|
||||
|
@@ -35,6 +35,11 @@ public class VisitorAddReq {
|
||||
*/
|
||||
private String vistorEndTime;
|
||||
|
||||
/**
|
||||
* 访客人脸照
|
||||
*/
|
||||
private String visitorFaceImg;
|
||||
|
||||
/**
|
||||
* 访客登记类型 0:登记 1:邀请 2:预约
|
||||
*/
|
||||
|
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user