设备同步逻辑修改
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());
|
SnailJobLog.REMOTE.info("需要同步状态的设备数量", device.size());
|
||||||
device.forEach(item -> {
|
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();
|
return ExecuteResult.success();
|
||||||
}
|
}
|
||||||
@@ -80,23 +73,26 @@ public class HikDeviceCheckStateTask {
|
|||||||
SnailJobLog.REMOTE.info("设备[{}]本地通道数量={}", sisDeviceManage.getDeviceIp(), ls.size());
|
SnailJobLog.REMOTE.info("设备[{}]本地通道数量={}", sisDeviceManage.getDeviceIp(), ls.size());
|
||||||
List<RemoteSdkChannel> sdkChannels = remoteHikSdkService.getDeviceChannel(sisDeviceManage.getDeviceIp());
|
List<RemoteSdkChannel> sdkChannels = remoteHikSdkService.getDeviceChannel(sisDeviceManage.getDeviceIp());
|
||||||
SnailJobLog.REMOTE.info("设备[{}]sdk通道数量={}", sisDeviceManage.getDeviceIp(), sdkChannels.size());
|
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, RemoteSisDeviceChannel> data1 = ls.stream().collect(Collectors.toMap(RemoteSisDeviceChannel::getDeviceIp, item -> item));
|
||||||
Map<String, RemoteSdkChannel> data2 = sdkChannels.stream().collect(Collectors.toMap(RemoteSdkChannel::getChannelIp, item -> item));
|
Map<String, RemoteSdkChannel> data2 = sdkChannels.stream().collect(Collectors.toMap(RemoteSdkChannel::getChannelIp, item -> item));
|
||||||
Set<String> keys = new HashSet<>(data1.size() + data2.size());
|
Set<String> keys = new HashSet<>(data1.size() + data2.size());
|
||||||
keys.addAll(data1.keySet());
|
keys.addAll(data1.keySet());
|
||||||
keys.addAll(data2.keySet());
|
keys.addAll(data2.keySet());
|
||||||
|
// 删除数据
|
||||||
// 在data1 不在data2 的数据 -- 删除本体通道
|
|
||||||
List<RemoteSisDeviceChannel> deleteData = new ArrayList<>(data1.size());
|
List<RemoteSisDeviceChannel> deleteData = new ArrayList<>(data1.size());
|
||||||
// 在data2有 data1中没有的数据 -- 写入本地通道
|
// 新增数据
|
||||||
List<RemoteSdkChannel> insertData = new ArrayList<>(data1.size());
|
List<RemoteSdkChannel> insertData = new ArrayList<>(data1.size());
|
||||||
// 在2个集合中都存在的数据 -- 更新本地通道
|
// 更新数据
|
||||||
List<RemoteSisDeviceChannel> updateData = new ArrayList<>(data1.size());
|
List<RemoteSisDeviceChannel> updateData = new ArrayList<>(data1.size());
|
||||||
keys.forEach(item -> {
|
keys.forEach(item -> {
|
||||||
|
// 系统设备通道
|
||||||
RemoteSisDeviceChannel remoteSisDeviceChannel = data1.get(item);
|
RemoteSisDeviceChannel remoteSisDeviceChannel = data1.get(item);
|
||||||
|
// 远程设备通道
|
||||||
RemoteSdkChannel remoteSdkChannel = data2.get(item);
|
RemoteSdkChannel remoteSdkChannel = data2.get(item);
|
||||||
|
// 本地不存在此通道
|
||||||
if (remoteSisDeviceChannel == null) {
|
if (remoteSisDeviceChannel == null) {
|
||||||
|
// 远程存在此通道 -- 新增
|
||||||
if (remoteSdkChannel != null) {
|
if (remoteSdkChannel != null) {
|
||||||
remoteSdkChannel.setDeviceId(sisDeviceManage.getId());
|
remoteSdkChannel.setDeviceId(sisDeviceManage.getId());
|
||||||
remoteSdkChannel.setNvrIp(sisDeviceManage.getDeviceIp());
|
remoteSdkChannel.setNvrIp(sisDeviceManage.getDeviceIp());
|
||||||
@@ -106,10 +102,13 @@ public class HikDeviceCheckStateTask {
|
|||||||
remoteSdkChannel.setNvrFactoryNo(sisDeviceManage.getFactoryNo());
|
remoteSdkChannel.setNvrFactoryNo(sisDeviceManage.getFactoryNo());
|
||||||
remoteSdkChannel.setGroupId(sisDeviceManage.getGroupId());
|
remoteSdkChannel.setGroupId(sisDeviceManage.getGroupId());
|
||||||
remoteSdkChannel.setTenantId(sisDeviceManage.getTenantId());
|
remoteSdkChannel.setTenantId(sisDeviceManage.getTenantId());
|
||||||
// 写入
|
remoteSdkChannel.setChannelStatus(remoteSdkChannel.getChannelStatus());
|
||||||
insertData.add(remoteSdkChannel);
|
insertData.add(remoteSdkChannel);
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
// 本地存在此通道
|
||||||
|
else {
|
||||||
|
// 远程不存在此通道
|
||||||
if (remoteSdkChannel == null) {
|
if (remoteSdkChannel == null) {
|
||||||
// 删除
|
// 删除
|
||||||
deleteData.add(remoteSisDeviceChannel);
|
deleteData.add(remoteSisDeviceChannel);
|
||||||
@@ -153,7 +152,7 @@ public class HikDeviceCheckStateTask {
|
|||||||
*/
|
*/
|
||||||
private boolean updateDeviceStatus(RemoteSisDeviceManage item) {
|
private boolean updateDeviceStatus(RemoteSisDeviceManage item) {
|
||||||
Integer deviceType = item.getDeviceType();
|
Integer deviceType = item.getDeviceType();
|
||||||
if(item.getDeviceType().equals(DeviceTypeEnum.IPC.getType())) {
|
if (item.getDeviceType().equals(DeviceTypeEnum.IPC.getType())) {
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user