feat(bll,dal, templateDistributor): при получении рабочих дней по периоду, отсекаются дни выходящие за период
This commit is contained in:
@@ -16,6 +16,7 @@ namespace PARR.TemplateDistributor
|
||||
private readonly ICalendarService calendarService;
|
||||
private readonly IEsppScheduleTransformService esppScheduleTransformService;
|
||||
private readonly IWeekendDayService weekendDayService;
|
||||
private readonly INextRunModifierService nextRunModifierService;
|
||||
|
||||
public TemplateDistributor(
|
||||
ILogger<TemplateDistributor> logger,
|
||||
@@ -23,7 +24,8 @@ namespace PARR.TemplateDistributor
|
||||
IApplicationsInWorkService applicationsInWorkService,
|
||||
ICalendarService calendarService,
|
||||
IEsppScheduleTransformService esppScheduleTransformService,
|
||||
IWeekendDayService weekendDayService
|
||||
IWeekendDayService weekendDayService,
|
||||
INextRunModifierService nextRunModifierService
|
||||
)
|
||||
{
|
||||
this.logger = logger;
|
||||
@@ -32,6 +34,7 @@ namespace PARR.TemplateDistributor
|
||||
this.calendarService = calendarService;
|
||||
this.esppScheduleTransformService = esppScheduleTransformService;
|
||||
this.weekendDayService = weekendDayService;
|
||||
this.nextRunModifierService = nextRunModifierService;
|
||||
}
|
||||
|
||||
|
||||
@@ -228,7 +231,9 @@ namespace PARR.TemplateDistributor
|
||||
#endregion
|
||||
}
|
||||
else
|
||||
templates.ForEach(t => t.NextRun = appInWork!.ReferenceDate);
|
||||
// templates.ForEach(t => t.NextRun = appInWork!.ReferenceDate);
|
||||
// это не автораспределение, по ReferenceDate получаем ближайший рабочий день
|
||||
templates.ForEach(async t => t.NextRun = await nextRunModifierService.GetWorkDayAsync(appInWork!.ReferenceDate));
|
||||
|
||||
return templates;
|
||||
}
|
||||
@@ -281,7 +286,7 @@ namespace PARR.TemplateDistributor
|
||||
/// </summary>
|
||||
/// <param name="appInWork"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<List<DateOnly>> GetWorkDaysAsync(ApplicationsInWork appInWork)
|
||||
private async Task<List<DateOnly>> GetWorkDaysAsync(ApplicationsInWork appInWork)
|
||||
{
|
||||
var period = appInWork.EsppSchValues.FirstOrDefault()?.EsppSchTypeValue?.DistributionPeriod;
|
||||
var periodType = ParseDistributionPeriodType(period!.Type);
|
||||
@@ -303,6 +308,11 @@ namespace PARR.TemplateDistributor
|
||||
}
|
||||
});
|
||||
|
||||
//----- убираем даты, которые могли выйти за конец периода (из-за сдвига NextRun по рабочим дням)
|
||||
var endPeriod = calendarService.GetEndPeriodDate(startPeriod, periodType, period.Duration);
|
||||
result = result.Where(t => t <= endPeriod).ToList();
|
||||
//-----
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user