fix(templateDistributor): изменена проверка шаблонов, у которых NextRun выходил за границы текущего периода. Это приводило к тому что часть шаблонов не перераспределялась и график был не равномерным
This commit is contained in:
@@ -41,7 +41,7 @@ namespace PARR.TemplateDistributor
|
|||||||
|
|
||||||
var templates = await templateService.Get()
|
var templates = await templateService.Get()
|
||||||
.Include(t => t.Host)
|
.Include(t => t.Host)
|
||||||
.ThenInclude(h => h.WorkGroup)
|
.ThenInclude(h => h!.WorkGroup)
|
||||||
.Where(t => t.ApplicationInWorkId == applicationInWorkId && t.Host!.WorkGroupId != null)
|
.Where(t => t.ApplicationInWorkId == applicationInWorkId && t.Host!.WorkGroupId != null)
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
@@ -146,7 +146,7 @@ namespace PARR.TemplateDistributor
|
|||||||
distrPlan[workDay.Key] -= templatesCountForCurDay;
|
distrPlan[workDay.Key] -= templatesCountForCurDay;
|
||||||
}
|
}
|
||||||
|
|
||||||
return templates;
|
return templateToDistrib;
|
||||||
|
|
||||||
#region comments
|
#region comments
|
||||||
|
|
||||||
@@ -273,19 +273,27 @@ namespace PARR.TemplateDistributor
|
|||||||
foreach (var wd in distributionPlan)
|
foreach (var wd in distributionPlan)
|
||||||
{
|
{
|
||||||
var templatesInWd = templates.Where(t => DateOnly.FromDateTime(t.NextRun.DateTime) == wd.Key).ToList();
|
var templatesInWd = templates.Where(t => DateOnly.FromDateTime(t.NextRun.DateTime) == wd.Key).ToList();
|
||||||
var templatesToDistribute = templatesInWd.Skip(wd.Value).Take(templatesInWd.Count - wd.Value).ToList();
|
|
||||||
|
|
||||||
distributionPlan[wd.Key] -= templatesInWd.Count;
|
if (templatesInWd.Any() && templatesInWd.Count > wd.Value)
|
||||||
|
{
|
||||||
result.AddRange(templatesToDistribute);
|
result.AddRange(templatesInWd.Skip(wd.Value).Take(templatesInWd.Count - wd.Value).ToList());
|
||||||
|
distributionPlan[wd.Key] -= wd.Value;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
distributionPlan[wd.Key] -= templatesInWd.Count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Определим шаблоны за границами рабочих дней. Их тоже необходимо перераспределить
|
||||||
var workDays = distributionPlan.Keys.ToList();
|
var workDays = distributionPlan.Keys.ToList();
|
||||||
var templateWithNextRunOut = templates.Where(t => !workDays.Contains(DateOnly.FromDateTime(t.NextRun.DateTime)));
|
var templateWithNextRunOut = templates.Where(t => workDays.All(w => w != DateOnly.FromDateTime(t.NextRun.DateTime))).ToList();
|
||||||
result.AddRange(templateWithNextRunOut);
|
|
||||||
|
if (templateWithNextRunOut.Any())
|
||||||
|
result.AddRange(templateWithNextRunOut);
|
||||||
|
|
||||||
|
if (result.Any())
|
||||||
|
//Обнулим nextRun
|
||||||
|
result.ForEach(t => t.NextRun = DateTimeOffset.MinValue);
|
||||||
|
|
||||||
//Обнулим nextRun
|
|
||||||
result.ForEach(t => t.NextRun = DateTimeOffset.MinValue);
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -311,7 +319,7 @@ namespace PARR.TemplateDistributor
|
|||||||
var templateDistributedCount = 0;//количество распределённых на текущий момент шаблонов
|
var templateDistributedCount = 0;//количество распределённых на текущий момент шаблонов
|
||||||
|
|
||||||
//Если количество шаблонов больше количества рабочих дней, то сразу распределяем их равным количеством по всем рабочим дням
|
//Если количество шаблонов больше количества рабочих дней, то сразу распределяем их равным количеством по всем рабочим дням
|
||||||
if (templateDistributedCount >= workDays.Count)
|
if (templateCount >= workDays.Count)
|
||||||
{
|
{
|
||||||
//количеством шаблонов на один рабочий день
|
//количеством шаблонов на один рабочий день
|
||||||
var mainPartTemplateCountToDistribute = templateCount / workDays.Count;
|
var mainPartTemplateCountToDistribute = templateCount / workDays.Count;
|
||||||
|
|||||||
Reference in New Issue
Block a user