feat(esppOrderLoader): доделал логику синхронизации

This commit is contained in:
Mikhail Trubnikov
2023-10-24 10:38:21 +10:00
parent a94a6460ce
commit 2dcae0239b
10 changed files with 2806 additions and 19 deletions

View File

@@ -1,5 +1,6 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces;
using PARR.EsppApi.Models;
@@ -10,25 +11,24 @@ namespace PARR.EsppOrderLoader.Services
private readonly ILogger<OrderItemService> logger;
private readonly IOrderService orderService;
private readonly ITemplateService templateService;
private readonly IOrderStatusService orderStatusService;
public OrderItemService(
ILogger<OrderItemService> logger,
IOrderService orderService,
ITemplateService templateService
ITemplateService templateService,
IOrderStatusService orderStatusService
)
{
this.orderService = orderService;
this.templateService = templateService;
this.orderStatusService = orderStatusService;
this.logger = logger;
}
public async Task WriteOrderAsync(EsppOrder esppOrder)
{
// В цикле проверяю каждый наряд, есть ли он в БД + по имени ищу есть ли такой шаблон
// Если наряда такого нет в БД и есть шаблон, добавляю в БД
// если в бд не добавляю, пишу в лог, что нет такого шаблона, в бд не добавляю
var existOrder = await orderService.Get().FirstOrDefaultAsync(t => t.Number.ToLower() == esppOrder.Number.ToLower());
if (existOrder != null)
{
@@ -36,15 +36,25 @@ namespace PARR.EsppOrderLoader.Services
return;
}
var template = await templateService.Get().FirstOrDefaultAsync(t => t.Name.ToLower() == esppOrder.ShortName.ToLower());
var template = await templateService.Get().FirstOrDefaultAsync(t => t.Name.ToLower() == esppOrder.TemplateName.ToLower());
if (template == null)
logger.LogWarning($"Не найден шаблон для наряда {esppOrder.Number}, краткое описание наряда: {esppOrder.ShortName}. {esppOrder.WorkGroup}");
var newOrder = new Order
{
logger.LogInformation($"Не найден шаблон для наряда {esppOrder.Number}, краткое описание наряда: {esppOrder.ShortName}. Пропускаю.");
return;
}
//todo: добавляю в БД!
Id = Guid.NewGuid(),
Number = esppOrder.Number,
WorkGroup = esppOrder.WorkGroup,
ShortName = esppOrder.ShortName,
TemplateId = template?.Id,
OrderStatusCode = (int)orderStatusService.GetOrderStatusByName(esppOrder.Status)
};
if (!await orderService.CreateAsync(newOrder) || !await orderService.CommitAsync())
logger.LogError($"Ошибка при добавлении новой записи наряда в БД. {esppOrder.Number}, {esppOrder.WorkGroup}, {esppOrder.ShortName}");
else
logger.LogInformation($"Добавлен наряд в БД: {esppOrder.Number}, {esppOrder.ShortName}");
}
}
}