fix(aihit): изменены уровни журналирования, исправлена ошибка Null данных в рабочей группе, как оказалось АИХ ИТ одпускает такое значение

This commit is contained in:
Mikhail Kuznetsov
2023-11-23 15:46:10 +10:00
parent c88f7f2731
commit eda83d6530

View File

@@ -63,24 +63,28 @@ 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)
{
logger.LogDebug($"-= Получение данных об ЭК зоны ответственности {respArea.Name} =-");
var eksFromAIHIT = aihitService.GetEKList(respArea.Value)?.ToList();
if (eksFromAIHIT == null)
continue;
//Удаляем текущие данные по зоне ответственности respArea
logger.LogDebug($"-= Удаление существующих данных об ЭК зоны ответственности {respArea.Name} =-");
var toDelete = rawDataEKService.Get().Where(rd => rd.ResponseArea == respArea.Value).ToList();
toDelete.ForEach(d => rawDataEKService.Delete(d));
if(!await rawDataEKService.CommitAsync())
{
logger.LogError($"Не удалось создать удалить записи в rawDataEK зоны ответственности {respArea.Name}");
continue;
}
logger.LogDebug($"-= Создание новых записей об ЭК зоны ответственности {respArea.Name} =-");
foreach (var ek in eksFromAIHIT)
{
// создаем
@@ -96,12 +100,16 @@ namespace PARR.AIHIT
continue;
}
else
logger.LogInformation($"----- Создана запись rawDataEK {mappedEK.ShortName}({mappedEK.IP}), зона ответственности {respArea.Name} -----");
logger.LogInformation($"Создана запись rawDataEK {mappedEK.ShortName}({mappedEK.IP}), зона ответственности {respArea.Name}");
}
logger.LogDebug($"-= Запись в базу данных записей об ЭК зоны ответственности {respArea.Name} ");
if (!await rawDataEKService.CommitAsync())
logger.LogError($"Информация о хостах зоны ответственности {respArea.Name} не записана ");
logger.LogDebug($"-= Конец синхронизации данных об ЭК зоны ответственности {respArea.Name} =-");
}
#endif
//#endif
//Разбираем сырые данные
//Получаем интересующие статусы ЭК
@@ -113,7 +121,7 @@ namespace PARR.AIHIT
if (statusList == null || statusList.Count == 0)
return;
//Берём только активные шаблоны
//Берём только активные ЭК
var eks = await rawDataEKService.Get()
.Where(e => e.IsActive == "t" && (e.Status != null && statusList.Contains(e.Status.Trim())))
.ToListAsync();
@@ -153,7 +161,7 @@ namespace PARR.AIHIT
foundHost.EkStatusCode = mappedHost.EkStatusCode;
isChanged = true;
}
else if (mappedHost.WorkGroup != null && !foundHost.WorkGroup!.Equals(mappedHost.WorkGroup))
else if (mappedHost.WorkGroup != null && (foundHost.WorkGroup == null || !foundHost.WorkGroup!.Equals(mappedHost.WorkGroup)))
{
foundHost.WorkGroup = mappedHost.WorkGroup;
isChanged = true;
@@ -165,7 +173,7 @@ namespace PARR.AIHIT
if (!await hostService.CommitAsync())
logger.LogError($"Не удалось обновить узел {mappedHost.IP}");
else
logger.LogInformation($"----- Обновлён Host: {mappedHost.Id} -----");
logger.LogInformation($"Обновлён Host: {mappedHost.Id}");
}
// Синхронизация Applications
@@ -181,7 +189,7 @@ namespace PARR.AIHIT
if (host == null)
return;
logger.LogInformation($"--- Host: {host.Id}, начало синхронизации приложений ({hostApplications.Count()}) ---");
logger.LogDebug($"Host: {host.Ek}({host.IP}), начало синхронизации приложений ({hostApplications.Count()}) ");
foreach (var changedHostApp in hostApplications)
{
@@ -190,11 +198,11 @@ namespace PARR.AIHIT
if (exist == null)
{
//add
logger.LogInformation($"Host: {host.Id}, добавление нового приложения Application {changedHostApp.Name}");
logger.LogInformation($"Host: {host.Ek}({host.IP}), добавление нового приложения Application {changedHostApp.Name}");
var newAppHost = new ApplicationInHost { Id = Guid.NewGuid(), ApplicationId = changedHostApp.Id, HostId = host.Id };
if (!await appInHostService.CreateAsync(newAppHost))
logger.LogError($"Не удалось создать ApplicationInHost {changedHostApp.Name}, host: {host.Id}");
logger.LogError($"Не удалось создать ApplicationInHost {changedHostApp.Name}, host: {host.Ek}({host.IP})");
isUpdated = true;
}
@@ -210,7 +218,7 @@ namespace PARR.AIHIT
var obj = await appInHostService.Get().FirstOrDefaultAsync(t => t.ApplicationId == app.Id && t.HostId == host.Id);
if (obj != null)
{
logger.LogInformation($"Host: {host.Id}, удаление неактуального приложения Application {app.Application?.Name}");
logger.LogInformation($"Host: {host.Ek}({host.IP}), удаление неактуального приложения Application {app.Application?.Name}");
appInHostService.Delete(obj);
isUpdated = true;
@@ -222,16 +230,16 @@ namespace PARR.AIHIT
host.DateModified = DateTimeOffset.UtcNow;
if (!await appInHostService.CommitAsync())
logger.LogError($"Не удалось обновить ApplicationInHost для Host: {host.Id}");
logger.LogError($"Не удалось обновить ApplicationInHost для Host: {host.Ek}({host.IP})");
logger.LogInformation($"=== Host: {host.Id} конец синхронизации приложений ===");
logger.LogDebug($"Host: {host.Ek}({host.IP} конец синхронизации приложений");
}
private async Task<List<Application>> GetAndFillApplicationsAsync(RawDataEK vm)
{
logger.LogInformation($"--- Начало парсинга данных о программном обеспечении(СП, БД, ОС) из АИХ ИТ ---");
logger.LogDebug($"Начало парсинга данных о программном обеспечении(СП, БД, ОС) из АИХ ИТ");
var applications = new List<Application>();
if (vm.APPType != null)
@@ -265,7 +273,7 @@ namespace PARR.AIHIT
}
}
logger.LogInformation($"=== Конец парсинга данных о программном обеспечении(СП, БД, ОС) из АИХ ИТ ===");
logger.LogDebug($"Конец парсинга данных о программном обеспечении(СП, БД, ОС) из АИХ ИТ");
return applications;
}
@@ -289,7 +297,6 @@ namespace PARR.AIHIT
return new List<string>();
var dbList = dbField.Split(";").Distinct().ToList();
//dbList.ForEach(item => item.Trim());
return dbList;
}
@@ -301,13 +308,12 @@ namespace PARR.AIHIT
return new List<string>();
var osList = osField.Split(";").Distinct().ToList();
//osList.ForEach(item => item.Trim());
return osList;
}
private async Task<Application?> CreateAppIfNotExistAsync(string appName, ApplicationTypesEnum type)//Application application)
private async Task<Application?> CreateAppIfNotExistAsync(string appName, ApplicationTypesEnum type)
{
if (string.IsNullOrEmpty(appName) || string.IsNullOrWhiteSpace(appName)) return null;