feat(esppOrderLoader): добавлен рассчет поля GenerateDate (время создания наряда)
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user