From 933bfcbeb1acf91fe4e0872b81273860bf347f7c Mon Sep 17 00:00:00 2001 From: Mikhail Trubnikov Date: Fri, 30 Aug 2024 10:17:06 +1000 Subject: [PATCH] =?UTF-8?q?feat(aihitSyncer):=20=D0=92=20=D0=90=D0=98?= =?UTF-8?q?=D0=A5=D0=98=D0=A2=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BD=D0=BE=D1=81=D1=8B?= =?UTF-8?q?=20=D1=81=D1=82=D1=80=D0=BE=D0=BA=20=D0=B2=20=D0=BA=D0=B0=D1=87?= =?UTF-8?q?=D0=B5=D1=81=D1=82=D0=B2=D0=B5=20=D1=80=D0=B0=D0=B7=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D0=B8=D1=82=D0=B5=D0=BB=D0=B5=D0=B9.=20=D0=9E=D0=B1?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D0=B8=D0=BB=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4?= =?UTF-8?q?=20ParseAppsList?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PARR.AIHITSyncer/AihitSyncer.cs | 102 --------------------- PARR.AIHITSyncer/AihitSyncerInstaller.cs | 12 +++ PARR.AIHITSyncer/Services/SyncerService.cs | 12 ++- PARR.AIHITSyncerWorker/Program.cs | 2 + 4 files changed, 25 insertions(+), 103 deletions(-) diff --git a/PARR.AIHITSyncer/AihitSyncer.cs b/PARR.AIHITSyncer/AihitSyncer.cs index 9aeb2301..1a279a70 100644 --- a/PARR.AIHITSyncer/AihitSyncer.cs +++ b/PARR.AIHITSyncer/AihitSyncer.cs @@ -54,107 +54,5 @@ namespace PARR.AIHITSyncer mqService.Dispose(); } - //private async Task SyncDataAsync(string msg) - //{ - // //SyncService - // using (var scope = serviceProvider.CreateScope()) - // { - // var service = scope.ServiceProvider.GetService(); - // //if (service == null) - // // throw new Exception("Не смог получить серивс IHostService, scope.ServiceProvider.GetService()"); - - // await service.StartAsync(msg); - - // //await SyncHostToScopeAsync(hostService, objFromQuery); - - // //await GetAppTypesAsync(); - // } - - //var objFromQuery = transformService.GetModelFromJson(msg); - //if (objFromQuery == null) - // return; - - //using (var scope = serviceProvider.CreateScope()) - //{ - // var hostService = scope.ServiceProvider.GetService(); - // if (hostService == null) - // throw new Exception("Не смог получить серивс IHostService, scope.ServiceProvider.GetService()"); - - // await SyncHostToScopeAsync(hostService, objFromQuery); - - // await GetAppTypesAsync(); - //} - - //logger.LogDebug($"Закончил работу с сообщением: {msg}"); - //await Task.CompletedTask; - //} - - //private async Task SyncHostToScopeAsync(IHostService hostService, AihitDataMq objFromQuery) - //{ - // //ищем существующий хост в БД - // var host = await hostService.GetHostWithAppsByIpAsync(objFromQuery.IP); - // var isNew = false; - // //если не нашли - создаём - // if (host == null) - // { - // isNew = true; - // host = await CreateHostAsync(hostService, objFromQuery); - // } - // else - // { - // logger.LogDebug($"Найден хост в БД: {host!.Ek}({host.IP})"); - // //проверям и обновляем поля - // await SyncHostFieldsAsync(hostService, host, objFromQuery); - // } - - // //получаем лист ПО из объекта - // var appsInObj = await GetAppInObjectAsync(host, objFromQuery); - - // await SyncApplicationInHostAsync(host, appsInObj, !isNew); - //} - - - - - - //private async Task CreateHostAsync(IHostService hostService, AihitDataMq objFromQuery) - //{ - // var id = Guid.NewGuid(); - // var host = new Host - // { - // Id = id, - // Ek = objFromQuery.EK, - // IP = objFromQuery.IP, - // EkStatusCode = ResolveCode(objFromQuery.Status), - // WorkGroup = objFromQuery.WorkGroup, - // ResponseAreaCode = ResolveCode(objFromQuery.ResponseArea) - // }; - - // if (!await hostService.CreateAsync(host) || !await hostService.CommitAsync()) - // logger.LogError($"Не удалось создать узел {host.Ek}({host.IP})"); - // else - // logger.LogInformation($"----- Создан узел: {host.Id} -----"); - - - // return await hostService.GetHostWithAppsByIpAsync(host.IP); - //} - - - - //private int ResolveCode(string field) - //{ - // var pattern = "\\d+"; - // var regex = new Regex(pattern); - - // int.TryParse(regex.Match(field).Value, out int result); - - // return result; - //} - - - - - - } } diff --git a/PARR.AIHITSyncer/AihitSyncerInstaller.cs b/PARR.AIHITSyncer/AihitSyncerInstaller.cs index 2221981d..36723c77 100644 --- a/PARR.AIHITSyncer/AihitSyncerInstaller.cs +++ b/PARR.AIHITSyncer/AihitSyncerInstaller.cs @@ -25,5 +25,17 @@ namespace PARR.AIHITSyncer services.AddTransient(); services.AddTransient(); } + + public static IConfigurationBuilder AddAihitSyncerConfigurations(this IConfigurationBuilder builder, IServiceCollection services) + { + builder.AddDalConfigurations(services); + + return builder; + } + + public static void AddAihitSyncerSettings(this IServiceCollection services, IConfiguration configuration) + { + services.AddDallSettings(configuration); + } } } diff --git a/PARR.AIHITSyncer/Services/SyncerService.cs b/PARR.AIHITSyncer/Services/SyncerService.cs index 4a92cb20..82ab4757 100644 --- a/PARR.AIHITSyncer/Services/SyncerService.cs +++ b/PARR.AIHITSyncer/Services/SyncerService.cs @@ -183,7 +183,8 @@ namespace PARR.AIHITSyncer.Services } int responseAreaCode = GetResponseAreaCodeFromStr(objFromQuery.ResponseArea) ?? 0; - if (responseAreaCode == 0) { + if (responseAreaCode == 0) + { logger.LogWarning($"Ошибка при получении ЗО хоста: {objFromQuery.EK}, ЗО: {objFromQuery.ResponseArea}"); return; } @@ -286,6 +287,15 @@ namespace PARR.AIHITSyncer.Services private List ParseAppsList(string appStr) { + // в АИХИТ стали появляться разделители \r \n находим их и заменяем на , + if (appStr.Contains("\r") || appStr.Contains("\n")) + { + string orig = appStr; + appStr = appStr.Replace("\r", ",").Replace("\n", ","); + + logger.LogDebug($"В строке найдены переносы, заменены на разделители. Исходная строка: {orig}. Результат: {appStr}"); + } + var regex = new Regex("\\([^)]*\\)"); if (regex.IsMatch(appStr)) diff --git a/PARR.AIHITSyncerWorker/Program.cs b/PARR.AIHITSyncerWorker/Program.cs index e29f03ca..f46ea7e9 100644 --- a/PARR.AIHITSyncerWorker/Program.cs +++ b/PARR.AIHITSyncerWorker/Program.cs @@ -23,6 +23,8 @@ builder.Services.AddLogging(config => }); builder.Services.InstallAihitSyncerServices(builder.Configuration); +builder.Configuration.AddAihitSyncerConfigurations(builder.Services); +builder.Services.AddAihitSyncerSettings(builder.Configuration); builder.Services.AddHostedService();