feat(esppOrderLoader): изменено журналирвоание
This commit is contained in:
@@ -41,74 +41,116 @@ namespace PARR.EsppOrderLoader
|
||||
{
|
||||
logger.LogInformation("Запуск сервиса загрузки нарядов из ЕСПП.");
|
||||
|
||||
await intervalService.IntervalInitAsync(DownloadOrdersAsync, settings.RepeatEvery);
|
||||
|
||||
//var nextStart = DateTime.Now;
|
||||
|
||||
//while (true)
|
||||
//{
|
||||
// if (nextStart.Hour == DateTime.Now.Hour && nextStart.Minute == DateTime.Now.Minute)
|
||||
// {
|
||||
// logger.LogInformation("Загрузка списка нарядов из ЕСПП.");
|
||||
|
||||
// await DownloadOrdersAsync();
|
||||
|
||||
// nextStart = DateTime.Now.Add(settings.RepeatEvery);
|
||||
// logger.LogInformation($"Следующая дата загрузки: {nextStart}");
|
||||
// }
|
||||
|
||||
// // Каждую минуту
|
||||
// await Task.Delay(60 * 1000);
|
||||
//}
|
||||
try
|
||||
{
|
||||
await intervalService.IntervalInitAsync(DownloadOrdersAsync, settings.RepeatEvery);
|
||||
logger.LogDebug("Сервис загрузки нарядов из ЕСПП успешно запущен с интервалом {RepeatEvery}", settings.RepeatEvery);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.LogError(ex, "Ошибка при инициализации интервального сервиса загрузки нарядов из ЕСПП");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Получаю список нарядов из еспп
|
||||
//проверяю есть ли наряд в бд
|
||||
//если нет, ище шаблон в бд, затем сохраняю наряд в бд с привязанным шаблоном (если шаблон не нашел, тоже сохраняю)
|
||||
//если нет, ищу шаблон в бд, затем сохраняю наряд в бд с привязанным шаблоном (если шаблон не нашел, тоже сохраняю)
|
||||
|
||||
private async Task DownloadOrdersAsync()
|
||||
{
|
||||
var esppObjs = await GetOrdersAsync();
|
||||
logger.LogDebug("Начинаю процесс загрузки нарядов из ЕСПП");
|
||||
|
||||
if (esppObjs == null)
|
||||
return;
|
||||
|
||||
foreach (var item in esppObjs)
|
||||
try
|
||||
{
|
||||
using (var scope = serviceProvider.CreateScope())
|
||||
{
|
||||
var orderItemService = scope.ServiceProvider.GetService<IOrderItemService>();
|
||||
if (orderItemService == null)
|
||||
throw new Exception("Не смог получить серивс IOrderItemService, scope.ServiceProvider.GetService<IOrderItemService>()");
|
||||
var esppObjs = await GetOrdersAsync();
|
||||
|
||||
await orderItemService.WriteOrderAsync(item);
|
||||
if (esppObjs == null || !esppObjs.Any())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (var item in esppObjs)
|
||||
{
|
||||
using (var scope = serviceProvider.CreateScope())
|
||||
{
|
||||
var orderItemService = scope.ServiceProvider.GetService<IOrderItemService>();
|
||||
if (orderItemService == null)
|
||||
throw new Exception("Не смог получить сервис IOrderItemService, scope.ServiceProvider.GetService<IOrderItemService>()");
|
||||
|
||||
try
|
||||
{
|
||||
logger.LogDebug("Обработка наряда {OrderNumber}", item.Number);
|
||||
await orderItemService.WriteOrderAsync(item);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.LogError(
|
||||
ex,
|
||||
"Ошибка при обработке наряда {OrderNumber} из ЕСПП",
|
||||
item?.Number ?? "неизвестно");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
logger.LogDebug("Завершена обработка нарядов из ЕСПП");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.LogError(ex, "Критическая ошибка при загрузке нарядов из ЕСПП");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private async Task<IEnumerable<EsppOrder>?> GetOrdersAsync()
|
||||
{
|
||||
var searchQuery = new FindOrdersQuery
|
||||
{
|
||||
DescriptionContains = settingsFromDb.TemplatePrefixWithoutVariable,
|
||||
GenerateDateStart = DateTimeOffset.UtcNow.DateTime.Add(-settingsFromDb.OrderSearchDeltaDate),
|
||||
GenerateDateEnd = DateTimeOffset.UtcNow.DateTime
|
||||
};
|
||||
logger.LogDebug("Выполняю поиск нарядов в ЕСПП");
|
||||
|
||||
var downloadResult = await esppApiService.FindOrdersAsync(searchQuery);
|
||||
|
||||
if (!downloadResult.IsSuccess)
|
||||
try
|
||||
{
|
||||
logger.LogError(downloadResult.Exception, "Ошибка загрузки списка нарядов из ЕСПП");
|
||||
var searchQuery = new FindOrdersQuery
|
||||
{
|
||||
DescriptionContains = settingsFromDb.TemplatePrefixWithoutVariable,
|
||||
GenerateDateStart = DateTimeOffset.UtcNow.DateTime.Add(-settingsFromDb.OrderSearchDeltaDate),
|
||||
GenerateDateEnd = DateTimeOffset.UtcNow.DateTime
|
||||
};
|
||||
|
||||
var downloadResult = await esppApiService.FindOrdersAsync(searchQuery);
|
||||
|
||||
logger.LogDebug("Результат запроса к ЕСПП: IsSuccess={IsSuccess}, Data={Data}",
|
||||
downloadResult.IsSuccess,
|
||||
downloadResult.Data?.Count() ?? 0);
|
||||
|
||||
if (!downloadResult.IsSuccess)
|
||||
{
|
||||
logger.LogError(
|
||||
downloadResult.Exception,
|
||||
"Ошибка загрузки списка нарядов из ЕСПП. Ошибка: {ErrorMessage}",
|
||||
downloadResult.Exception?.Message);
|
||||
return null;
|
||||
}
|
||||
|
||||
var data = downloadResult.Data;
|
||||
var count = data?.Count() ?? 0;
|
||||
|
||||
if (data != null && count > 0)
|
||||
{
|
||||
logger.LogInformation("Успешно получено нарядов из ЕСПП: {Count}", count);
|
||||
}
|
||||
else
|
||||
{
|
||||
logger.LogDebug("Успешно выполнен запрос к ЕСПП, но наряды отсутствуют. Количество: {Count}", count);
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.LogError(ex, "Критическая ошибка при выполнении запроса на получение нарядов из ЕСПП");
|
||||
return null;
|
||||
}
|
||||
|
||||
logger.LogInformation($"Получено нарядов из ЕСПП: {downloadResult.Data?.Count()}");
|
||||
|
||||
return downloadResult.Data;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user