feat(api,bll,dal,esppScheduleSync,TemplateGenerator): изменен рассчет nextRun для задания роботу и синхронизатору, подставляется в зависимости от настроек ЗО и таймзоны УЗ робота ЕСПП. Переименование полей в БД

This commit is contained in:
Mikhail Trubnikov
2026-02-03 16:15:19 +10:00
parent c0210656d9
commit ead4653ad0
36 changed files with 13010 additions and 290 deletions

View File

@@ -17,8 +17,8 @@ using PARR.DAL.Contracts;
using PARR.DAL.DomainModels;
using PARR.DAL.DomainServices.Shortcodes;
using PARR.DAL.Models;
using PARR.DAL.NextRunServices;
using PARR.DAL.Services.Interfaces;
using System.Diagnostics;
namespace PARR.API.Controllers.V1
{
@@ -35,6 +35,7 @@ namespace PARR.API.Controllers.V1
private readonly ILogger<TemplateController> logger;
private readonly IShortcodesService shortcodesService;
private readonly IOrderService orderService;
private readonly INextRunService nextRunService;
public TemplateController(
IMapper mapper,
@@ -43,7 +44,8 @@ namespace PARR.API.Controllers.V1
IClientService clientService,
ILogger<TemplateController> logger,
IShortcodesService shortcodesService,
IOrderService orderService
IOrderService orderService,
INextRunService nextRunService
)
{
this.mapper = mapper;
@@ -53,6 +55,7 @@ namespace PARR.API.Controllers.V1
this.logger = logger;
this.shortcodesService = shortcodesService;
this.orderService = orderService;
this.nextRunService = nextRunService;
}
@@ -135,7 +138,7 @@ namespace PARR.API.Controllers.V1
var templatesDict = templates.ToDictionary(t => t.Id);
var templateResponseDict = templateResponse.ToDictionary(t => t.Id);
#region Заполняем шорткоды
#region Заполняем шорткоды и NextRunWithResponseAreaOffset
if (filter.ApplyShortcode == true)
{
//sw.Restart();
@@ -143,6 +146,7 @@ namespace PARR.API.Controllers.V1
{
//await ApplyTemplateShortcodesAsync(responseItem, templates.First(t => t.Id == responseItem.Id));
await ApplyTemplateShortcodesAsync(responseItem, templatesDict[responseItem.Id]);
FillNextRunWithResponseAreaOffset(responseItem);
}
//logger.LogDebug("Получение шорткодов: {ElapsedMs} мс", sw.ElapsedMilliseconds);
//sw.Stop();
@@ -187,6 +191,7 @@ namespace PARR.API.Controllers.V1
var response = mapper.Map<TemplateResponse>(template);
await ApplyTemplateShortcodesAsync(response, template);
FillNextRunWithResponseAreaOffset(response);
var ordersCountResult = await GetOrdersCountAsync(new List<Guid> { response.Id });
response.OrderCount = ordersCountResult.Count > 0 ? ordersCountResult.First().Value : 0;
@@ -280,6 +285,7 @@ namespace PARR.API.Controllers.V1
var response = mapper.Map<TemplateListResponse>(templateToResponse);
await ApplyTemplateShortcodesAsync(response, templateToResponse);
FillNextRunWithResponseAreaOffset(response);
var ordersCountResult = await GetOrdersCountAsync(new List<Guid> { response.Id });
response.OrderCount = ordersCountResult.Count > 0 ? ordersCountResult.First().Value : 0;
@@ -324,5 +330,17 @@ namespace PARR.API.Controllers.V1
return templateWithOrders.ToDictionary(t => t.TemplateId!.Value, t => t.OrderCount);
}
/// <summary>
/// Заполнить NextRunWithResponseAreaOffset
/// </summary>
/// <param name="response"></param>
private void FillNextRunWithResponseAreaOffset(TemplateBaseResponse response)
{
response.NextRunWithResponseAreaOffset = response.IsResponseAreaTimezone && !string.IsNullOrEmpty(response.ResponseArea)
? nextRunService.GetNextRunWithResponseAreaOffset(response.NextRun, response.ResponseArea)
: response.NextRun;
}
}
}