feat(api,esppScheduleSync): добавлена логика подстановки часового пояса рабочей группы ответственной за эк в расписании генератора
This commit is contained in:
@@ -12,11 +12,10 @@ using PARR.Common.Domain;
|
||||
using PARR.Constants;
|
||||
using PARR.DAL.Contracts;
|
||||
using PARR.DAL.DomainServices.Shortcodes;
|
||||
using PARR.DAL.DomainServices.Shortcodes.Models;
|
||||
using PARR.DAL.Models;
|
||||
using PARR.DAL.NextRunServices;
|
||||
using PARR.DAL.Services.Interfaces;
|
||||
using PARR.DAL.TransformServices;
|
||||
using PARR.DAL.Services.Interfaces.Schedule;
|
||||
|
||||
namespace PARR.API.Controllers.V1
|
||||
{
|
||||
@@ -32,6 +31,7 @@ namespace PARR.API.Controllers.V1
|
||||
private readonly IRobotHistoryService robotHistoryService;
|
||||
private readonly IShortcodesService shortcodesService;
|
||||
private readonly INextRunService nextRunService;
|
||||
private readonly IScheduleResponseAreaTimeOffsetService scheduleResponseAreaTimeOffsetService;
|
||||
|
||||
public RobotTaskController(
|
||||
IMapper mapper,
|
||||
@@ -42,7 +42,8 @@ namespace PARR.API.Controllers.V1
|
||||
IClientService clientService,
|
||||
IRobotHistoryService robotHistoryService,
|
||||
IShortcodesService shortcodesService,
|
||||
INextRunService nextRunService
|
||||
INextRunService nextRunService,
|
||||
IScheduleResponseAreaTimeOffsetService scheduleResponseAreaTimeOffsetService
|
||||
)
|
||||
{
|
||||
this.mapper = mapper;
|
||||
@@ -54,6 +55,7 @@ namespace PARR.API.Controllers.V1
|
||||
this.robotHistoryService = robotHistoryService;
|
||||
this.shortcodesService = shortcodesService;
|
||||
this.nextRunService = nextRunService;
|
||||
this.scheduleResponseAreaTimeOffsetService = scheduleResponseAreaTimeOffsetService;
|
||||
}
|
||||
|
||||
|
||||
@@ -198,38 +200,6 @@ namespace PARR.API.Controllers.V1
|
||||
{ //RobotTaskTemplateResponse
|
||||
var robotTaskTemplateResponse = mapper.Map<RobotTaskTemplateResponse>(task);
|
||||
|
||||
//TODO Вынести в отдельный метод ShortcodesService
|
||||
|
||||
// Построим TemplateForShortcodes из уже загруженного task.Template
|
||||
//var templateForShortcodes = new TemplateForShortcodes
|
||||
//{
|
||||
// Id = task.Template!.Id,
|
||||
// Index = task.Template.Index,
|
||||
// JobId = task.Template.JobId,
|
||||
// UnitId = task.Template.UnitId,
|
||||
// Job = task.Template.Job == null ? null : new JobForShortcodes
|
||||
// {
|
||||
// Group = task.Template.Job.Group == null ? null : new JobGroupForShortcodes
|
||||
// {
|
||||
// Id = task.Template.Job.Group.Id,
|
||||
// GroupingUnitFieldId = task.Template.Job.Group.GroupingUnitFieldId,
|
||||
// GroupType = task.Template.Job.Group.GroupType == null ? null : new JobGroupTypeForShortcodes
|
||||
// {
|
||||
// Code = task.Template.Job.Group.GroupType.Code
|
||||
// },
|
||||
// GroupName = task.Template.Job.Group.GroupName
|
||||
// },
|
||||
// Tnk = task.Template.Job.Tnk == null ? null : new TnkForShortcodes
|
||||
// {
|
||||
// Name = task.Template.Job.Tnk.Name,
|
||||
// ShortName = task.Template.Job.Tnk.ShortName ?? ""
|
||||
// },
|
||||
// WorkName = task.Template.Job.WorkName,
|
||||
// Name = task.Template.Job.Name
|
||||
// },
|
||||
// UnitsInTemplate = task.Template.UnitsInTemplate?.Select(uit => new UnitInTemplateForShortcodes { UnitId = uit.UnitId }).ToList() ?? new List<UnitInTemplateForShortcodes>()
|
||||
//};
|
||||
|
||||
//if (shortcodesService.IsAnyShortcodes(robotTaskTemplateResponse.FullDescription))
|
||||
robotTaskTemplateResponse.FullDescription = await shortcodesService.ApplyShortcodesAsync(robotTaskTemplateResponse.FullDescription, task.Template!);
|
||||
//if (shortcodesService.IsAnyShortcodes(robotTaskTemplateResponse.ShortDescription))
|
||||
@@ -253,39 +223,13 @@ namespace PARR.API.Controllers.V1
|
||||
//RobotTaskScheduleResponse
|
||||
var robotTaskScheduleResponse = mapper.Map<RobotTaskScheduleResponse>(task);
|
||||
|
||||
//// Построим TemplateForShortcodes из уже загруженного task.Template
|
||||
//var templateForShortcodes = new TemplateForShortcodes
|
||||
//{
|
||||
// Id = task.Template!.Id,
|
||||
// Index = task.Template.Index,
|
||||
// JobId = task.Template.JobId,
|
||||
// UnitId = task.Template.UnitId,
|
||||
// Job = task.Template.Job == null ? null : new JobForShortcodes
|
||||
// {
|
||||
// Group = task.Template.Job.Group == null ? null : new JobGroupForShortcodes
|
||||
// {
|
||||
// GroupingUnitFieldId = task.Template.Job.Group.GroupingUnitFieldId,
|
||||
// GroupType = task.Template.Job.Group.GroupType == null ? null : new JobGroupTypeForShortcodes
|
||||
// {
|
||||
// Code = task.Template.Job.Group.GroupType.Code
|
||||
// },
|
||||
// GroupName = task.Template.Job.Group.GroupName
|
||||
// },
|
||||
// Tnk = task.Template.Job.Tnk == null ? null : new TnkForShortcodes
|
||||
// {
|
||||
// Name = task.Template.Job.Tnk.Name,
|
||||
// ShortName = task.Template.Job.Tnk.ShortName
|
||||
// },
|
||||
// WorkName = task.Template.Job.WorkName,
|
||||
// Name = task.Template.Job.Name
|
||||
// },
|
||||
// UnitsInTemplate = task.Template.UnitsInTemplate?.Select(uit => new UnitInTemplateForShortcodes { UnitId = uit.UnitId }).ToList() ?? new List<UnitInTemplateForShortcodes>()
|
||||
//};
|
||||
robotTaskScheduleResponse.Timezone = await GetTimezoneForTemplateAsync(task.Template!);
|
||||
|
||||
//if (shortcodesService.IsAnyShortcodes(robotTaskScheduleResponse.WorkGroup))
|
||||
robotTaskScheduleResponse.WorkGroup = await shortcodesService.ApplyShortcodesAsync(robotTaskScheduleResponse.WorkGroup, task.Template!);
|
||||
robotTaskScheduleResponse.ResponseArea = await shortcodesService.ApplyShortcodesAsync(robotTaskScheduleResponse.ResponseArea, task.Template!);
|
||||
|
||||
|
||||
|
||||
return Ok(new Response<RobotTaskScheduleResponse>(robotTaskScheduleResponse, true));
|
||||
}
|
||||
default:
|
||||
@@ -387,5 +331,33 @@ namespace PARR.API.Controllers.V1
|
||||
return true;
|
||||
}
|
||||
|
||||
private async Task<string> GetTimezoneForTemplateAsync(Template template)
|
||||
{
|
||||
if (template.Job?.Group?.IsWorkGroupTimezone != true)
|
||||
return settingsFromDb.ScheduleTimezone;
|
||||
|
||||
var responseArea = template.Unit?.BaseFields?.ResponseArea;
|
||||
|
||||
if (string.IsNullOrEmpty(responseArea))
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
$"У шаблона Id={template.Id}, Name='{template.Name}' не задана ResponseArea в Unit.BaseFields, " +
|
||||
"но включена настройка 'использовать часовой пояс рабочей группы'.");
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user