feat(dal): добавлен Shortcode "%СВЯЗИ-ПН%", добавлен метод GetAvailableShortcodesAsync для отображения доступных изменямеых частей в API

This commit is contained in:
Mikhail Kuznetsov
2025-12-10 11:55:58 +10:00
parent 2f07ccd67c
commit 3a136f5bf4
12 changed files with 294 additions and 53 deletions

View File

@@ -31,9 +31,40 @@ namespace PARR.DAL.Services.Implementations.Unit
public async Task<List<UnitInValue>> GetByUnitIdsAsync(IEnumerable<Guid> unitIds)
{
return await dataContext.UnitInValues.AsNoTracking()
.Include(t=>t.Value)
.Include(t => t.Value)
.Where(uv => unitIds.Contains(uv.UnitId))
.ToListAsync();
}
public async Task<Dictionary<string, string>> GetFieldValuesAsync(Guid unitId, IReadOnlyCollection<string> aihitNames)
{
if (aihitNames == null || aihitNames.Count == 0)
return new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
var result = await dataContext.UnitInValues
.AsNoTracking()
.AsSplitQuery()
.Where(uiv => uiv.UnitId == unitId
&& uiv.Field != null
&& uiv.Value != null
&& aihitNames.Contains(uiv.Field.AihitName.ToUpper()))
.ToDictionaryAsync(
uiv => uiv.Field!.AihitName.ToUpper(),
uiv => uiv.Value!.Value ?? "",
StringComparer.OrdinalIgnoreCase);
// Журналируем если не нашли поля
var missing = aihitNames
.Where(name => !result.ContainsKey(name.ToUpper()))
.ToList();
if (missing.Any())
{
logger.LogDebug("UnitInValueService: поля не найдены для unitId={UnitId}: {Fields}",
unitId, string.Join(", ", missing));
}
return result;
}
}
}