feat(dal,templateMatcher): добавлена сортировка связанных юнитов группированного типа групп работ

This commit is contained in:
Mikhail Kuznetsov
2026-01-12 15:28:28 +10:00
parent ba465f4b26
commit 0925c97e6b
2 changed files with 55 additions and 27 deletions

View File

@@ -136,7 +136,7 @@ namespace PARR.DAL.DomainServices.Shortcodes
resultName = await ReplaceLettersShortcodesAsync(template.UnitId, resultName, lettersShortcodes);
}
// 2.7. %ГРОЛЕ-ПН% — нумерованный список UnitsInTemplate с GroupingUnitFieldId
// 2.7. %ГРОЛЕ-ПН% — нумерованный список UnitsInTemplate с GroupingUnitFieldId, отсортированный по имени юнита
if (shortcodesInMask.Any(m => string.Equals(m.Value, "%ГРОЛЕ-ПН%", StringComparison.OrdinalIgnoreCase)))
{
var unitsInTemplate = template.UnitsInTemplate;
@@ -154,6 +154,9 @@ namespace PARR.DAL.DomainServices.Shortcodes
.Where(u => unitIds.Contains(u.Id))
.ToListAsync();
// Словарь: UnitId -> Unit (для быстрого поиска)
var unitDict = units.ToDictionary(u => u.Id, u => u);
var groupingFieldId = job.Group?.GroupingUnitFieldId;
Dictionary<Guid, string> valuesByUnit = new();
@@ -161,7 +164,6 @@ namespace PARR.DAL.DomainServices.Shortcodes
{
var fieldValues = await unitInValueService.Get()
.AsNoTracking()
//.AsSplitQuery()
.Include(uv => uv.Value)
.Where(uv =>
uv.FieldId == groupingFieldId.Value &&
@@ -179,10 +181,15 @@ namespace PARR.DAL.DomainServices.Shortcodes
);
}
var lines = unitsInTemplate
// Сортируем UnitsInTemplate по имени юнита
var sortedUnitsInTemplate = unitsInTemplate
.OrderBy(uit => unitDict.TryGetValue(uit.UnitId, out var unit) ? unit.Name : $"(UnitId={uit.UnitId})")
.ToList();
var lines = sortedUnitsInTemplate
.Select((uit, indexInList) =>
{
var unitInList = units.FirstOrDefault(u => u.Id == uit.UnitId);
var unitInList = unitDict.TryGetValue(uit.UnitId, out var unit) ? unit : null;
var unitName = unitInList?.Name ?? $"(UnitId={uit.UnitId})";
var valuesStr = valuesByUnit.TryGetValue(uit.UnitId, out var vals) ? vals : "";
return $"{indexInList + 1}. {unitName} ({valuesStr})";