Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
Mikhail Trubnikov
2024-09-25 11:01:24 +10:00

View File

@@ -91,13 +91,13 @@ internal class TemplateActivator : ITemplateActivator
);
changes = await UpdateScheduleStateAsync(query, false);
break;
case TemplateActivatorActionsEnum.ActivateAllForAutoControl:
logger.LogInformation($"Получен запрос на активацию шаблонов и расписаний, для ЭК удовлетворяющим условиям автоконтроля");
changes = await CoordinateJobsWithAutoControl(applicationInWorkId, query, true);
break;
case TemplateActivatorActionsEnum.DeactivateAllForAutoControl:
logger.LogInformation($"Получен запрос на деактивацию шаблонов и расписаний, для ЭК неудовлетворяющим условиям автоконтроля");
changes = await CoordinateJobsWithAutoControl(applicationInWorkId, query, false);
changes = await CoordinateJobsWithAutoControlAsync(applicationInWorkId, query, false);
break;
case TemplateActivatorActionsEnum.ActivateAllForAutoControl:
logger.LogInformation($"Получен запрос на активацию шаблонов и расписаний, для ЭК удовлетворяющим условиям автоконтроля");
changes = await CoordinateJobsWithAutoControlAsync(applicationInWorkId, query, true);
break;
default:
break;
@@ -109,12 +109,15 @@ internal class TemplateActivator : ITemplateActivator
logger.LogDebug($"{GetType().Name} изменил состояние шаблонов/расписаний({changes}) регламентной работы Id {applicationInWorkId}");
}
private async Task<int> CoordinateJobsWithAutoControl(Guid applicationInWorkId, IQueryable<Template> query, bool isActivate)
private async Task<int> CoordinateJobsWithAutoControlAsync(Guid applicationInWorkId, IQueryable<Template> query, bool isActivate)
{
var changes = 0;
//Добавляем информацию о рабочих группах для возможности их фильтрации
query = query.Include(t => t.Host).ThenInclude(h => h!.WorkGroup);
//Получаем настройки авто-контроля
var jobAutoControlSettings = await GetJobAutoControlSettings(applicationInWorkId);
var jobAutoControlSettings = await GetJobAutoControlSettingsAsync(applicationInWorkId);
if (jobAutoControlSettings == null)
return 0;
@@ -129,9 +132,6 @@ internal class TemplateActivator : ITemplateActivator
//Фильтруем обратное состояние - активированные для деактивации
query = FilterTemplatesQueryByWrongState(query, jobAutoControlSettings, isActivate);
//Добавляем информацию о рабочих группах для возможности их фильтрации
query = query.Include(t => t.Host).ThenInclude(h => h!.WorkGroup);
//Фильтруем по маскам ЭК
var templates = FilterTemplatesByNameNotMatchToMasks(query, trueMasks);
@@ -159,7 +159,7 @@ internal class TemplateActivator : ITemplateActivator
{
var appInWorkInWorkGroups = applicationsInWorkService.Get()
.Include(aiw => aiw.WorkGroups)
.Where(x => x.Id == applicationInWorkId).Select(aiw => aiw.WorkGroups).FirstOrDefault();
.FirstOrDefault(t => t.Id == applicationInWorkId)?.WorkGroups;
if (appInWorkInWorkGroups != null)
return appInWorkInWorkGroups.ToList();
@@ -190,12 +190,12 @@ internal class TemplateActivator : ITemplateActivator
private IQueryable<Template> FilterTemplatesQueryByWrongState(IQueryable<Template> query, JobAutoControl jobAutoControlSettings, bool isActivate)
{
if (isActivate)
return query.Include(t => t.Host).Where(t => t.IsActiveTemplate != jobAutoControlSettings.OnTemplateIsActive || t.IsActiveSchedule != jobAutoControlSettings.OnScheduleIsActive);
return query.Where(t => t.IsActiveTemplate != jobAutoControlSettings.OnTemplateIsActive || t.IsActiveSchedule != jobAutoControlSettings.OnScheduleIsActive);
return query.Include(t => t.Host).Where(t => t.IsActiveTemplate != jobAutoControlSettings.OffTemplateIsActive || t.IsActiveSchedule != jobAutoControlSettings.OffScheduleIsActive);
return query.Where(t => t.IsActiveTemplate != jobAutoControlSettings.OffTemplateIsActive || t.IsActiveSchedule != jobAutoControlSettings.OffScheduleIsActive);
}
private async Task<JobAutoControl> GetJobAutoControlSettings(Guid applicationInWorkId)
private async Task<JobAutoControl> GetJobAutoControlSettingsAsync(Guid applicationInWorkId)
{
return await jobAutoControlService.Get()
.Include(jac => jac.JobAutoControlInEkStatuses)