feat(dal): TemplateDistributer - добавлен параметр, учитывать или нет выходные и праздничные дни
This commit is contained in:
@@ -13,13 +13,14 @@ namespace PARR.DAL.NextRunServices.Subservices
|
||||
/// <param name="duration">Длительность распределения, дней</param>
|
||||
/// <param name="referenceDate">ReferenceDate</param>
|
||||
/// <param name="allTemplates">Спиоск шаблонов для распределения</param>
|
||||
/// <param name="excludeWeekends">Исключать выходные из распределения</param>
|
||||
/// <returns></returns>
|
||||
Task<List<TemplateNextRunResultDto>> DistributeTemplatesAsync(DateOnly startDate, int duration, DateTimeOffset referenceDate, List<TemplateNextRunDto> allTemplates);
|
||||
Task<List<TemplateNextRunResultDto>> DistributeTemplatesAsync(DateOnly startDate, int duration, DateTimeOffset referenceDate, List<TemplateNextRunDto> allTemplates, bool excludeWeekends);
|
||||
|
||||
/// <summary>
|
||||
/// Возвращает актуальную дату выполнения для одного шаблона, учитывая план нагрузки.
|
||||
/// Возвращает обновлённый шаблон с новой датой выполнения.
|
||||
/// </summary>
|
||||
Task<TemplateNextRunResultDto> GetValidNextRunForTemplateAsync(DateOnly startDate, int duration, DateTimeOffset referenceDate, TemplateNextRunDto targetTemplate, List<TemplateNextRunDto> allTemplates);
|
||||
Task<TemplateNextRunResultDto> GetValidNextRunForTemplateAsync(DateOnly startDate, int duration, DateTimeOffset referenceDate, TemplateNextRunDto targetTemplate, List<TemplateNextRunDto> allTemplates, bool excludeWeekends);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ namespace PARR.DAL.NextRunServices.Subservices
|
||||
}
|
||||
|
||||
|
||||
public Task<TemplateNextRunResultDto> GetValidNextRunForTemplateAsync(DateOnly startDate, int duration, DateTimeOffset referenceDate, TemplateNextRunDto targetTemplate, List<TemplateNextRunDto> allTemplates)
|
||||
public Task<TemplateNextRunResultDto> GetValidNextRunForTemplateAsync(DateOnly startDate, int duration, DateTimeOffset referenceDate, TemplateNextRunDto targetTemplate, List<TemplateNextRunDto> allTemplates, bool excludeWeekends)
|
||||
{
|
||||
//TODO:
|
||||
throw new NotImplementedException();
|
||||
@@ -35,7 +35,7 @@ namespace PARR.DAL.NextRunServices.Subservices
|
||||
|
||||
|
||||
|
||||
public async Task<List<TemplateNextRunResultDto>> DistributeTemplatesAsync(DateOnly startDate, int duration, DateTimeOffset referenceDate, List<TemplateNextRunDto> allTemplates)
|
||||
public async Task<List<TemplateNextRunResultDto>> DistributeTemplatesAsync(DateOnly startDate, int duration, DateTimeOffset referenceDate, List<TemplateNextRunDto> allTemplates, bool excludeWeekends)
|
||||
{
|
||||
var _startDate = GetStartPeriodDate(startDate, referenceDate);
|
||||
var _endDate = GetEndPeriodDate(_startDate, duration);
|
||||
@@ -43,11 +43,15 @@ namespace PARR.DAL.NextRunServices.Subservices
|
||||
logger.LogInformation("Начинаем распределение {Count} шаблонов на {duration} дней, с {_startDate} по {_endDate}. ReferenceDate: {referenceDate}", allTemplates.Count, duration, _startDate, _endDate, referenceDate);
|
||||
|
||||
// Получаем список выходных/праздничных дней
|
||||
var weekends = await GetWeekendsAsync(_startDate, _endDate);
|
||||
logger.LogDebug("Найдено не рабочих дней: {Count}", weekends.Count);
|
||||
var weekends = new HashSet<DateOnly>();
|
||||
if (excludeWeekends)
|
||||
{
|
||||
weekends = await GetWeekendsAsync(_startDate, _endDate);
|
||||
logger.LogDebug("Найдено не рабочих дней: {Count}", weekends.Count);
|
||||
|
||||
foreach (var weekend in weekends)
|
||||
logger.LogDebug("Не рабочий день: {weekend}", weekend);
|
||||
foreach (var weekend in weekends)
|
||||
logger.LogDebug("Не рабочий день: {weekend}", weekend);
|
||||
}
|
||||
|
||||
// Получаем список рабочих дней (исключая выходные и праздники)
|
||||
var workDays = GetWorkDays(_startDate, _endDate, weekends);
|
||||
|
||||
Reference in New Issue
Block a user