feat(aihitRelationshipsSyncer): полностью переписан класс+добавлены сообщения дл\ отладки

This commit is contained in:
Mikhail Kuznetsov
2025-10-31 17:35:54 +10:00
parent a3e12816c8
commit e716d9649d
11 changed files with 354 additions and 236 deletions

View File

@@ -1,7 +1,9 @@
using Microsoft.Extensions.Logging;
using PARR.AIHITRelationshipsSyncer.Models;
using PARR.AIHITRelationshipsSyncer.Services.Interfaces;
using PARR.AIHITRelationshipsSyncer.Settings;
using PARR.BLL.Services.Interfaces;
using System.Text.Json;
namespace PARR.AIHITRelationshipsSyncer
{
@@ -39,21 +41,62 @@ namespace PARR.AIHITRelationshipsSyncer
{
logger.LogInformation($"Начата загрузка иерархических связей между ЭК из АИХ ИТ");
var aihitdata = aihitService.GetData();
List<AihitData>? aihitDataList = null;
var aihitDataCount = aihitdata?.Count();
#if DEBUG
const string mockFilePath = "MockData.json";
if (aihitdata == null || aihitDataCount == 0)
//Пытаемся загрузить mock-данные
if (File.Exists(mockFilePath) && new FileInfo(mockFilePath).Length > 0)
{
logger.LogInformation("Загрузка данных из mock-файла: {MockFile}", mockFilePath);
try
{
var json = await File.ReadAllTextAsync(mockFilePath);
aihitDataList = JsonSerializer.Deserialize<List<AihitData>>(json, new JsonSerializerOptions { PropertyNameCaseInsensitive = true });
logger.LogInformation("Mock-данные успешно загружены");
}
catch (Exception ex)
{
logger.LogWarning(ex, "Не уадлось десериализовать {MockFile}. Будет выполнен запрос в базу АИХ ИТ", mockFilePath);
aihitDataList = null;
}
}
if (aihitDataList == null)
{
logger.LogInformation("Выполнение запроса в АИХ ИТ в режиме отладки");
var rawData = aihitService.GetData();
aihitDataList = rawData?.ToList();
if (aihitDataList != null && aihitDataList.Count > 0)
{
try
{
var json = JsonSerializer.Serialize(aihitDataList, new JsonSerializerOptions { WriteIndented = true });
await File.WriteAllTextAsync(mockFilePath, json);
logger.LogInformation("Данные сохранены в {MockFile} для будущей отладки", mockFilePath);
}
catch (Exception ex)
{
logger.LogWarning(ex, "Не удалось сохранить данные в {MockFile}", mockFilePath);
}
}
}
#else
//Release
var rawData = aihitService.GetData();
aihitDataList = rawData?.ToList();
#endif
if (aihitDataList == null || aihitDataList.Count == 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());
logger.LogInformation("Получено {EkCount} записей для синхронизации", aihitDataList.Count);
await relationshipsSyncService.SyncAsync(aihitDataList);
}
catch (Exception ex)