feat(dal): ITemplateDistributorV2 - распределяет шаблоны с учетом часового пояса

This commit is contained in:
Mikhail Trubnikov
2026-02-10 15:50:30 +10:00
parent 897dd4c4e3
commit 7c8f8bbf97
7 changed files with 707 additions and 124 deletions

View File

@@ -14,20 +14,38 @@ namespace PARR.Test.NextRun
private readonly INextRunService nextRunService;
private readonly ITemplateService templateService;
private readonly IShortcodesService shortcodesService;
private readonly ITemplateDistributorV2 templateDistributorV2;
public NextRunTest(/*ITemplateDistributor templateDistributor, */INextRunService nextRunService, ITemplateService templateService, IShortcodesService shortcodesService)
public NextRunTest(
/*ITemplateDistributor templateDistributor, */
INextRunService nextRunService,
ITemplateService templateService,
IShortcodesService shortcodesService,
ITemplateDistributorV2 templateDistributorV2
)
{
//this.templateDistributor = templateDistributor;
this.nextRunService = nextRunService;
this.templateService = templateService;
this.shortcodesService = shortcodesService;
this.templateDistributorV2 = templateDistributorV2;
}
int periodDays = 10;
DateTimeOffset referenceDate = new DateTimeOffset(2025, 1, 20, 3, 0, 0, TimeSpan.Zero);
public async Task Test()
{
var duration = 10;
var offset = TimeSpan.FromHours(10);
var startDate = new DateOnly(2026, 2, 10);
var referenceDate = new DateTimeOffset(2026, 2, 10, 4, 0, 0, TimeSpan.Zero);
var templates = GetTemplates();
var distributedTemplates = await templateDistributorV2.DistributeTemplatesAsync(startDate, duration, referenceDate, offset, templates, true);
//var template = await templateService.Get().Include(t => t.Job).ThenInclude(t => t.Group).FirstAsync(t => t.Name == "ЭИТИ-ПАРРКИТВЦ_СХД ТО-1_СХД-AERODISK-432-2-4-U26-EN4SAG022-ГВЦ");
//var responseAreae = await shortcodesService.ApplyShortcodesAsync(template.Job.ResponseAreaMask, template);
//var nextRunWithTimezone = nextRunService.GetNextRunWithTimezoneEsppAndResponseArea(template.NextRun, template.Job?.Group?.IsResponseAreaTimezone, responseAreae);
@@ -117,14 +135,14 @@ namespace PARR.Test.NextRun
}
private DateOnly GetDateStart()
{
var today = DateOnly.FromDateTime(DateTime.UtcNow.Date);
//private DateOnly GetDateStart()
//{
// var today = DateOnly.FromDateTime(DateTime.UtcNow.Date);
var refDate = DateOnly.FromDateTime(referenceDate.Date);
// var refDate = DateOnly.FromDateTime(referenceDate.Date);
return today < refDate ? refDate : today;
}
// return today < refDate ? refDate : today;
//}
//private DateOnly GetDateEnd()
//{
@@ -143,7 +161,7 @@ namespace PARR.Test.NextRun
templates.Add(new TemplateNextRunDto(Id: Guid.Parse("B397F1FE-DF2B-4B50-B8D6-2DABECD3D5A1"), NextRun: new DateTimeOffset(2025, 12, 18, 3, 0, 0, TimeSpan.Zero)));
templates.Add(new TemplateNextRunDto(Id: Guid.Parse("619D9621-2B45-4108-AF54-CF96862A8E9B"), NextRun: new DateTimeOffset(2025, 12, 18, 3, 0, 0, TimeSpan.Zero)));
templates.Add(new TemplateNextRunDto(Id: Guid.Parse("D74D831C-D435-46BF-9B5F-A24884AAA7DC"), NextRun: new DateTimeOffset(2025, 12, 25, 3, 0, 0, TimeSpan.Zero)));
templates.Add(new TemplateNextRunDto(Id: Guid.Parse("DE7241F1-5C62-4164-A3DC-99B946350E10"), NextRun: new DateTimeOffset(2025, 12, 18, 3, 0, 0, TimeSpan.Zero)));
templates.Add(new TemplateNextRunDto(Id: Guid.Parse("DE7241F1-5C62-4164-A3DC-99B946350E10"), NextRun: new DateTimeOffset(2026, 2, 13, 4, 0, 0, TimeSpan.Zero)));
templates.Add(new TemplateNextRunDto(Id: Guid.Parse("94A7375E-D1BD-49B7-9186-D26E85F1CF74"), NextRun: new DateTimeOffset(2025, 12, 18, 3, 0, 0, TimeSpan.Zero)));
templates.Add(new TemplateNextRunDto(Id: Guid.Parse("B3681F5F-10A5-425C-BBEA-EA2B85FE0967"), NextRun: new DateTimeOffset(2025, 12, 18, 3, 0, 0, TimeSpan.Zero)));
templates.Add(new TemplateNextRunDto(Id: Guid.Parse("3259B408-48A3-4995-AF9A-097477ECAB81"), NextRun: new DateTimeOffset(2025, 12, 18, 3, 0, 0, TimeSpan.Zero)));