From eda83d65309ca0b317c267de5a3f34b8a1518ea6 Mon Sep 17 00:00:00 2001 From: Mikhail Kuznetsov Date: Thu, 23 Nov 2023 15:46:10 +1000 Subject: [PATCH] =?UTF-8?q?fix(aihit):=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D1=83=D1=80=D0=BE=D0=B2=D0=BD=D0=B8=20=20?= =?UTF-8?q?=D0=B6=D1=83=D1=80=D0=BD=D0=B0=D0=BB=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8F,=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA?= =?UTF-8?q?=D0=B0=20Null=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20=D0=B2?= =?UTF-8?q?=20=D1=80=D0=B0=D0=B1=D0=BE=D1=87=D0=B5=D0=B9=20=D0=B3=D1=80?= =?UTF-8?q?=D1=83=D0=BF=D0=BF=D0=B5,=20=D0=BA=D0=B0=D0=BA=20=D0=BE=D0=BA?= =?UTF-8?q?=D0=B0=D0=B7=D0=B0=D0=BB=D0=BE=D1=81=D1=8C=20=D0=90=D0=98=D0=A5?= =?UTF-8?q?=20=D0=98=D0=A2=20=D0=BE=D0=B4=D0=BF=D1=83=D1=81=D0=BA=D0=B0?= =?UTF-8?q?=D0=B5=D1=82=20=D1=82=D0=B0=D0=BA=D0=BE=D0=B5=20=D0=B7=D0=BD?= =?UTF-8?q?=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PARR.AIHIT/AIHIT/Syncher.cs | 40 +++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/PARR.AIHIT/AIHIT/Syncher.cs b/PARR.AIHIT/AIHIT/Syncher.cs index 3b7bf36c..c9dfc794 100644 --- a/PARR.AIHIT/AIHIT/Syncher.cs +++ b/PARR.AIHIT/AIHIT/Syncher.cs @@ -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> GetAndFillApplicationsAsync(RawDataEK vm) { - logger.LogInformation($"--- Начало парсинга данных о программном обеспечении(СП, БД, ОС) из АИХ ИТ ---"); + logger.LogDebug($"Начало парсинга данных о программном обеспечении(СП, БД, ОС) из АИХ ИТ"); var applications = new List(); 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(); var dbList = dbField.Split(";").Distinct().ToList(); - //dbList.ForEach(item => item.Trim()); return dbList; } @@ -301,13 +308,12 @@ namespace PARR.AIHIT return new List(); var osList = osField.Split(";").Distinct().ToList(); - //osList.ForEach(item => item.Trim()); return osList; } - private async Task CreateAppIfNotExistAsync(string appName, ApplicationTypesEnum type)//Application application) + private async Task CreateAppIfNotExistAsync(string appName, ApplicationTypesEnum type) { if (string.IsNullOrEmpty(appName) || string.IsNullOrWhiteSpace(appName)) return null;