refactor(sis): 1
This commit is contained in:
parent
5d078e8c8c
commit
ed35a45142
@ -60,7 +60,7 @@ public class CleanLiftAuthRocketConsumer implements RocketMQListener<MessageExt>
|
||||
// }
|
||||
// }
|
||||
// todo 暂时应急处理,后续调整业务逻辑
|
||||
for (int i = 1; i < 20; i++) {
|
||||
for (int i = 1; i < 5; i++) {
|
||||
HikApiService.getInstance().controlGateway("192.168.24.150", i, 3);
|
||||
}
|
||||
log.info("梯控清除权限完成");
|
||||
|
@ -71,7 +71,7 @@ public class SisPersonLibImg extends TenantEntity {
|
||||
/**
|
||||
* 远程库图像ID
|
||||
*/
|
||||
private Long remoteImgId;
|
||||
private Long remoteHWId;
|
||||
|
||||
/**
|
||||
* 入驻员工id
|
||||
|
@ -79,7 +79,7 @@ public class SisPersonLibImgBo extends BaseEntity {
|
||||
/**
|
||||
* 远程库图像ID
|
||||
*/
|
||||
private Long remoteImgId;
|
||||
private Long remoteHWId;
|
||||
|
||||
/**
|
||||
* 入驻员工id
|
||||
|
@ -83,7 +83,7 @@ public class SisPersonLibImgVo implements Serializable {
|
||||
* 远程库图像ID
|
||||
*/
|
||||
@ExcelProperty(value = "远程库图像ID")
|
||||
private Long remoteImgId;
|
||||
private Long remoteHWId;
|
||||
|
||||
/**
|
||||
* 人像库id
|
||||
|
@ -93,7 +93,7 @@ public class RemoteSisAuthServiceImpl implements RemoteSisAuthService {
|
||||
@Override
|
||||
public Long queryHuaweiBoxIdByImgMd5(String imgMd5) {
|
||||
SisPersonLibImgVo vo = sisPersonLibImgService.queryByImgMd5(imgMd5);
|
||||
return vo != null ? vo.getRemoteImgId() : null;
|
||||
return vo != null ? vo.getRemoteHWId() : null;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -108,6 +108,11 @@ public class RemoteSisAuthServiceImpl implements RemoteSisAuthService {
|
||||
Long pId;
|
||||
try {
|
||||
SisPersonLibImgVo vo = sisPersonLibImgService.queryByPersonId(person.getId());
|
||||
if (vo == null) {
|
||||
log.info("本地人像信息不存在::{}----{}", person.getName(), person.getId());
|
||||
return null;
|
||||
}
|
||||
|
||||
AddHWPersonReq req = new AddHWPersonReq();
|
||||
req.setIndex(CodePrefixConstants.PERSON_LIB_IMAGE_CODE_PREFIX + IdUtil.getSnowflakeNextIdStr());
|
||||
req.setName(person.getName());
|
||||
@ -121,7 +126,7 @@ public class RemoteSisAuthServiceImpl implements RemoteSisAuthService {
|
||||
|
||||
pId = huaWeiBoxApi.addPerson(List.of(req));
|
||||
} catch (Exception e) {
|
||||
log.error("同步华为盒子失败:{}----{}", person.getName(), person.getId());
|
||||
log.info("同步华为盒子失败:{}----{}", person.getName(), person.getId());
|
||||
return null;
|
||||
}
|
||||
return pId;
|
||||
|
@ -1,5 +1,6 @@
|
||||
package org.dromara.sis.sdk.hik.calback;
|
||||
|
||||
import cn.hutool.core.date.TimeInterval;
|
||||
import com.sun.jna.Pointer;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -242,12 +243,13 @@ public class HikAlarmCallBack implements HCNetSDK.FMSGCallBack_V31 {
|
||||
}
|
||||
// 人脸比对结果上报
|
||||
case COMM_SNAP_MATCH_ALARM: {
|
||||
TimeInterval interval = new TimeInterval();
|
||||
HCNetSDK.NET_VCA_FACESNAP_MATCH_ALARM strFaceSnapMatch = new HCNetSDK.NET_VCA_FACESNAP_MATCH_ALARM();
|
||||
strFaceSnapMatch.write();
|
||||
Pointer pFaceSnapMatch = strFaceSnapMatch.getPointer();
|
||||
pFaceSnapMatch.write(0, pAlarmInfo.getByteArray(0, strFaceSnapMatch.size()), 0, strFaceSnapMatch.size());
|
||||
strFaceSnapMatch.read();
|
||||
handleFaceComparison(strFaceSnapMatch, pAlarmer);
|
||||
handleFaceComparison(strFaceSnapMatch, pAlarmer, interval);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
@ -281,9 +283,7 @@ public class HikAlarmCallBack implements HCNetSDK.FMSGCallBack_V31 {
|
||||
log.info("海康设备告警信息上传,设备={}, 人脸图片大小={}, 背景图片大小={}", sAlarmInfo, smallImg.length, bigImg.length);
|
||||
|
||||
SisDeviceManage device = sisDeviceManageService.queryByDeviceIp(sAlarmInfo);
|
||||
|
||||
if (!device.getIsComparison()) {
|
||||
log.info("设备不支持人脸比对");
|
||||
zeroSensationPassageService.pass(sAlarmInfo, smallImg, bigImg);
|
||||
}
|
||||
}
|
||||
@ -291,7 +291,7 @@ public class HikAlarmCallBack implements HCNetSDK.FMSGCallBack_V31 {
|
||||
/**
|
||||
* 处理人脸比对上报
|
||||
*/
|
||||
private void handleFaceComparison(HCNetSDK.NET_VCA_FACESNAP_MATCH_ALARM result, HCNetSDK.NET_DVR_ALARMER pAlarmer) {
|
||||
private void handleFaceComparison(HCNetSDK.NET_VCA_FACESNAP_MATCH_ALARM result, HCNetSDK.NET_DVR_ALARMER pAlarmer, TimeInterval interval) {
|
||||
// 读取比对结果比对结果,0-保留,1-比对成功,2-比对失败
|
||||
int compareResults = result.byContrastStatus;
|
||||
// 比对不成功,不处理
|
||||
@ -320,7 +320,8 @@ public class HikAlarmCallBack implements HCNetSDK.FMSGCallBack_V31 {
|
||||
int pid = Integer.parseInt(new String(pidByte));
|
||||
|
||||
log.info("比对结果:{},相似度:{},人员:{},id:{}", compareResults, similarity, name, pid);
|
||||
zeroSensationPassageService.handleEleOut(new String(pAlarmer.sDeviceIP).trim());
|
||||
log.info("处理前置人脸比对结果,耗时:{}", interval.interval());
|
||||
zeroSensationPassageService.handleEleOut(new String(pAlarmer.sDeviceIP).trim(), interval);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,5 +1,7 @@
|
||||
package org.dromara.sis.service;
|
||||
|
||||
import cn.hutool.core.date.TimeInterval;
|
||||
|
||||
public interface IZeroSensationPassageService {
|
||||
|
||||
/**
|
||||
@ -16,6 +18,6 @@ public interface IZeroSensationPassageService {
|
||||
*
|
||||
* @param deviceIp 设备ip
|
||||
*/
|
||||
void handleEleOut(String deviceIp);
|
||||
void handleEleOut(String deviceIp, TimeInterval interval);
|
||||
|
||||
}
|
||||
|
@ -1,27 +1,23 @@
|
||||
package org.dromara.sis.service.impl;
|
||||
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
import org.dromara.common.core.constant.CodePrefixConstants;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.resource.api.RemoteFileService;
|
||||
import org.dromara.sis.domain.SisLibImgRef;
|
||||
import org.dromara.sis.domain.SisPersonLibImg;
|
||||
import org.dromara.sis.domain.bo.SisLibImgRefBo;
|
||||
import org.dromara.sis.domain.bo.SisPersonLibImgBo;
|
||||
import org.dromara.sis.domain.vo.*;
|
||||
import org.dromara.sis.mapper.SisPersonLibImgMapper;
|
||||
import org.dromara.sis.sdk.huawei.HuaWeiBoxApi;
|
||||
import org.dromara.sis.sdk.huawei.domain.AddHWPersonReq;
|
||||
import org.dromara.sis.service.*;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@ -157,7 +153,7 @@ public class SisPersonLibImgServiceImpl implements ISisPersonLibImgService {
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
List<SisPersonLibImgVo> list = this.queryListByIds(ids);
|
||||
Collection<Long> remoteIds = list.stream().map(SisPersonLibImgVo::getRemoteImgId).toList();
|
||||
Collection<Long> remoteIds = list.stream().map(SisPersonLibImgVo::getRemoteHWId).toList();
|
||||
|
||||
if (!remoteIds.isEmpty()) {
|
||||
Boolean flag = huaWeiBoxApi.deletePerson(remoteIds);
|
||||
@ -194,7 +190,7 @@ public class SisPersonLibImgServiceImpl implements ISisPersonLibImgService {
|
||||
LambdaQueryWrapper<SisPersonLibImg> lqw = new LambdaQueryWrapper<>();
|
||||
lqw.eq(SisPersonLibImg::getResidentPersonId, personId);
|
||||
SisPersonLibImg update = new SisPersonLibImg();
|
||||
update.setRemoteImgId(huaweiBoxId);
|
||||
update.setRemoteHWId(huaweiBoxId);
|
||||
update.setImgMd5Value(imgMd5);
|
||||
return baseMapper.update(update, lqw) > 0;
|
||||
}
|
||||
|
@ -135,12 +135,12 @@ public class ZeroSensationPassageServiceImpl implements IZeroSensationPassageSer
|
||||
* @param deviceIp 设备ip
|
||||
*/
|
||||
@Override
|
||||
public void handleEleOut(String deviceIp) {
|
||||
public void handleEleOut(String deviceIp, TimeInterval interval) {
|
||||
// 获取当前设备的绑定设备信息
|
||||
List<SisDeviceBindRefVo> bindRefList = deviceBindRefService.queryByDeviceIp(deviceIp);
|
||||
bindRefList.forEach(item -> {
|
||||
// 只处理外部按键
|
||||
if (Objects.equals(item.getControlType(), ControlTypeEnum.ELEVATOR_OUT_CONTROL.getCode())) {
|
||||
List<SisDeviceBindRefVo> outRefList = bindRefList.stream().filter(item -> Objects.equals(item.getControlType(), ControlTypeEnum.ELEVATOR_OUT_CONTROL.getCode())).toList();
|
||||
|
||||
outRefList.forEach(item -> {
|
||||
// 获取当前电梯信息
|
||||
SisElevatorInfoVo ele = elevatorInfoService.queryById(item.getBindId());
|
||||
|
||||
@ -156,10 +156,9 @@ public class ZeroSensationPassageServiceImpl implements IZeroSensationPassageSer
|
||||
HikApiService.getInstance().controlGateway(ele.getControlIp(), channelRefVo.getUpChannel().intValue(), 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cleanLiftAuthRocketProducer.sendMessage(item.getBindId(), 0L, item.getDeviceFloorId(), "清除电梯" + item.getBindId() + "梯控权限", 3);
|
||||
});
|
||||
log.info("处理电梯外部按键完成,耗时:{}ms", interval.intervalMs());
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user