feat(aihitSyncer): В АИХИТ добавлены переносы строк в качестве разделителей. Обновил метод ParseAppsList
This commit is contained in:
@@ -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<SyncerService>();
|
||||
// //if (service == null)
|
||||
// // throw new Exception("Не смог получить серивс IHostService, scope.ServiceProvider.GetService<IHostService>()");
|
||||
|
||||
// await service.StartAsync(msg);
|
||||
|
||||
// //await SyncHostToScopeAsync(hostService, objFromQuery);
|
||||
|
||||
// //await GetAppTypesAsync();
|
||||
// }
|
||||
|
||||
//var objFromQuery = transformService.GetModelFromJson<AihitDataMq>(msg);
|
||||
//if (objFromQuery == null)
|
||||
// return;
|
||||
|
||||
//using (var scope = serviceProvider.CreateScope())
|
||||
//{
|
||||
// var hostService = scope.ServiceProvider.GetService<IHostService>();
|
||||
// if (hostService == null)
|
||||
// throw new Exception("Не смог получить серивс IHostService, scope.ServiceProvider.GetService<IHostService>()");
|
||||
|
||||
// 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<Host?> 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;
|
||||
//}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,5 +25,17 @@ namespace PARR.AIHITSyncer
|
||||
services.AddTransient<IAihitSyncer, AihitSyncer>();
|
||||
services.AddTransient<ISyncerService, SyncerService>();
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<string> 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))
|
||||
|
||||
@@ -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<Worker>();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user