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