feat(api, nextRun): при изменении расписания в jobGroup, отправляется запрос на обновление nextRun в связанных шаблонах.

This commit is contained in:
Mikhail Trubnikov
2026-02-27 16:37:52 +10:00
parent 10bf68709b
commit a4f8e9eccc
9 changed files with 162 additions and 32 deletions

View File

@@ -71,7 +71,7 @@ namespace PARR.NextRun
return;
}
await UpdateNextRunAsync(query.JobGroupId);
await UpdateNextRunAsync(query);
}
/// <summary>
@@ -95,7 +95,7 @@ namespace PARR.NextRun
/// </summary>
/// <param name="jobGroupId"></param>
/// <returns></returns>
private async Task UpdateNextRunAsync(Guid jobGroupId)
private async Task UpdateNextRunAsync(NextRunUpdateMq queryMq)
{
using var scope = serviceProvider.CreateScope();
@@ -105,11 +105,11 @@ namespace PARR.NextRun
// Берем шаблоны только в статусе Used
var templates = await templateService.Get()
.Where(t =>
t.Job!.GroupId == jobGroupId
t.Job!.GroupId == queryMq.JobGroupId
&& t.StatusTypeId == TemplateStatusTypeEnum.Used
).ToListAsync();
logger.LogInformation("Найдено шаблонов {count} шт. в статусе Used в группе работ {jobGroupId}", templates.Count, jobGroupId);
logger.LogInformation("Найдено шаблонов {count} шт. в статусе Used в группе работ {jobGroupId}", templates.Count, queryMq.JobGroupId);
if (!templates.Any())
return;
@@ -145,18 +145,18 @@ namespace PARR.NextRun
if (updatedTemplates > 0)
{
if (await templateService.CommitAsync(new HistoryInitiator { InitiatorComment = "Запрос из очереди на перерасчет всех nextRun для jobGroupId", InitiatorParrComponentId = ParrComponentsEnum.NextRun }))
if (await templateService.CommitAsync(queryMq.Initiator))
{
logger.LogInformation("Успешно обновлены nextRun у {count} шаблонов, группа работ: {jobGroupId}", updatedTemplates, jobGroupId);
logger.LogInformation("Успешно обновлены nextRun у {count} шаблонов, группа работ: {jobGroupId}", updatedTemplates, queryMq.JobGroupId);
}
else
{
logger.LogError("При сохранении nextRun для шаблонов {count} шт, произошла ошибка при сохранении в БД. JobGroupId: {jobGroupId}", updatedTemplates, jobGroupId);
logger.LogError("При сохранении nextRun для шаблонов {count} шт, произошла ошибка при сохранении в БД. JobGroupId: {jobGroupId}", updatedTemplates, queryMq.JobGroupId);
}
}
else
{
logger.LogInformation("Для группы работ {jobGroupId}, все nextRun актуальны. Нечего обновлять.", jobGroupId);
logger.LogInformation("Для группы работ {jobGroupId}, все nextRun актуальны. Нечего обновлять.", queryMq.JobGroupId);
}
}
}