feat(api,dal,esppSync,esppTemplateSync,esppScheduleSync): Реализован сервис ShortcodesService подменяющий динамические составляющие в полях шаблонов и расписаний. В API контроллер выдачи заданий роботу теперь выдаёт значение полй в новом виде, реализуя Shortcodes.

This commit is contained in:
Mikhail Kuznetsov
2025-08-06 10:33:55 +10:00
parent 46a96c666e
commit f351a8863a
11 changed files with 106 additions and 58 deletions

View File

@@ -11,6 +11,7 @@ using PARR.API.Services.Interfaces;
using PARR.Common.Domain;
using PARR.Constants;
using PARR.DAL.Contracts;
using PARR.DAL.DomainServices;
using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces;
using PARR.DAL.TransformServices;
@@ -27,6 +28,7 @@ namespace PARR.API.Controllers.V1
private readonly ILogger<RobotTaskController> logger;
private readonly IClientService clientService;
private readonly IRobotHistoryService robotHistoryService;
private readonly IShortcodesService shortcodesService;
public RobotTaskController(
IMapper mapper,
@@ -35,7 +37,8 @@ namespace PARR.API.Controllers.V1
IEsppScheduleTransformService esppScheduleTransformService,
ILogger<RobotTaskController> logger,
IClientService clientService,
IRobotHistoryService robotHistoryService
IRobotHistoryService robotHistoryService,
IShortcodesService shortcodesService
)
{
this.mapper = mapper;
@@ -45,6 +48,7 @@ namespace PARR.API.Controllers.V1
this.logger = logger;
this.clientService = clientService;
this.robotHistoryService = robotHistoryService;
this.shortcodesService = shortcodesService;
}
@@ -158,15 +162,29 @@ namespace PARR.API.Controllers.V1
{
case RobotsEnum.TemplateOrder:
//RobotTaskTemplateResponse
return Ok(new Response<RobotTaskTemplateResponse>(mapper.Map<RobotTaskTemplateResponse>(task), true));
var robotTaskTemplateResponse = mapper.Map<RobotTaskTemplateResponse>(task);
//TODO Вынести в отдельный метод ShortcodesService
if (shortcodesService.isAnyShortcodes(robotTaskTemplateResponse.FullDescription))
robotTaskTemplateResponse.FullDescription = await shortcodesService.ApplyShortcodesAsync(robotTaskTemplateResponse.FullDescription, task!.Template!.UnitId, task!.Template!.JobId);
if (shortcodesService.isAnyShortcodes(robotTaskTemplateResponse.ShortDescription))
robotTaskTemplateResponse.ShortDescription = await shortcodesService.ApplyShortcodesAsync(robotTaskTemplateResponse.ShortDescription, task!.Template!.UnitId, task!.Template!.JobId);
if (shortcodesService.isAnyShortcodes(robotTaskTemplateResponse.Solution))
robotTaskTemplateResponse.Solution = await shortcodesService.ApplyShortcodesAsync(robotTaskTemplateResponse.Solution, task!.Template!.UnitId, task!.Template!.JobId);
if (shortcodesService.isAnyShortcodes(robotTaskTemplateResponse.TnkName))
robotTaskTemplateResponse.TnkName = await shortcodesService.ApplyShortcodesAsync(robotTaskTemplateResponse.TnkName, task!.Template!.UnitId, task!.Template!.JobId);
if (shortcodesService.isAnyShortcodes(robotTaskTemplateResponse.WorkName))
robotTaskTemplateResponse.WorkName = await shortcodesService.ApplyShortcodesAsync(robotTaskTemplateResponse.WorkName, task!.Template!.UnitId, task!.Template!.JobId);
return Ok(new Response<RobotTaskTemplateResponse>(robotTaskTemplateResponse, true));
case RobotsEnum.ScheduleOrder:
// если был запрос на расписание, проверяем у него nextRun, lastRun, обновляем их
await UpdateLastNextRunDate(task);
//RobotTaskScheduleResponse
var response = mapper.Map<RobotTaskScheduleResponse>(task);
var robotTaskScheduleResponse = mapper.Map<RobotTaskScheduleResponse>(task);
return Ok(new Response<RobotTaskScheduleResponse>(response, true));
return Ok(new Response<RobotTaskScheduleResponse>(robotTaskScheduleResponse, true));
default:
break;
}