强化通道同步异常处理

This commit is contained in:
648540858
2025-05-10 23:22:59 +08:00
parent 594a696015
commit d7ba1cab30

View File

@@ -194,6 +194,15 @@ public class CatalogDataManager implements CommandLineRunner {
for (String key : keySet) { for (String key : keySet) {
CatalogData catalogData = dataMap.get(key); CatalogData catalogData = dataMap.get(key);
if (catalogData != null && deviceId.equals(catalogData.getDevice().getDeviceId())) { if (catalogData != null && deviceId.equals(catalogData.getDevice().getDeviceId())) {
// 此时检查是否过期
Instant instantBefore30S = Instant.now().minusMillis(TimeUnit.SECONDS.toMillis(30));
if ((catalogData.getStatus().equals(CatalogData.CatalogDataStatus.end)
|| catalogData.getStatus().equals(CatalogData.CatalogDataStatus.ready))
&& catalogData.getTime().isBefore(instantBefore30S)) {
dataMap.remove(key);
return false;
}
return !catalogData.getStatus().equals(CatalogData.CatalogDataStatus.end); return !catalogData.getStatus().equals(CatalogData.CatalogDataStatus.end);
} }
} }
@@ -222,21 +231,26 @@ public class CatalogDataManager implements CommandLineRunner {
String deviceId = catalogData.getDevice().getDeviceId(); String deviceId = catalogData.getDevice().getDeviceId();
int sn = catalogData.getSn(); int sn = catalogData.getSn();
List<DeviceChannel> deviceChannelList = getDeviceChannelList(deviceId, sn); List<DeviceChannel> deviceChannelList = getDeviceChannelList(deviceId, sn);
if (catalogData.getTotal() == deviceChannelList.size()) { try {
deviceChannelService.resetChannels(catalogData.getDevice().getId(), deviceChannelList); if (catalogData.getTotal() == deviceChannelList.size()) {
}else { deviceChannelService.resetChannels(catalogData.getDevice().getId(), deviceChannelList);
deviceChannelService.updateChannels(catalogData.getDevice(), deviceChannelList); }else {
} deviceChannelService.updateChannels(catalogData.getDevice(), deviceChannelList);
List<Region> regionList = getRegionList(deviceId, sn); }
if ( regionList!= null && !regionList.isEmpty()) { List<Region> regionList = getRegionList(deviceId, sn);
regionService.batchAdd(regionList); if ( regionList!= null && !regionList.isEmpty()) {
} regionService.batchAdd(regionList);
List<Group> groupList = getGroupList(deviceId, sn); }
if (groupList != null && !groupList.isEmpty()) { List<Group> groupList = getGroupList(deviceId, sn);
groupService.batchAdd(groupList); if (groupList != null && !groupList.isEmpty()) {
groupService.batchAdd(groupList);
}
}catch (Exception e) {
log.error("[国标通道同步] 入库失败: ", e);
} }
String errorMsg = "更新成功,共" + catalogData.getTotal() + "条,已更新" + deviceChannelList.size() + ""; String errorMsg = "更新成功,共" + catalogData.getTotal() + "条,已更新" + deviceChannelList.size() + "";
catalogData.setErrorMsg(errorMsg); catalogData.setErrorMsg(errorMsg);
catalogData.setStatus(CatalogData.CatalogDataStatus.end);
}else if (catalogData.getStatus().equals(CatalogData.CatalogDataStatus.ready)) { }else if (catalogData.getStatus().equals(CatalogData.CatalogDataStatus.ready)) {
String errorMsg = "同步失败,等待回复超时"; String errorMsg = "同步失败,等待回复超时";
catalogData.setErrorMsg(errorMsg); catalogData.setErrorMsg(errorMsg);