feat(aihitRelationshipsSyncer): полностью переписан класс+добавлены сообщения дл\ отладки
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user