fix(aihitRelationShips): добавлена проверка наличия уже уже существуюшей связи, событие случается если в списке имеются в наличии ЭК разного регистра

This commit is contained in:
Mikhail Kuznetsov
2025-06-02 16:26:15 +10:00
parent 8d23a9914f
commit 7b1c676507

View File

@@ -54,8 +54,7 @@ namespace PARR.AIHITRelationshipsSyncer.Services.Implementations
//Из данных АИХ ИТ получаем имена всех дочерних ЭК
var childsName = parrent.Where(t => t.ChildEk != parentName && t.ChildEk != null).Select(t => t.ChildEk);
//Убираем ЭК типа РПА-РОБИН-РЦКУ-СПИУИ-ИНФО-27-ГОР и РПА - РОБИН - РЦКУ - СПиУИ - ИНФО - 27 - ГОР
childsName = childsName.Select(t => t?.ToLower().Trim()).Distinct();
childsName = childsName.Select(t => t?.Trim()).Distinct();
//Проходим циклом по полученному списку для актуализации связей в полученном нами экземпляре Unit
var isChanged = await SyncChildSUnitAsync(unit, childsName);
@@ -113,7 +112,7 @@ namespace PARR.AIHITRelationshipsSyncer.Services.Implementations
var isChanged = false;
//удаляем лишние дочерние связи существующие только в БД
var childsToDelete = unit.ChildUnits.Where(t => !childsName.Any(a => t.ChildUnit?.Name.ToLower() == a!.ToLower().Trim()));
var childsToDelete = unit.ChildUnits.Where(t => !childsName.Any(a => t.ChildUnit?.Name.ToLower() == a!.ToLower()));
if (childsToDelete.Any())
{
DeleteChilds(unit, childsToDelete);
@@ -122,7 +121,7 @@ namespace PARR.AIHITRelationshipsSyncer.Services.Implementations
}
//проверяем отсутсвующие связи
var absentChildrens = childsName.Where(c => !unit.ChildUnits.Any(x => x.ChildUnit?.Name.ToLower() == c.ToLower().Trim()));
var absentChildrens = childsName.Where(c => !unit.ChildUnits.Any(x => x.ChildUnit?.Name.ToLower() == c?.ToLower()));
foreach (var absentChildren in absentChildrens)
{
var childUnit = await GetUnitByNameAsync(absentChildren!);
@@ -132,6 +131,10 @@ namespace PARR.AIHITRelationshipsSyncer.Services.Implementations
return false;
}
if (unit.ChildUnits.Any(x => x.ChildUnitId == childUnit.Id))
logger.LogWarning($"Попытка создать существующую связь для {unit.Name} - {childUnit.Name}");
else
{
unit.ChildUnits.Add(
new UnitInUnit
{
@@ -141,6 +144,7 @@ namespace PARR.AIHITRelationshipsSyncer.Services.Implementations
}
);
logger.LogInformation($"----- Создан связь Unit {unit.Name} - {childUnit.Name}-----");
}
if (!isChanged)
isChanged = true;