fix(aihitRelationShips): добавлена проверка наличия уже уже существуюшей связи, событие случается если в списке имеются в наличии ЭК разного регистра
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user