feat(dal,templateMatcher): уточнена логика UnitFilterService, в TemplateMatcher добавлены методы синхронизации и обновлению существующих шаблонов по группе
This commit is contained in:
@@ -4,6 +4,7 @@ using PARR.BLL.Domain.Mq;
|
||||
using PARR.BLL.Services.Interfaces;
|
||||
using PARR.Common.Domain;
|
||||
using PARR.Constants;
|
||||
using PARR.DAL.Contracts;
|
||||
using PARR.DAL.DomainServices.Interfaces;
|
||||
using PARR.DAL.Models;
|
||||
using PARR.DAL.Models.Job;
|
||||
@@ -14,6 +15,7 @@ using PARR.DAL.Services.Interfaces.Unit;
|
||||
using PARR.DAL.TransformServices;
|
||||
using PARR.TemplateMatcher.Services.Interfaces;
|
||||
using PARR.TemplateMatcher.Settings;
|
||||
using System.Configuration;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace PARR.TemplateMatcher.Services.Implementations;
|
||||
@@ -60,7 +62,8 @@ internal class GroupedTemplateSynchronizer : ITemplateSynchronizer
|
||||
IUnitFieldService unitFieldService,
|
||||
ITemplateDeactivator templateDeactivator,
|
||||
ITemplateNameNormalizer templateNameNormalizer,
|
||||
ITemplateUpdaterMqSender templateUpdaterMqSender
|
||||
ITemplateUpdaterMqSender templateUpdaterMqSender,
|
||||
SettingsFromDb settingsFromDb
|
||||
)
|
||||
{
|
||||
this.logger = logger;
|
||||
@@ -155,7 +158,7 @@ internal class GroupedTemplateSynchronizer : ITemplateSynchronizer
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
// ✅ Отладка: проверить, есть ли юнит в expectedUnitIds
|
||||
// Отладка: проверить, есть ли юнит в expectedUnitIds
|
||||
if (expectedUnitIds.Contains(targetUnitId))
|
||||
{
|
||||
logger.LogDebug("Юнит {TargetUnitId} найден в expectedUnitIds.", targetUnitId);
|
||||
@@ -191,7 +194,7 @@ internal class GroupedTemplateSynchronizer : ITemplateSynchronizer
|
||||
.ToHashSet();
|
||||
|
||||
#if DEBUG
|
||||
// ✅ Отладка: проверить, есть ли юнит в unitIdsWithValidGroupingFieldSet
|
||||
// Отладка: проверить, есть ли юнит в unitIdsWithValidGroupingFieldSet
|
||||
if (unitIdsWithValidGroupingFieldSet.Contains(targetUnitId))
|
||||
{
|
||||
logger.LogDebug("Юнит {TargetUnitId} найден в unitIdsWithValidGroupingFieldSet.", targetUnitId);
|
||||
@@ -223,7 +226,7 @@ internal class GroupedTemplateSynchronizer : ITemplateSynchronizer
|
||||
.ToHashSet(); // И снова в HashSet
|
||||
|
||||
#if DEBUG
|
||||
// ✅ Отладка: проверить, есть ли юнит в unitIdsWithValidWorkGroupFieldSet
|
||||
// Отладка: проверить, есть ли юнит в unitIdsWithValidWorkGroupFieldSet
|
||||
if (unitIdsWithValidWorkGroupFieldSet.Contains(targetUnitId))
|
||||
{
|
||||
logger.LogDebug("Юнит {TargetUnitId} найден в unitIdsWithValidWorkGroupFieldSet.", targetUnitId);
|
||||
@@ -257,7 +260,7 @@ internal class GroupedTemplateSynchronizer : ITemplateSynchronizer
|
||||
.ToListAsync();
|
||||
|
||||
#if DEBUG
|
||||
// ✅ Отладка: проверить, юнит участвует в potentialUnitInUnitLinks
|
||||
// Отладка: проверить, юнит участвует в potentialUnitInUnitLinks
|
||||
var potentialLinksContainingTarget = potentialUnitInUnitLinks.Where(l => l.ParentUnitId == targetUnitId || l.ChildUnitId == targetUnitId).ToList();
|
||||
if (potentialLinksContainingTarget.Any())
|
||||
{
|
||||
@@ -334,7 +337,7 @@ internal class GroupedTemplateSynchronizer : ITemplateSynchronizer
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
// ✅ Отладка: проверить, юнит участвует в filteredUnitInUnitLinks
|
||||
// Отладка: проверить, юнит участвует в filteredUnitInUnitLinks
|
||||
var filteredLinksContainingTarget = filteredUnitInUnitLinks.Where(l => l.ParentUnitId == targetUnitId || l.ChildUnitId == targetUnitId).ToList();
|
||||
if (filteredLinksContainingTarget.Any())
|
||||
{
|
||||
@@ -377,7 +380,7 @@ internal class GroupedTemplateSynchronizer : ITemplateSynchronizer
|
||||
logger.LogDebug("Сформировано {Count} групп по связанным юнитам до разрешения конфликтов.", groupedRelationships.Count);
|
||||
|
||||
#if DEBUG
|
||||
// ✅ Отладка: проверить, юнит есть в groupedRelationships.Values
|
||||
// Отладка: проверить, юнит есть в groupedRelationships.Values
|
||||
var allUnitsInGroups = groupedRelationships.Values.SelectMany(x => x).ToList();
|
||||
if (allUnitsInGroups.Contains(targetUnitId))
|
||||
{
|
||||
@@ -410,7 +413,7 @@ internal class GroupedTemplateSynchronizer : ITemplateSynchronizer
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
// ✅ Отладка: проверить, юнит есть в unitToKeys до поиска конфликтов
|
||||
// Отладка: проверить, юнит есть в unitToKeys до поиска конфликтов
|
||||
if (unitToKeys.ContainsKey(targetUnitId))
|
||||
{
|
||||
logger.LogDebug("Юнит {TargetUnitId} найден в unitToKeys до поиска конфликтов, находится в {Count} группах: [{Groups}]", targetUnitId, unitToKeys[targetUnitId].Count, string.Join(", ", unitToKeys[targetUnitId]));
|
||||
@@ -425,7 +428,7 @@ internal class GroupedTemplateSynchronizer : ITemplateSynchronizer
|
||||
var conflictedUnits = unitToKeys.Where(kvp => kvp.Value.Count > 1).ToList();
|
||||
|
||||
#if DEBUG
|
||||
// ✅ Отладка: проверить, юнит в conflictedUnits
|
||||
// Отладка: проверить, юнит в conflictedUnits
|
||||
var targetConflictedEntry = conflictedUnits.FirstOrDefault(c => c.Key == targetUnitId);
|
||||
if (targetConflictedEntry.Key != default)
|
||||
{
|
||||
@@ -468,7 +471,7 @@ internal class GroupedTemplateSynchronizer : ITemplateSynchronizer
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
// ✅ Отладка: проверить, юнит есть в groupedRelationships.Values после разрешения конфликтов
|
||||
// Отладка: проверить, юнит есть в groupedRelationships.Values после разрешения конфликтов
|
||||
var allUnitsInGroupsAfterConflictResolution = groupedRelationships.Values.SelectMany(x => x).ToList();
|
||||
if (allUnitsInGroupsAfterConflictResolution.Contains(targetUnitId))
|
||||
{
|
||||
@@ -503,7 +506,7 @@ internal class GroupedTemplateSynchronizer : ITemplateSynchronizer
|
||||
if (childUnitIds.Count == 0)
|
||||
continue;
|
||||
#if DEBUG
|
||||
// ✅ Отладка: проверить, есть ли ВРТ-AOS-05-ДВС в childUnitIds
|
||||
// Отладка: проверить, есть ли ВРТ-AOS-05-ДВС в childUnitIds
|
||||
var childUnitNames = childUnitIds.Select(id => unitService.Get().AsNoTracking().Where(u => u.Id == id).Select(u => u.Name).FirstOrDefaultAsync().GetAwaiter().GetResult() ?? id.ToString()).ToList();
|
||||
if (childUnitNames.Contains("ВРТ-AOS-05-ДВС"))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user