设备同步逻辑修改
All checks were successful
Build and Push to Target Registry / 构建并推送镜像到目标仓库 (push) Successful in 13m12s
All checks were successful
Build and Push to Target Registry / 构建并推送镜像到目标仓库 (push) Successful in 13m12s
This commit is contained in:
@@ -51,19 +51,12 @@ public class HikDeviceCheckStateTask {
|
||||
}
|
||||
SnailJobLog.REMOTE.info("需要同步状态的设备数量", device.size());
|
||||
device.forEach(item -> {
|
||||
// ipc
|
||||
if (DeviceTypeEnum.IPC.getType().equals(item.getDeviceType())) {
|
||||
updateDeviceStatus(item);
|
||||
// 同步设备状态
|
||||
updateDeviceStatus(item);
|
||||
// 如果设备类型为nvr或者cvr/dvr 需要同步通道状态
|
||||
if (DeviceTypeEnum.NVR.getType().equals(item.getDeviceType()) || DeviceTypeEnum.DVR.getType().equals(item.getDeviceType())) {
|
||||
updateDeviceChannelStatus(item);
|
||||
}
|
||||
|
||||
if (DeviceTypeEnum.NVR.getType().equals(item.getDeviceType())) {
|
||||
// 设备状态更新完成
|
||||
boolean b = updateDeviceStatus(item);
|
||||
if (b) {
|
||||
updateDeviceChannelStatus(item);
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
return ExecuteResult.success();
|
||||
}
|
||||
@@ -80,23 +73,26 @@ public class HikDeviceCheckStateTask {
|
||||
SnailJobLog.REMOTE.info("设备[{}]本地通道数量={}", sisDeviceManage.getDeviceIp(), ls.size());
|
||||
List<RemoteSdkChannel> sdkChannels = remoteHikSdkService.getDeviceChannel(sisDeviceManage.getDeviceIp());
|
||||
SnailJobLog.REMOTE.info("设备[{}]sdk通道数量={}", sisDeviceManage.getDeviceIp(), sdkChannels.size());
|
||||
|
||||
// 根据设备ip 生成一个hashset
|
||||
Map<String, RemoteSisDeviceChannel> data1 = ls.stream().collect(Collectors.toMap(RemoteSisDeviceChannel::getDeviceIp, item -> item));
|
||||
Map<String, RemoteSdkChannel> data2 = sdkChannels.stream().collect(Collectors.toMap(RemoteSdkChannel::getChannelIp, item -> item));
|
||||
Set<String> keys = new HashSet<>(data1.size() + data2.size());
|
||||
keys.addAll(data1.keySet());
|
||||
keys.addAll(data2.keySet());
|
||||
|
||||
// 在data1 不在data2 的数据 -- 删除本体通道
|
||||
// 删除数据
|
||||
List<RemoteSisDeviceChannel> deleteData = new ArrayList<>(data1.size());
|
||||
// 在data2有 data1中没有的数据 -- 写入本地通道
|
||||
// 新增数据
|
||||
List<RemoteSdkChannel> insertData = new ArrayList<>(data1.size());
|
||||
// 在2个集合中都存在的数据 -- 更新本地通道
|
||||
// 更新数据
|
||||
List<RemoteSisDeviceChannel> updateData = new ArrayList<>(data1.size());
|
||||
keys.forEach(item -> {
|
||||
// 系统设备通道
|
||||
RemoteSisDeviceChannel remoteSisDeviceChannel = data1.get(item);
|
||||
// 远程设备通道
|
||||
RemoteSdkChannel remoteSdkChannel = data2.get(item);
|
||||
// 本地不存在此通道
|
||||
if (remoteSisDeviceChannel == null) {
|
||||
// 远程存在此通道 -- 新增
|
||||
if (remoteSdkChannel != null) {
|
||||
remoteSdkChannel.setDeviceId(sisDeviceManage.getId());
|
||||
remoteSdkChannel.setNvrIp(sisDeviceManage.getDeviceIp());
|
||||
@@ -106,10 +102,13 @@ public class HikDeviceCheckStateTask {
|
||||
remoteSdkChannel.setNvrFactoryNo(sisDeviceManage.getFactoryNo());
|
||||
remoteSdkChannel.setGroupId(sisDeviceManage.getGroupId());
|
||||
remoteSdkChannel.setTenantId(sisDeviceManage.getTenantId());
|
||||
// 写入
|
||||
remoteSdkChannel.setChannelStatus(remoteSdkChannel.getChannelStatus());
|
||||
insertData.add(remoteSdkChannel);
|
||||
}
|
||||
} else {
|
||||
}
|
||||
// 本地存在此通道
|
||||
else {
|
||||
// 远程不存在此通道
|
||||
if (remoteSdkChannel == null) {
|
||||
// 删除
|
||||
deleteData.add(remoteSisDeviceChannel);
|
||||
@@ -153,7 +152,7 @@ public class HikDeviceCheckStateTask {
|
||||
*/
|
||||
private boolean updateDeviceStatus(RemoteSisDeviceManage item) {
|
||||
Integer deviceType = item.getDeviceType();
|
||||
if(item.getDeviceType().equals(DeviceTypeEnum.IPC.getType())) {
|
||||
if (item.getDeviceType().equals(DeviceTypeEnum.IPC.getType())) {
|
||||
|
||||
} else {
|
||||
|
||||
|
Reference in New Issue
Block a user