feat(esppOrderLoader): добавлен рассчет поля GenerateDate (время создания наряда)

This commit is contained in:
Mikhail Trubnikov
2023-10-25 12:40:33 +10:00
parent 477b11708f
commit a4c299646a
8 changed files with 5459 additions and 34 deletions

View File

@@ -36,7 +36,10 @@ namespace PARR.EsppOrderLoader.Services
return;
}
var template = await templateService.Get().FirstOrDefaultAsync(t => t.Name.ToLower() == esppOrder.TemplateName.ToLower());
var template = await templateService.Get()
.Include(t => t.ApplicationsInWork)
.FirstOrDefaultAsync(t => t.Name.ToLower() == esppOrder.TemplateName.ToLower());
if (template == null)
logger.LogWarning($"Не найден шаблон для наряда {esppOrder.Number}, краткое описание наряда: {esppOrder.ShortName}. {esppOrder.WorkGroup}");
@@ -47,7 +50,10 @@ namespace PARR.EsppOrderLoader.Services
WorkGroup = esppOrder.WorkGroup,
ShortName = esppOrder.ShortName,
TemplateId = template?.Id,
StatusCode = (int)orderStatusService.GetOrderStatusByName(esppOrder.Status)
StatusCode = (int)orderStatusService.GetOrderStatusByName(esppOrder.Status),
GenerateDate = template == null ?
null
: CalcGenerationDate(esppOrder.ExpirationDateUTC, template.ApplicationsInWork!.TemplateDuration)
};
if (!await orderService.CreateAsync(newOrder) || !await orderService.CommitAsync())
@@ -56,5 +62,25 @@ namespace PARR.EsppOrderLoader.Services
logger.LogInformation($"Добавлен наряд в БД: {esppOrder.Number}, {esppOrder.ShortName}");
}
private DateTimeOffset? CalcGenerationDate(DateTimeOffset expirationDateUTC, string templateDuration)
{
TimeSpan duration;
try
{
//ЕСПП кривоногие, они почему-то таймспан пишут так "7 00:00:00", а правильно так: "7:00:00:00"
var durationWithTimeSpanFormat = templateDuration.Replace(" ", ":");
duration = TimeSpan.Parse(durationWithTimeSpanFormat);
}
catch (Exception e)
{
logger.LogError(e, $"Ошибка при конвертации templateDuration в TimeSpan, исходное значение: {templateDuration}");
return null;
}
return expirationDateUTC.Add(-duration);
}
}
}