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