fix(dal): EsppScheduleTransformService - исправлен сервис рассчета nextRun

This commit is contained in:
Mikhail Trubnikov
2025-11-24 16:28:50 +10:00
parent 57a9df18c0
commit 1aabd3a844

View File

@@ -1,5 +1,6 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using PARR.Common;
using PARR.Constants;
using PARR.DAL.Contracts;
using PARR.DAL.DomainModels;
@@ -107,6 +108,10 @@ namespace PARR.DAL.TransformServices
nextRun = nextRunModifierService.GetWorkDayAsync(nextRun).GetAwaiter().GetResult();
// тут может быть 21 час по МСК, то это предыдущие сутки, нужно отнять 1 день
if (!DateResolver.IsCurrentDayRelativeMskTime(nextRun.Hour))
nextRun = nextRun.AddDays(-1);
return nextRun;
}
@@ -169,13 +174,13 @@ namespace PARR.DAL.TransformServices
var esppSchedule = await GetEsppScheduleAsync(jobGroupId);
if (jobGroup!.IsAutoDistributionEnabled)
{
var period = jobGroup.EsppSchValues.FirstOrDefault()?.EsppSchTypeValue?.DistributionPeriod;
var periodType = ParseDistributionPeriodType(period!.Type);
//if (jobGroup!.IsAutoDistributionEnabled)
//{
// var period = jobGroup.EsppSchValues.FirstOrDefault()?.EsppSchTypeValue?.DistributionPeriod;
// var periodType = ParseDistributionPeriodType(period!.Type);
return GetNextDateForDistributionRun(lastRun, periodType, period.Duration);
}
// return GetNextDateForDistributionRun(lastRun, periodType, period.Duration);
//}
return GetNextDate(esppSchedule, lastRun);
}
@@ -247,7 +252,9 @@ namespace PARR.DAL.TransformServices
{
var dwNum = dwDict[values[0].Value.Value];
var calcDay = new DateTimeOffset(DateTimeOffset.UtcNow.Year, DateTimeOffset.UtcNow.Month, DateTimeOffset.UtcNow.Day, lastRun.Hour, lastRun.Minute, lastRun.Second, lastRun.Offset);
var calcDay = new DateTimeOffset(lastRun.Year, lastRun.Month, lastRun.Day, lastRun.Hour, lastRun.Minute, lastRun.Second, lastRun.Offset);
if (lastRun < DateTimeOffset.UtcNow)
calcDay = new DateTimeOffset(DateTimeOffset.UtcNow.Year, DateTimeOffset.UtcNow.Month, DateTimeOffset.UtcNow.Day, lastRun.Hour, lastRun.Minute, lastRun.Second, lastRun.Offset);
if (((int)calcDay.DayOfWeek) != dwNum)
OffsetToDayOfWeek(dwNum, ref calcDay);
@@ -255,7 +262,8 @@ namespace PARR.DAL.TransformServices
//TODO: вот это повторяется от метода к методу
//Если итоговая дата указывает на прошлое, то повторяем расчёт и ухоим в рекурсию
if (calcDay < DateTimeOffset.UtcNow)
calcDay = calcDay.AddDays(7);//а вот тут что-то новенькое
calcDay = GetNextDateWeekly(values, calcDay.AddDays(7));//а вот тут что-то новенькое
return calcDay;
}
@@ -265,12 +273,16 @@ namespace PARR.DAL.TransformServices
{
int.TryParse(values[0].Value.Value, out int dayNum);
var calcDay = new DateTimeOffset(DateTimeOffset.UtcNow.Year, DateTimeOffset.UtcNow.Month, dayNum, lastRun.Hour, lastRun.Minute, lastRun.Second, lastRun.Offset);
var calcDay = new DateTimeOffset(lastRun.Year, lastRun.Month, dayNum, lastRun.Hour, lastRun.Minute, lastRun.Second, lastRun.Offset);
if (lastRun < DateTimeOffset.UtcNow)
calcDay = new DateTimeOffset(DateTimeOffset.UtcNow.Year, DateTimeOffset.UtcNow.Month, dayNum, lastRun.Hour, lastRun.Minute, lastRun.Second, lastRun.Offset);
//TODO: вот это повторяется от метода к методу
//Если итоговая дата указывает на прошлое, то повторяем расчёт и ухоим в рекурсию
if (calcDay < DateTimeOffset.UtcNow)
calcDay = calcDay.AddMonths(1);//и вот тут что-то новенькое
//todo: fixme
calcDay = GetNextDateMonthly(values, calcDay.AddMonths(1));//и вот тут что-то новенькое
return calcDay;
}
@@ -281,7 +293,10 @@ namespace PARR.DAL.TransformServices
var orderNum = orderDict[values[0].Value.Value];
var dwNum = dwDict[values[1].Value.Value];
var calcDay = new DateTimeOffset(DateTimeOffset.UtcNow.Year, DateTimeOffset.UtcNow.Month, 1, lastRun.Hour, lastRun.Minute, lastRun.Second, lastRun.Offset);
var calcDay = new DateTimeOffset(lastRun.Year, lastRun.Month, 1, lastRun.Hour, lastRun.Minute, lastRun.Second, lastRun.Offset);
if (lastRun < DateTimeOffset.UtcNow)
calcDay = new DateTimeOffset(DateTimeOffset.UtcNow.Year, DateTimeOffset.UtcNow.Month, 1, lastRun.Hour, lastRun.Minute, lastRun.Second, lastRun.Offset);
List<DateTimeOffset> daysList = FindAllDaysInMonth(dwNum, ref calcDay);
@@ -293,7 +308,7 @@ namespace PARR.DAL.TransformServices
//TODO: вот это повторяется от метода к методу
//Если итоговая дата указывает на прошлое, то повторяем расчёт и ухоим в рекурсию
if (calcDay < DateTimeOffset.UtcNow)
calcDay = GetNextDateAnnually2(values, calcDay);
calcDay = GetNextDateMonthly2(values, calcDay.AddMonths(1));
return calcDay;
}
@@ -309,7 +324,7 @@ namespace PARR.DAL.TransformServices
//TODO: вот это повторяется от метода к методу
//Если итоговая дата указывает на прошлое, то повторяем расчёт и ухоим в рекурсию
if (calcDay < DateTimeOffset.UtcNow)
calcDay = GetNextDateAnnually(values, calcDay);
calcDay = GetNextDateAnnually(values, calcDay.AddYears(1));
return calcDay;
}
@@ -349,7 +364,8 @@ namespace PARR.DAL.TransformServices
//TODO: вот это повторяется от метода к методу
//Если итоговая дата указывает на прошлое, то повторяем расчёт и ухоим в рекурсию
if (calcDay < DateTimeOffset.UtcNow)
calcDay = GetNextDateAnnually2(values, calcDay);
//calcDay = GetNextDateAnnually2(values, calcDay);
calcDay = GetNextDateAnnually2(values, calcDay.AddYears(1));
return calcDay;
}