feat(aihitRelationshipsSyncer): Реализована логика синхронизации связей между Unit+CI/CD
This commit is contained in:
71
PARR.AIHITRelationshipsSyncer/RelationshipsSyncer.cs
Normal file
71
PARR.AIHITRelationshipsSyncer/RelationshipsSyncer.cs
Normal file
@@ -0,0 +1,71 @@
|
||||
using Microsoft.Extensions.Logging;
|
||||
using PARR.AIHITRelationshipsSyncer.Services.Interfaces;
|
||||
using PARR.AIHITRelationshipsSyncer.Settings;
|
||||
using PARR.BLL.Services.Interfaces;
|
||||
|
||||
namespace PARR.AIHITRelationshipsSyncer
|
||||
{
|
||||
internal class RelationshipsSyncer : IRelationshipsSyncer
|
||||
{
|
||||
private readonly ILogger<RelationshipsSyncer> logger;
|
||||
private readonly IIntervalService intervalService;
|
||||
private readonly IAihitService aihitService;
|
||||
private readonly IRelationshipsSyncService relationshipsSyncService;
|
||||
private readonly WorkerSettings workerSettings;
|
||||
|
||||
public RelationshipsSyncer(
|
||||
ILogger<RelationshipsSyncer> logger,
|
||||
IIntervalService intervalService,
|
||||
IAihitService aihitService,
|
||||
IRelationshipsSyncService relationshipsSyncService,
|
||||
WorkerSettings workerSettings
|
||||
)
|
||||
{
|
||||
this.logger = logger;
|
||||
this.intervalService = intervalService;
|
||||
this.aihitService = aihitService;
|
||||
this.relationshipsSyncService = relationshipsSyncService;
|
||||
this.workerSettings = workerSettings;
|
||||
}
|
||||
|
||||
|
||||
public async Task StartAsync()
|
||||
{
|
||||
logger.LogInformation("Запуск сервиса синхронизации связей иерархии ЭК из АИХ ИТ в ПАРР");
|
||||
|
||||
await intervalService.IntervalInitAsync(async () =>
|
||||
{
|
||||
try
|
||||
{
|
||||
logger.LogInformation($"Начата загрузка иерархических связей между ЭК из АИХ ИТ");
|
||||
|
||||
var aihitdata = aihitService.GetData();
|
||||
|
||||
var aihitDataCount = aihitdata?.Count();
|
||||
|
||||
if (aihitdata == null || aihitDataCount == 0)
|
||||
{
|
||||
logger.LogInformation("АИХ ИТ вернул пустые данные");
|
||||
return;
|
||||
}
|
||||
|
||||
//File.WriteAllText("MockData.json", aihitdata.ToJson());
|
||||
//string text = File.OpenText("MockData.json").ReadToEnd();
|
||||
//var aihitdata = JsonSerializer.Deserialize<List<AihitData>>(text);
|
||||
|
||||
await relationshipsSyncService.SyncAsync(aihitdata.ToList());
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.LogError(ex, "Ошибка синхронизации иерархических данных Unit из АИХ ИТ в ПАРР");
|
||||
}
|
||||
finally
|
||||
{
|
||||
logger.LogInformation($"Завершена загрузка иерархических связей между ЭК из АИХ ИТ");
|
||||
}
|
||||
|
||||
}, workerSettings.RepeatEvery);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user