fix(dal): EsppScheduleTransformService - исправлен сервис рассчета nextRun
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user