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