fix(core): NextRun расчет ЕСПП, исправлен метод регулярного расчета
This commit is contained in:
@@ -162,7 +162,7 @@ namespace PARR.Core.Services.NextRunServices.Subservices
|
||||
};
|
||||
|
||||
var key = values[0].Value.Value;
|
||||
if (!regDict.TryGetValue(key, out int regMinutes))
|
||||
if (!regDict.TryGetValue(key, out int regHours))
|
||||
{
|
||||
logger.LogError("Неизвестное значение: {Value}", key);
|
||||
throw new ArgumentException($"Неизвестное значение: {key}");
|
||||
@@ -175,7 +175,7 @@ namespace PARR.Core.Services.NextRunServices.Subservices
|
||||
////TODO: вот это повторяется от метода к методу
|
||||
////Если итоговая дата указывает на прошлое, то повторяем расчёт и уходим в рекурсию
|
||||
//if (calcDay < DateTimeOffset.UtcNow /* || calcDay <= referenceDate*/)
|
||||
// calcDay = GetNextDateRegularly(values, calcDay.AddHours(regMinutes));
|
||||
// calcDay = GetNextDateRegularly(values, calcDay.AddHours(regHours));
|
||||
|
||||
//return calcDay;
|
||||
|
||||
@@ -189,12 +189,12 @@ namespace PARR.Core.Services.NextRunServices.Subservices
|
||||
// Сразу вычисляем, сколько целых интервалов нужно прибавить, чтобы догнать текущее время.
|
||||
if (calcDay < nowInTargetZone)
|
||||
{
|
||||
double totalMinutesPast = (nowInTargetZone - calcDay).TotalMinutes;
|
||||
double totalHoursPast = (nowInTargetZone - calcDay).TotalHours;
|
||||
|
||||
// Считаем, сколько полных интервалов помещается в этот отрезок времени
|
||||
long intervalsToSkip = (long)Math.Ceiling(totalMinutesPast / regMinutes);
|
||||
long intervalsToSkip = (long)Math.Ceiling(totalHoursPast / regHours);
|
||||
|
||||
calcDay = calcDay.AddMinutes(intervalsToSkip * regMinutes);
|
||||
calcDay = calcDay.AddHours(intervalsToSkip * regHours);
|
||||
}
|
||||
|
||||
// Проверяем условия и делаем микро-шаги, если необходимо
|
||||
@@ -204,7 +204,7 @@ namespace PARR.Core.Services.NextRunServices.Subservices
|
||||
{
|
||||
return calcDay;
|
||||
}
|
||||
calcDay = calcDay.AddMinutes(regMinutes);
|
||||
calcDay = calcDay.AddHours(regHours);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user