fix(aihit): исправлен метод синхронизации, была ошибка сравнения Id и не удалялись лишние Application в Host

This commit is contained in:
Mikhail Kuznetsov
2023-11-24 14:04:27 +10:00
parent eda83d6530
commit b18f00d70e

View File

@@ -63,7 +63,7 @@ namespace PARR.AIHIT
var respAreas = await settingService.Get() var respAreas = await settingService.Get()
.Where(ra => ra.Group == AIHTITSettings.RespAreaGroupName) .Where(ra => ra.Group == AIHTITSettings.RespAreaGroupName)
.ToListAsync(); .ToListAsync();
//#if !DEBUG #if !DEBUG
//Запускаем хранимую процедуру в АИХ ИТ и складываем в таблицу RawDataEKs, предварительно почистив старые данные //Запускаем хранимую процедуру в АИХ ИТ и складываем в таблицу RawDataEKs, предварительно почистив старые данные
foreach (var respArea in respAreas) foreach (var respArea in respAreas)
{ {
@@ -109,7 +109,7 @@ namespace PARR.AIHIT
logger.LogDebug($"-= Конец синхронизации данных об ЭК зоны ответственности {respArea.Name} =-"); logger.LogDebug($"-= Конец синхронизации данных об ЭК зоны ответственности {respArea.Name} =-");
} }
//#endif #endif
//Разбираем сырые данные //Разбираем сырые данные
//Получаем интересующие статусы ЭК //Получаем интересующие статусы ЭК
@@ -123,7 +123,7 @@ namespace PARR.AIHIT
//Берём только активные ЭК //Берём только активные ЭК
var eks = await rawDataEKService.Get() var eks = await rawDataEKService.Get()
.Where(e => e.IsActive == "t" && (e.Status != null && statusList.Contains(e.Status.Trim()))) .Where(e => e.IsActive == "t" && (e.Status != null && statusList.Contains(e.Status.Trim())) && e.EKFindCode.StartsWith("ВРТ-"))
.ToListAsync(); .ToListAsync();
foreach (var ek in eks) foreach (var ek in eks)
@@ -210,17 +210,20 @@ namespace PARR.AIHIT
foreach (var app in host.ApplicationsInHosts) foreach (var app in host.ApplicationsInHosts)
{ {
var appToRemove = hostApplications.FirstOrDefault(a => a.Id == app.Id); var appToRemove = hostApplications.FirstOrDefault(a => a.Id == app.ApplicationId);
if (appToRemove == null) if (appToRemove == null)
{ {
//todo remove appToRemove //todo remove appToRemove
var obj = await appInHostService.Get().FirstOrDefaultAsync(t => t.ApplicationId == app.Id && t.HostId == host.Id); var obj = await appInHostService.Get().FirstOrDefaultAsync(t => t.ApplicationId == app.ApplicationId && t.HostId == host.Id);
if (obj != null) if (obj != null)
{ {
logger.LogInformation($"Host: {host.Ek}({host.IP}), удаление неактуального приложения Application {app.Application?.Name}"); logger.LogInformation($"Host: {host.Ek}({host.IP}), удаление неактуального приложения Application {app.Application?.Name}");
appInHostService.Delete(obj); appInHostService.Delete(obj);
if (!await hostService.CommitAsync())
logger.LogError($"Не удалось удалить Application {app.Application?.Name} узла {host.Ek}({host.IP})");
isUpdated = true; isUpdated = true;
} }
} }
@@ -239,7 +242,7 @@ namespace PARR.AIHIT
private async Task<List<Application>> GetAndFillApplicationsAsync(RawDataEK vm) private async Task<List<Application>> GetAndFillApplicationsAsync(RawDataEK vm)
{ {
logger.LogDebug($"Начало парсинга данных о программном обеспечении(СП, БД, ОС) из АИХ ИТ"); //logger.LogDebug($"Начало парсинга данных о программном обеспечении(СП, БД, ОС) из АИХ ИТ");
var applications = new List<Application>(); var applications = new List<Application>();
if (vm.APPType != null) if (vm.APPType != null)
@@ -273,7 +276,7 @@ namespace PARR.AIHIT
} }
} }
logger.LogDebug($"Конец парсинга данных о программном обеспечении(СП, БД, ОС) из АИХ ИТ"); //logger.LogDebug($"Конец парсинга данных о программном обеспечении(СП, БД, ОС) из АИХ ИТ");
return applications; return applications;
} }