diff --git a/PARR.GeneratorTemplates/Services/TemplateManager.cs b/PARR.GeneratorTemplates/Services/TemplateManager.cs
index 029c07ec..ffb9d258 100644
--- a/PARR.GeneratorTemplates/Services/TemplateManager.cs
+++ b/PARR.GeneratorTemplates/Services/TemplateManager.cs
@@ -108,6 +108,11 @@ namespace PARR.GeneratorTemplates.Services
var templates = CreateQueryTemplates(groupingHosts, query);
+ //проверяем, что нет шаблонов с такими именами, исключаем их
+ templates = await ExcludeExistTemplatesAsync(templates);
+ if (!templates.Any())
+ continue;
+
//заполняем NextRun
templates = await templateDistributor.DistributeTemplateAsync(templates, appInWorkWg.Id, (Guid)group.Key!);
@@ -174,6 +179,27 @@ namespace PARR.GeneratorTemplates.Services
#endregion
}
+ ///
+ /// Исключаем существующие шаблоны из запроса на создание
+ ///
+ ///
+ ///
+ private async Task> ExcludeExistTemplatesAsync(List templates)
+ {
+ // то ли костыль, то ли нет. Иногда попадают отфильтрованные шаблоны для создания, но они уже есть в БД. На всякий проверяем есть они или нет, и если есть, исключаем их из запроса.
+
+ // ищмем по имени такие шаблоны в БД и исключаем их
+ var existTemplates = await templateService.Get().Where(t => templates.Select(x => x.Name).Any(x => x == t.Name)).ToListAsync();
+
+ if (existTemplates.Any())
+ {
+ existTemplates.ForEach(item => logger.LogWarning($"Исключаем из запроса на создание шаблон, так как он уже есть в БД: {item.Name}"));
+ templates = templates.Where(t => !existTemplates.Any(x => x.Name == t.Name)).ToList();
+ }
+
+ return templates;
+ }
+
private List CreateQueryTemplates(List hosts, GeneratorTemplateMq query)
{
var templates = new List();