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