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