feat(all): исправления после добавления таблицы WorkGroup. Доработана логика генерации шаблонов с учетом рабочих групп
This commit is contained in:
@@ -18,13 +18,15 @@ namespace PARR.GeneratorTemplates.Services
|
||||
private readonly ILogger<TemplateManager> logger;
|
||||
private readonly SettingsFromDb settingsFromDb;
|
||||
private readonly IRobotConfigurationService robotConfigurationService;
|
||||
private readonly IApplicationsInWorkService applicationsInWorkService;
|
||||
|
||||
public TemplateManager(
|
||||
ITemplateService templateService,
|
||||
IHostService hostService,
|
||||
ILogger<TemplateManager> logger,
|
||||
SettingsFromDb settingsFromDb,
|
||||
IRobotConfigurationService robotConfigurationService
|
||||
IRobotConfigurationService robotConfigurationService,
|
||||
IApplicationsInWorkService applicationsInWorkService
|
||||
)
|
||||
{
|
||||
this.templateService = templateService;
|
||||
@@ -32,10 +34,24 @@ namespace PARR.GeneratorTemplates.Services
|
||||
this.logger = logger;
|
||||
this.settingsFromDb = settingsFromDb;
|
||||
this.robotConfigurationService = robotConfigurationService;
|
||||
this.applicationsInWorkService = applicationsInWorkService;
|
||||
}
|
||||
|
||||
public async Task CreateTemplates(GeneratorTemplateMq query)
|
||||
{
|
||||
//В таблице AppInWork находим РР, и смотрим ее рабочие группы. Затем по ним будем фильтровать хосты
|
||||
var appInWorkWg = await applicationsInWorkService.Get()
|
||||
.Include(t => t.WorkGroups)
|
||||
.FirstAsync(t => t.ApplicationId == query.ApplicationId && t.WorkId == query.WorkId);
|
||||
|
||||
if (!appInWorkWg.WorkGroups.Any())
|
||||
{
|
||||
logger.LogWarning($"Не генерирую шаблоны. Нет рабочих групп у ApplicationInWork с id: {appInWorkWg.Id}");
|
||||
return;
|
||||
}
|
||||
|
||||
var workGroups = appInWorkWg.WorkGroups.ToList();
|
||||
|
||||
//Согласно параметрам, находит все ЭК в таблице Hosts.
|
||||
//Далее проверяет есть ли такие шаблоны в таблице Templates, если нет, то создает, активирует и ставит статус Creating.
|
||||
//Если такие шаблоны уже есть, ничего с ними не делает.
|
||||
@@ -44,6 +60,7 @@ namespace PARR.GeneratorTemplates.Services
|
||||
|
||||
// список хостов для создания шаблонов
|
||||
var queryHosts = hostService.Get()
|
||||
//.Include(t => t.WorkGroupItem)
|
||||
.Include(t => t.ApplicationsInHosts)
|
||||
.ThenInclude(t => t.Application).ThenInclude(t => t!.ApplicationsInWorks).ThenInclude(w => w.Work)
|
||||
.Include(t => t.Templates)
|
||||
@@ -57,6 +74,8 @@ namespace PARR.GeneratorTemplates.Services
|
||||
&& EF.Functions.Like(t.Ek.ToLower(), ekPattern)
|
||||
// смотрим что нет такого шаблона
|
||||
&& t.Templates.Any(templ => templ.ApplicationsInWork!.WorkId == query.WorkId && templ.ApplicationsInWork.ApplicationId == query.ApplicationId) == false
|
||||
// смотрим что у этих хостов есть нужные группы
|
||||
//&& workGroups.Any(x => x.WorkGroupId == t.WorkGroupId)
|
||||
);
|
||||
|
||||
// статус ЭК
|
||||
@@ -67,6 +86,8 @@ namespace PARR.GeneratorTemplates.Services
|
||||
.AsSplitQuery()
|
||||
.ToListAsync();
|
||||
|
||||
// Исключаем хосты у которых нет нужных групп
|
||||
hosts = hosts.Where(t => workGroups.Any(x => x.WorkGroupId == t.WorkGroupId)).ToList();
|
||||
if (!hosts.Any())
|
||||
{
|
||||
logger.LogInformation($"Не найдено ЭК попадающих под условие: ${JsonSerializer.Serialize(query)}");
|
||||
@@ -112,6 +133,20 @@ namespace PARR.GeneratorTemplates.Services
|
||||
|
||||
public async Task DeactivateTemplates(GeneratorTemplateMq query)
|
||||
{
|
||||
//В таблице AppInWork находим РР, и смотрим ее рабочие группы. Затем по ним будем фильтровать хосты
|
||||
var appInWorkWg = await applicationsInWorkService.Get()
|
||||
.Include(t => t.WorkGroups)
|
||||
.FirstAsync(t => t.ApplicationId == query.ApplicationId && t.WorkId == query.WorkId);
|
||||
|
||||
if (!appInWorkWg.WorkGroups.Any())
|
||||
{
|
||||
logger.LogWarning($"Не деактивируем шаблоны. Нет рабочих групп у ApplicationInWork с id: {appInWorkWg.Id}");
|
||||
return;
|
||||
}
|
||||
|
||||
var workGroups = appInWorkWg.WorkGroups.ToList();
|
||||
|
||||
|
||||
//Ищет все активные шаблоны согласно параметрам в таблице Templates, и деактивирует их. Меняем на статус Updating
|
||||
|
||||
// делаем sql формат для like из запроса.
|
||||
@@ -136,6 +171,9 @@ namespace PARR.GeneratorTemplates.Services
|
||||
.AsSplitQuery()
|
||||
.ToListAsync();
|
||||
|
||||
// Исключаем хосты у которых нет нужных групп
|
||||
existTemplates = existTemplates.Where(t => workGroups.Any(x => x.WorkGroupId == t.Host.WorkGroupId)).ToList();
|
||||
|
||||
if (!existTemplates.Any())
|
||||
{
|
||||
logger.LogInformation("Нет шаблонов для деактивации");
|
||||
|
||||
Reference in New Issue
Block a user