feat(dal, templateMatcher): UnitFilterService теперь возвращает модель Dto а не только Id
This commit is contained in:
@@ -8,6 +8,7 @@ using PARR.DAL.Cache.Models;
|
||||
using PARR.DAL.Contracts;
|
||||
using PARR.DAL.DomainServices.Interfaces;
|
||||
using PARR.DAL.DomainServices.Shortcodes;
|
||||
using PARR.DAL.DomainServices.UnitFilterService;
|
||||
using PARR.DAL.Models;
|
||||
using PARR.DAL.Models.Job;
|
||||
using PARR.DAL.Services.Interfaces;
|
||||
@@ -137,8 +138,9 @@ internal class SimpleTemplateSynchronizer : ITemplateSynchronizer
|
||||
return;
|
||||
}
|
||||
|
||||
var unitIds = await unitFilterService.GetUnitsIdByJobFilterAsync(jobId);
|
||||
if (unitIds == null || !unitIds.Any())
|
||||
// === Получение отфильтрованных юнитов с полной информацией ===
|
||||
var filteredUnits = await unitFilterService.GetUnitsByJobFilterAsync(jobId);
|
||||
if (filteredUnits == null || !filteredUnits.Any())
|
||||
{
|
||||
logger.LogInformation("Для Job {JobId} фильтры не дали Unit'ов.", jobId);
|
||||
|
||||
@@ -162,6 +164,9 @@ internal class SimpleTemplateSynchronizer : ITemplateSynchronizer
|
||||
return;
|
||||
}
|
||||
|
||||
// Извлекаем ID юнитов для последующих операций
|
||||
var unitIds = filteredUnits.Select(u => u.Id).ToList();
|
||||
|
||||
#if DEBUG
|
||||
// Отладка: проверить, есть ли юнит в unitIds
|
||||
if (unitIds.Contains(targetUnitId))
|
||||
@@ -198,26 +203,6 @@ internal class SimpleTemplateSynchronizer : ITemplateSynchronizer
|
||||
.Where(t => !unitIds.Contains(t.UnitId))
|
||||
.ToList();
|
||||
|
||||
// === Подсчёт операций ===
|
||||
int toCreate = newUnitIds.Count;
|
||||
int toUpdate = 0;
|
||||
int toDeactivate = unusedTemplates.Count;
|
||||
|
||||
// Подсчёт обновлений по имени
|
||||
foreach (var template in existingUsedTemplates)
|
||||
{
|
||||
if (unitIds.Contains(template.UnitId))
|
||||
{
|
||||
var expectedName = await templateNameNormalizer.GetNormalizedTemplateNameAsync(template);
|
||||
if (!string.Equals(template.Name, expectedName, StringComparison.OrdinalIgnoreCase))
|
||||
toUpdate++;
|
||||
}
|
||||
}
|
||||
|
||||
await UpdateMatchingStatusAsync(jobId, $"Осталось: создать={toCreate}, обновить={toUpdate}, деактивировать={toDeactivate}");
|
||||
|
||||
// === Обработка новых юнитов ===
|
||||
int created = 0, updated = 0, deactivated = 0;
|
||||
foreach (var unitId in newUnitIds)
|
||||
{
|
||||
var reusableTemplate = await templateReuser.TryReuseOneUnusedTemplateAsync(jobId, unitId, initiator);
|
||||
@@ -262,8 +247,6 @@ internal class SimpleTemplateSynchronizer : ITemplateSynchronizer
|
||||
logger.LogDebug("Создание нового шаблона для Job {JobId}, UnitId {UnitId}.", jobId, unitId);
|
||||
await CreateSimpleTemplateAsync(jobId, unitId, initiator);
|
||||
}
|
||||
created++;
|
||||
await UpdateMatchingStatusAsync(jobId, $"Прогресс: создано={created}, обновлено={updated}, деактивировано={deactivated}. Осталось: создать={toCreate - created}, обновить={toUpdate - updated}, деактивировать={toDeactivate - deactivated}");
|
||||
}
|
||||
|
||||
// === Обработка существующих шаблонов (проверка имени) ===
|
||||
@@ -295,8 +278,6 @@ internal class SimpleTemplateSynchronizer : ITemplateSynchronizer
|
||||
};
|
||||
|
||||
await templateUpdaterMqSender.SendTemplateUpdateMessageAsync(updateRequest);
|
||||
updated++;
|
||||
await UpdateMatchingStatusAsync(jobId, $"Прогресс: создано={created}, обновлено={updated}, деактивировано={deactivated}. Осталось: создать={toCreate - created}, обновить={toUpdate - updated}, деактивировать={toDeactivate - deactivated}");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -306,8 +287,6 @@ internal class SimpleTemplateSynchronizer : ITemplateSynchronizer
|
||||
{
|
||||
logger.LogInformation("Деактивация лишнего шаблона {TemplateId} (Job {JobId}, UnitId {UnitId}).", unusedTemplate.Id, jobId, unusedTemplate.UnitId);
|
||||
await templateDeactivator.DeactivateTemplateAsync(unusedTemplate, initiator);
|
||||
deactivated++;
|
||||
await UpdateMatchingStatusAsync(jobId, $"Прогресс: создано={created}, обновлено={updated}, деактивировано={deactivated}. Осталось: создать={toCreate - created}, обновить={toUpdate - updated}, деактивировать={toDeactivate - deactivated}");
|
||||
}
|
||||
|
||||
// === Успешное завершение ===
|
||||
@@ -372,8 +351,9 @@ internal class SimpleTemplateSynchronizer : ITemplateSynchronizer
|
||||
return;
|
||||
}
|
||||
|
||||
var unitIds = await unitFilterService.GetUnitsIdByJobFilterAsync(jobId);
|
||||
if (unitIds == null || !unitIds.Any())
|
||||
// === Получение отфильтрованных юнитов с полной информацией ===
|
||||
var filteredUnits = await unitFilterService.GetUnitsByJobFilterAsync(jobId);
|
||||
if (filteredUnits == null || !filteredUnits.Any())
|
||||
{
|
||||
logger.LogInformation("Для Job {JobId} фильтры не дали Unit'ов.", jobId);
|
||||
await UpdateMatchingStatusAsync(jobId, "Нет Unit'ов — обновление не требуется");
|
||||
@@ -381,6 +361,9 @@ internal class SimpleTemplateSynchronizer : ITemplateSynchronizer
|
||||
return;
|
||||
}
|
||||
|
||||
// Извлекаем ID юнитов для последующих операций
|
||||
var unitIds = filteredUnits.Select(u => u.Id).ToList();
|
||||
|
||||
#if DEBUG
|
||||
// Отладка: проверить, есть ли юнит в unitIds
|
||||
if (unitIds.Contains(targetUnitId))
|
||||
|
||||
Reference in New Issue
Block a user