using System.Collections.Generic; using System.Linq; using DeclarationAutomatization.Models; namespace DeclarationAutomatization.Services; public class Sheet3ExpandService { // Строит строки Листа3, разворачивая позиции по регистрационным номерам. // Группировка по ТН ВЭД: все рег. номера с таким же ТН ВЭД из СПРАВКИ. public List Expand( IEnumerable declarationItems, IEnumerable allSpravkaItems) { // Индекс: ТнВэд → уникальные (РегНомер, Дата) var regByTnVed = allSpravkaItems .Where(s => !string.IsNullOrWhiteSpace(s.RegNumber)) .GroupBy(s => s.TnVed) .ToDictionary( g => g.Key, g => g .Select(s => (s.RegNumber, s.RegDate)) .Distinct() .ToList() ); var result = new List(); foreach (var item in declarationItems) { if (regByTnVed.TryGetValue(item.TnVed, out var regPairs) && regPairs.Count > 0) { foreach (var (regNum, regDate) in regPairs) { result.Add(new Sheet3Row { SequentialNumber = item.SequentialNumber, ClassifierCode = "09035", RegNumber = regNum, RegDate = regDate, }); } } else { result.Add(new Sheet3Row { SequentialNumber = item.SequentialNumber, ClassifierCode = "09035", RegNumber = "", RegDate = "", }); } } return result; } }