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