feat(aihitRelationshipsSyncer): логика синхронизации дочерней связти вынесена в отдельный метод

This commit is contained in:
Mikhail Kuznetsov
2025-05-27 16:45:45 +10:00
parent 2348e59c36
commit 04db085635

View File

@@ -47,31 +47,7 @@ namespace PARR.AIHITRelationshipsSyncer.Services.Implementations
{
//if (childName.ToLower() != "рпа-робин-рцку-спиуи-прочее-26-гор")
// continue;
//Ищем детей по имени
var child = unit.ChildUnits.FirstOrDefault(t => t.ChildUnit?.Name.ToLower() == childName!.ToLower().Trim());
//не нашли создаём и сразу пишем в базу, чтобы если попадуться дубликаты в списке они были созданы
if (child == null)
{
var childUnit = await GetUnitByNameAsync(childName!);
unit.ChildUnits.Add(
new UnitInUnit
{
ParentUnitId = unit.Id,
ChildUnitId = childUnit.Id,
DateCreated = DateTimeOffset.UtcNow,
DateSynced = DateTimeOffset.UtcNow
}
);
if (!await unitService.CommitAsync())
logger.LogError($"Не удалось создать связь Unit {unit.Name} с {childUnit.Name}");
else
logger.LogInformation($"----- Создана новая связь Unit {unit.Name} с {childUnit.Name} -----");
}
//Для всех обновляем дату синхронизации
else
child.DateSynced = DateTimeOffset.UtcNow;
await SyncChildUnit(unit, childName!);
}
//После проверки пришедших к нам из АИХ ИТ дочерних связей удаляем лишние/уже не существующие в базе
@@ -108,6 +84,35 @@ namespace PARR.AIHITRelationshipsSyncer.Services.Implementations
}
}
private async Task SyncChildUnit(Unit unit, string childName)
{
//Ищем детей по имени
var child = unit.ChildUnits.FirstOrDefault(t => t.ChildUnit?.Name.ToLower() == childName!.ToLower().Trim());
//Не нашли создаём и сразу пишем в базу, чтобы если попадуться дубликаты в списке они были созданы
if (child == null)
{
var childUnit = await GetUnitByNameAsync(childName!);
unit.ChildUnits.Add(
new UnitInUnit
{
ParentUnitId = unit.Id,
ChildUnitId = childUnit.Id,
DateCreated = DateTimeOffset.UtcNow,
DateSynced = DateTimeOffset.UtcNow
}
);
if (!await unitService.CommitAsync())
logger.LogError($"Не удалось создать связь Unit {unit.Name} с {childUnit.Name}");
else
logger.LogInformation($"----- Создана новая связь Unit {unit.Name} с {childUnit.Name} -----");
}
//Для всех обновляем дату синхронизации
else
child.DateSynced = DateTimeOffset.UtcNow;
}
/// <summary>
/// Удаление дочерних связей у ЭК
@@ -159,6 +164,7 @@ namespace PARR.AIHITRelationshipsSyncer.Services.Implementations
return await unitService.Get()
.Include(u => u.ChildUnits)
.ThenInclude(t=>t.ChildUnit)
.FirstAsync(u => u.Name.ToLower() == ekName.ToLower().Trim());
}
}