feat(api): Обновил логику получения задания роботом для Расписания (nextRun, lastRun))

This commit is contained in:
Mikhail Trubnikov
2023-10-17 10:53:02 +10:00
parent 0eed4315ff
commit 26bd0a9a6b
10 changed files with 3143 additions and 61 deletions

View File

@@ -8,6 +8,7 @@ using PARR.API.Controllers.V1.Base;
using PARR.DAL.Contracts;
using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces;
using PARR.DAL.TransformServices;
namespace PARR.API.Controllers.V1
{
@@ -16,16 +17,19 @@ namespace PARR.API.Controllers.V1
private readonly IMapper mapper;
private readonly SettingsFromDb settingsFromDb;
private readonly IRobotConfigurationService robotConfigurationService;
private readonly IEsppScheduleTransformService esppScheduleTransformService;
public RobotTaskController(
IMapper mapper,
SettingsFromDb settingsFromDb,
IRobotConfigurationService robotConfigurationService
IRobotConfigurationService robotConfigurationService,
IEsppScheduleTransformService esppScheduleTransformService
)
{
this.mapper = mapper;
this.settingsFromDb = settingsFromDb;
this.robotConfigurationService = robotConfigurationService;
this.esppScheduleTransformService = esppScheduleTransformService;
}
@@ -114,6 +118,9 @@ namespace PARR.API.Controllers.V1
//RobotTaskTemplateResponse
return Ok(new Response<RobotTaskTemplateResponse>(mapper.Map<RobotTaskTemplateResponse>(task), true));
case RobotsEnum.ScheduleOrder:
// если был запрос на расписание, проверяем у него nextRun, lastRun, обновляем их
await UpdateLastNextRunDate(task);
//RobotTaskScheduleResponse
return Ok(new Response<RobotTaskScheduleResponse>(mapper.Map<RobotTaskScheduleResponse>(task), true));
default:
@@ -122,5 +129,19 @@ namespace PARR.API.Controllers.V1
return BadRequest();
}
private async Task UpdateLastNextRunDate(RobotConfiguration task)
{
var appInWorks = task.Template!.ApplicationsInWork!;
// передаем LastRun, если его нет, то NextRun
var nextRun = await esppScheduleTransformService.GetNextDateAsync(task.Template!.ApplicationInWorkId, task.Template.ApplicationsInWork!.LastRun ?? task.Template.ApplicationsInWork.NextRun);
appInWorks.LastRun = appInWorks.NextRun;
appInWorks.NextRun = nextRun;
await robotConfigurationService.CommitAsync();
}
}
}

View File

@@ -96,7 +96,7 @@ namespace PARR.API.Controllers.V1
/// <summary>
/// Изменить статус у шаблона по ИД (активировать/деактивировать)
/// </summary>
/// <param name="id"></param>
/// <param name="id">ИД шаблона</param>
/// <returns></returns>
[HttpPut(ApiRoutes.Template.ChangeState)]
public async Task<IActionResult> ChangeState([FromRoute] Guid id, [FromBody] TemplateChangeStateRequest request)