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