diff --git a/PARR.TemplateMatcher/TemplateMatcher.cs b/PARR.TemplateMatcher/TemplateMatcher.cs index 5113240b..0e8d2ac0 100644 --- a/PARR.TemplateMatcher/TemplateMatcher.cs +++ b/PARR.TemplateMatcher/TemplateMatcher.cs @@ -18,7 +18,10 @@ namespace PARR.TemplateMatcher internal class TemplateMatcher : ITemplateMatcher { private const int UnusedCandidateBatchSize = 10; - + private const bool DefaultUnusedTemplateState = false; + private const bool DefaultUnusedScheduleState = false; + private const bool DefaultUsedTemplateState = false; + private const bool DefaultUsedScheduleState = false; private readonly ILogger logger; private readonly IUnitFilterService unitFilterService; private readonly MqSettings mqSettings; @@ -61,7 +64,7 @@ namespace PARR.TemplateMatcher return; } - var job = await GetJobWithGroupAsync(jobId); + var job = await GetJobWithGroupAndAutoControlAsync(jobId); if (job == null) { logger.LogError("Job с Id {JobId} не найден.", jobId); @@ -103,8 +106,8 @@ namespace PARR.TemplateMatcher JobId = jobId, UnitId = template.UnitId, Name = template.Name, - IsActiveTemplate = false, - IsActiveSchedule = false, + IsActiveTemplate = DefaultUnusedTemplateState, + IsActiveSchedule = DefaultUnusedScheduleState, LastRun = template.LastRun, NextRun = template.NextRun, Index = template.Index, @@ -139,14 +142,16 @@ namespace PARR.TemplateMatcher var expectedName = await GetNormalizedTemplateNameAsync(job, unitId); var nextRun = await GetNextRunAsync(job); // новый шаблон → всегда пересчитываем + + var updateRequest = new TemplateUpdaterMq { TemplateId = reused.Id, JobId = jobId, UnitId = unitId, Name = expectedName, - IsActiveTemplate = false, - IsActiveSchedule = false, + IsActiveTemplate = job.AutoControl?.InitUsedTemplateState ?? DefaultUsedTemplateState, + IsActiveSchedule = job.AutoControl?.InitUsedScheduleState ?? DefaultUsedScheduleState, StatusTypeId = TemplateStatusTypeEnum.Used, Initiator = initiator, NextRun = nextRun @@ -237,7 +242,7 @@ namespace PARR.TemplateMatcher if (!existingTemplates.Any()) return; - var job = await GetJobWithGroupAsync(jobId); + var job = await GetJobWithGroupAndAutoControlAsync(jobId); if (job == null) return; var currentUnitIds = await GetExpectedUnitIdsAsync(jobId); @@ -264,8 +269,8 @@ namespace PARR.TemplateMatcher else { targetStatus = TemplateStatusTypeEnum.Unused; - targetIsActiveTemplate = false; - targetIsActiveSchedule = false; + targetIsActiveTemplate = DefaultUnusedTemplateState; + targetIsActiveSchedule = DefaultUnusedScheduleState; logger.LogInformation("Шаблон {TemplateId} (UnitId {UnitId}) → деактивация.", template.Id, template.UnitId); } @@ -399,10 +404,11 @@ namespace PARR.TemplateMatcher } - private async Task GetJobWithGroupAsync(Guid jobId) + private async Task GetJobWithGroupAndAutoControlAsync(Guid jobId) { return await jobService.Get() .Include(j => j.Group) + .Include(j => j.AutoControl) .FirstOrDefaultAsync(j => j.Id == jobId); }