From f10a50edaeb7519ac6eba56b2bf725851895ac37 Mon Sep 17 00:00:00 2001 From: Mikhail Trubnikov Date: Thu, 30 Jul 2026 10:07:56 +1000 Subject: [PATCH] =?UTF-8?q?fix(core):=20=D0=98=D1=81=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BB=D0=BE=D0=B3=D0=B8=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=B2=D1=8B=D0=B4=D0=B0=D1=87=D0=B8=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=B4=D0=B0=D0=BD=D0=B8=D0=B9=20=D1=80=D0=BE=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=D0=BC=20=D0=BF=D1=80=D0=B8=20=D0=BC=D0=BD=D0=BE=D0=B6?= =?UTF-8?q?=D0=B5=D1=81=D1=82=D0=B2=D0=B5=D0=BD=D0=BD=D0=BE=D0=BC=20=D0=BF?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=B8=D0=BC=D0=B5=D0=BD=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../RobotTask/Implementations/RobotTaskService.cs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) 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);