From 6e7d4e1fd48f6e9dba20498b2d23ee9e7dd91a4b Mon Sep 17 00:00:00 2001 From: Mikhail Kuznetsov Date: Thu, 11 Jul 2024 17:23:52 +1000 Subject: [PATCH] =?UTF-8?q?feat(templateDistributor):=20=D0=BE=D0=BF=D1=82?= =?UTF-8?q?=D0=B8=D0=BC=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20=D0=BB=D0=BE?= =?UTF-8?q?=D0=B3=D0=B8=D0=BA=D0=B8=20=D1=80=D0=B0=D0=B2=D0=BD=D0=BE=D0=BC?= =?UTF-8?q?=D0=B5=D1=80=D0=BD=D0=BE=D0=B3=D0=BE=20=D1=80=D0=B0=D1=81=D0=BF?= =?UTF-8?q?=D1=80=D0=B5=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B8=20=D0=BF=D0=B5=D1=80=D0=B8=D0=BE=D0=B4=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TemplateDistributor.cs | 45 ++++++++++++++----- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/PARR.TemplateDistributor/TemplateDistributor.cs b/PARR.TemplateDistributor/TemplateDistributor.cs index bd4cd3ae..2d8c935b 100644 --- a/PARR.TemplateDistributor/TemplateDistributor.cs +++ b/PARR.TemplateDistributor/TemplateDistributor.cs @@ -46,7 +46,7 @@ namespace PARR.TemplateDistributor // сохранить в БД //applicationInWorkId = Guid.Parse("bdfefd77-bce3-4f62-a484-5042c06f4467"); - var appInWork = await applicationsInWorkService.GetAsync(applicationInWorkId ); + var appInWork = await applicationsInWorkService.GetAsync(applicationInWorkId); // .Include(aiw => aiw.EsppSchValues) // .ThenInclude(esv => esv.EsppSchTypeValue) // .ThenInclude(etv => etv!.DistributionPeriod) @@ -70,18 +70,28 @@ namespace PARR.TemplateDistributor continue; //Обновляем сразу время при необходимости - values.ForEach(t=>{ + values.ForEach(t => + { if (t.NextRun.TimeOfDay != appInWork!.ReferenceDate.TimeOfDay) - t.NextRun = new DateTimeOffset(t.NextRun.DateTime, new TimeSpan(appInWork!.ReferenceDate.Hour, appInWork!.ReferenceDate.Minute, appInWork!.ReferenceDate.Second)); + //t.NextRun = new DateTimeOffset(t.NextRun.DateTime, new TimeSpan(//(appInWork!.ReferenceDate.Hour, appInWork!.ReferenceDate.Minute, appInWork!.ReferenceDate.Second)); + t.NextRun = new DateTimeOffset(t.NextRun.Year, t.NextRun.Month, t.NextRun.Day, + appInWork!.ReferenceDate.Hour, appInWork!.ReferenceDate.Minute, appInWork!.ReferenceDate.Second, + new TimeSpan(0, 0, 0)); }); + if (!await applicationsInWorkService.CommitAsync()) + { + logger.LogError($"Ошибка записи изменений в БД при актуализации времени NextRun шаблонов"); + return; + } + var distrTemplates = await DistributeTemplateAsync(values, applicationInWorkId, wgId); - } - // saveChanges - if (!await applicationsInWorkService.CommitAsync()) - logger.LogError($"Ошибка записи изменений в БД при перераспределении NextRun шаблонов"); + if (distrTemplates.Any()) + if (!await applicationsInWorkService.CommitAsync()) + logger.LogError($"Ошибка записи изменений в БД при перераспределении NextRun шаблонов"); + } } @@ -92,6 +102,7 @@ namespace PARR.TemplateDistributor .ThenInclude(esv => esv.EsppSchTypeValue) .ThenInclude(etv => etv!.DistributionPeriod) .FirstOrDefaultAsync(t => t.Id == applicationInWorkId); + var refDate = appInWork!.ReferenceDate; //Проверяем наличие распределения РР на период @@ -101,6 +112,10 @@ namespace PARR.TemplateDistributor .Include(t => t.Host) .Where(t => t.ApplicationInWorkId == applicationInWorkId && t.Host!.WorkGroupId == workGroupId) .ToListAsync(); + + //Удалим из входных шаблонов уже существующие в БД + templates.RemoveAll(t => existingTemplates.Any(et => et.Id == t.Id)); + //Если распределенная РР получаем начало var period = appInWork.EsppSchValues.FirstOrDefault()?.EsppSchTypeValue?.DistributionPeriod; var periodType = ParseDistributionPeriodType(period!.Type); @@ -115,7 +130,7 @@ namespace PARR.TemplateDistributor if (existingTemplates.Count > 0) templateToDistrib = GetTemplatesToDistribute(ref distrPlan, existingTemplates); - templateToDistrib.AddRange(templates.Where(t=>existingTemplates.Any(et=>et.Id==t.Id)==false)); + templateToDistrib.AddRange(templates); if (!templateToDistrib.Any()) return new List