feat(api,bll,dal,esppScheduleSync,TemplateGenerator): изменен рассчет nextRun для задания роботу и синхронизатору, подставляется в зависимости от настроек ЗО и таймзоны УЗ робота ЕСПП. Переименование полей в БД
This commit is contained in:
@@ -8,6 +8,7 @@ using PARR.API.Contracts.V1.Responses;
|
||||
using PARR.API.Contracts.V1.Responses.Base;
|
||||
using PARR.API.Controllers.V1.Base;
|
||||
using PARR.API.Services.Interfaces;
|
||||
using PARR.BLL.Helpers;
|
||||
using PARR.Common.Domain;
|
||||
using PARR.Constants;
|
||||
using PARR.DAL.Contracts;
|
||||
@@ -200,17 +201,11 @@ namespace PARR.API.Controllers.V1
|
||||
{ //RobotTaskTemplateResponse
|
||||
var robotTaskTemplateResponse = mapper.Map<RobotTaskTemplateResponse>(task);
|
||||
|
||||
//if (shortcodesService.IsAnyShortcodes(robotTaskTemplateResponse.FullDescription))
|
||||
robotTaskTemplateResponse.FullDescription = await shortcodesService.ApplyShortcodesAsync(robotTaskTemplateResponse.FullDescription, task.Template!);
|
||||
//if (shortcodesService.IsAnyShortcodes(robotTaskTemplateResponse.ShortDescription))
|
||||
robotTaskTemplateResponse.ShortDescription = await shortcodesService.ApplyShortcodesAsync(robotTaskTemplateResponse.ShortDescription, task.Template!);
|
||||
//if (shortcodesService.IsAnyShortcodes(robotTaskTemplateResponse.Solution))
|
||||
robotTaskTemplateResponse.Solution = await shortcodesService.ApplyShortcodesAsync(robotTaskTemplateResponse.Solution, task.Template!);
|
||||
//if (shortcodesService.IsAnyShortcodes(robotTaskTemplateResponse.TnkName))
|
||||
robotTaskTemplateResponse.TnkName = await shortcodesService.ApplyShortcodesAsync(robotTaskTemplateResponse.TnkName, task.Template!);
|
||||
//if (shortcodesService.IsAnyShortcodes(robotTaskTemplateResponse.WorkName))
|
||||
robotTaskTemplateResponse.WorkName = await shortcodesService.ApplyShortcodesAsync(robotTaskTemplateResponse.WorkName, task.Template!);
|
||||
//if (shortcodesService.IsAnyShortcodes(robotTaskTemplateResponse.WorkGroup))
|
||||
robotTaskTemplateResponse.WorkGroup = await shortcodesService.ApplyShortcodesAsync(robotTaskTemplateResponse.WorkGroup, task.Template!);
|
||||
robotTaskTemplateResponse.ResponseArea = await shortcodesService.ApplyShortcodesAsync(robotTaskTemplateResponse.ResponseArea, task.Template!);
|
||||
|
||||
@@ -223,12 +218,15 @@ namespace PARR.API.Controllers.V1
|
||||
//RobotTaskScheduleResponse
|
||||
var robotTaskScheduleResponse = mapper.Map<RobotTaskScheduleResponse>(task);
|
||||
|
||||
robotTaskScheduleResponse.Timezone = await GetTimezoneForTemplateAsync(task.Template!);
|
||||
robotTaskScheduleResponse.Timezone = GetTimezoneForTemplate(task.Template!);
|
||||
|
||||
robotTaskScheduleResponse.WorkGroup = await shortcodesService.ApplyShortcodesAsync(robotTaskScheduleResponse.WorkGroup, task.Template!);
|
||||
robotTaskScheduleResponse.ResponseArea = await shortcodesService.ApplyShortcodesAsync(robotTaskScheduleResponse.ResponseArea, task.Template!);
|
||||
|
||||
var nextRunWithTimezone = nextRunService.GetNextRunWithTimezoneEsppAndResponseArea(task.Template!.NextRun, task.Template!.Job?.Group?.IsResponseAreaTimezone, robotTaskScheduleResponse.ResponseArea);
|
||||
|
||||
robotTaskScheduleResponse.NextStart = EsppScheduleHelpers.GetNextRun(nextRunWithTimezone);
|
||||
robotTaskScheduleResponse.GenerationTime = EsppScheduleHelpers.GetGenerationTime(nextRunWithTimezone);
|
||||
|
||||
return Ok(new Response<RobotTaskScheduleResponse>(robotTaskScheduleResponse, true));
|
||||
}
|
||||
@@ -240,6 +238,11 @@ namespace PARR.API.Controllers.V1
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Обоновить NextRun если он устарел
|
||||
/// </summary>
|
||||
/// <param name="task"></param>
|
||||
/// <returns></returns>
|
||||
private async Task UpdateLastNextRunDate(RobotConfiguration task)
|
||||
{
|
||||
var template = task.Template!;
|
||||
@@ -251,9 +254,6 @@ namespace PARR.API.Controllers.V1
|
||||
//var nextRun = await esppScheduleTransformService.GetNextDateAsync(template.Job!.GroupId, template.NextRun);
|
||||
#endregion
|
||||
|
||||
//пока у нас выключено автораспределение, считает по refDate
|
||||
//TODO: когда заработает автораспределение, будем думать!!!!!
|
||||
|
||||
//var nextRun = await esppScheduleTransformService.GetNextDateAsync(template.Job!.GroupId, template!.Job!.Group!.ReferenceDate);
|
||||
var nextRun = await nextRunService.GetNextRunForTemplateAsync(template.Id, false);
|
||||
|
||||
@@ -261,11 +261,6 @@ namespace PARR.API.Controllers.V1
|
||||
{
|
||||
logger.LogDebug($"Для шаблона id {template.Id} обновляю nextRun, новое значение {nextRun}, старое значение {template.NextRun}");
|
||||
|
||||
//if (template.NextRun < DateTimeOffset.UtcNow)
|
||||
//{
|
||||
// logger.LogDebug($"Для шаблона id {template.Id} обновляю lastRun, новое значение {template.NextRun}, старое значение {template.LastRun}");
|
||||
// template.LastRun = template.NextRun;
|
||||
//}
|
||||
template.LastRun = template.NextRun;
|
||||
template.NextRun = nextRun;
|
||||
|
||||
@@ -331,10 +326,17 @@ namespace PARR.API.Controllers.V1
|
||||
return true;
|
||||
}
|
||||
|
||||
private async Task<string> GetTimezoneForTemplateAsync(Template template)
|
||||
|
||||
/// <summary>
|
||||
/// Получить таймзону для шаблона
|
||||
/// </summary>
|
||||
/// <param name="template"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="InvalidOperationException"></exception>
|
||||
private string GetTimezoneForTemplate(Template template)
|
||||
{
|
||||
if (template.Job?.Group?.IsWorkGroupTimezone != true)
|
||||
return settingsFromDb.ScheduleTimezone;
|
||||
if (template.Job?.Group?.IsResponseAreaTimezone != true)
|
||||
return scheduleResponseAreaTimeOffsetService.GetDefault.EsppValue;
|
||||
|
||||
var responseArea = template.Unit?.BaseFields?.ResponseArea;
|
||||
|
||||
@@ -345,18 +347,7 @@ namespace PARR.API.Controllers.V1
|
||||
"но включена настройка 'использовать часовой пояс рабочей группы'.");
|
||||
}
|
||||
|
||||
var offsets = await scheduleResponseAreaTimeOffsetService
|
||||
.Get()
|
||||
.ToDictionaryAsync(t => t.ResponseArea, t => t.TimeOffset);
|
||||
|
||||
if (!offsets.TryGetValue(responseArea, out var offset))
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
$"Не найдено временное смещение для ResponseArea '{responseArea}' у шаблона Id={template.Id}, Name='{template.Name}'. " +
|
||||
"Проверьте наличие записи в таблице ScheduleResponseAreaTimeOffset.");
|
||||
}
|
||||
|
||||
return offset;
|
||||
return scheduleResponseAreaTimeOffsetService.GetByResponseAreaOrDefault(responseArea).EsppValue;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user