diff --git a/PARR.Core/Services/RobotTask/Implementations/RobotTaskService.cs b/PARR.Core/Services/RobotTask/Implementations/RobotTaskService.cs index 491aa1e6..d2b84d33 100644 --- a/PARR.Core/Services/RobotTask/Implementations/RobotTaskService.cs +++ b/PARR.Core/Services/RobotTask/Implementations/RobotTaskService.cs @@ -348,10 +348,18 @@ namespace PARR.Core.Services.RobotTask.Implementations .ToList(); // 2. Создаем словарь для быстрого поиска и логирования: OldName -> StatusTypeId + // Так как OldName не уникален, используем GroupBy, чтобы избежать ArgumentException, при наличии нескольких невалидных задач с одинаковым OldName. + //var invalidOldNamesWithStatus = invalidRenameTasks + // .Where(t => templateIdToOldName.ContainsKey(t.TemplateId)) + // .Select(t => new { OldName = templateIdToOldName[t.TemplateId], StatusTypeId = t.Template!.StatusTypeId }) + // .ToDictionary(x => x.OldName, x => x.StatusTypeId); var invalidOldNamesWithStatus = invalidRenameTasks .Where(t => templateIdToOldName.ContainsKey(t.TemplateId)) - .Select(t => new { OldName = templateIdToOldName[t.TemplateId], StatusTypeId = t.Template!.StatusTypeId }) - .ToDictionary(x => x.OldName, x => x.StatusTypeId); + .GroupBy(t => templateIdToOldName[t.TemplateId]) // Группируем по OldName + .ToDictionary( + g => g.Key, // Ключ = OldName + g => g.First().Template!.StatusTypeId // Значение = StatusTypeId первой задачи в группе (для лога) + ); // 3. Оставляем для подмены только те задачи, у которых StatusTypeId == Used var validAllowedTasks = allowedTasks @@ -404,7 +412,7 @@ namespace PARR.Core.Services.RobotTask.Implementations // Подменяем оригинальную задачу на ПЕРВУЮ валидную задачу переименования if (renameTasksToDictionary.TryGetValue(task.TemplateName, out var renameTask)) { - _logger.LogDebug( "ПОДМЕНА ЗАДАЧИ: Исходная [Id: {OriginalId}, Name: '{OriginalName}'] " + + _logger.LogDebug("ПОДМЕНА ЗАДАЧИ: Исходная [Id: {OriginalId}, Name: '{OriginalName}'] " + "-> Заменена на [Id: {NewId}, Name: '{NewName}']", task.TaskId, task.TemplateName, renameTask.TaskId, renameTask.TemplateName);