fix(core): Исправлена логика выдачи заданий роботам при множественном переименовании, можно брать шаблоны в статусах used и unused
This commit is contained in:
@@ -342,9 +342,9 @@ namespace PARR.Core.Services.RobotTask.Implementations
|
|||||||
).ToList();
|
).ToList();
|
||||||
|
|
||||||
// Проверим StatusTypeId у старых шаблонов в процессе переименования
|
// Проверим StatusTypeId у старых шаблонов в процессе переименования
|
||||||
// 1. Находим задачи переименования, у которых StatusTypeId шаблона != Used
|
// 1. Находим задачи переименования, у которых StatusTypeId шаблона НЕ является допустимым (!= Used и != Unused)
|
||||||
var invalidRenameTasks = allowedTasks
|
var invalidRenameTasks = allowedTasks
|
||||||
.Where(t => t.Template != null && t.Template.StatusTypeId != TemplateStatusTypeEnum.Used)
|
.Where(t => t.Template != null && t.Template.StatusTypeId != TemplateStatusTypeEnum.Used && t.Template.StatusTypeId != TemplateStatusTypeEnum.Unused)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
// 2. Создаем словарь для быстрого поиска и логирования: OldName -> StatusTypeId
|
// 2. Создаем словарь для быстрого поиска и логирования: OldName -> StatusTypeId
|
||||||
@@ -361,9 +361,9 @@ namespace PARR.Core.Services.RobotTask.Implementations
|
|||||||
g => g.First().Template!.StatusTypeId // Значение = StatusTypeId первой задачи в группе (для лога)
|
g => g.First().Template!.StatusTypeId // Значение = StatusTypeId первой задачи в группе (для лога)
|
||||||
);
|
);
|
||||||
|
|
||||||
// 3. Оставляем для подмены только те задачи, у которых StatusTypeId == Used
|
// 3. Оставляем для подмены только те задачи, у которых StatusTypeId является допустимым (== Used или == Unused)
|
||||||
var validAllowedTasks = allowedTasks
|
var validAllowedTasks = allowedTasks
|
||||||
.Where(t => t.Template != null && t.Template.StatusTypeId == TemplateStatusTypeEnum.Used)
|
.Where(t => t.Template != null && (t.Template.StatusTypeId == TemplateStatusTypeEnum.Used || t.Template.StatusTypeId == TemplateStatusTypeEnum.Unused))
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
// Формируем список заданий
|
// Формируем список заданий
|
||||||
@@ -371,7 +371,7 @@ namespace PARR.Core.Services.RobotTask.Implementations
|
|||||||
var errorTaskIdsSet = tasksToSetErrorStatus.ToHashSet();
|
var errorTaskIdsSet = tasksToSetErrorStatus.ToHashSet();
|
||||||
var errorCount = errorTaskIdsSet.Count;
|
var errorCount = errorTaskIdsSet.Count;
|
||||||
|
|
||||||
// Создаем словарь подмены ТОЛЬКО из валидных задач (где StatusTypeId == Used)
|
// Создаем словарь подмены ТОЛЬКО из валидных задач (где StatusTypeId == Used или Unused)
|
||||||
// ГРУППИРУЕМ по OldName и берем .First()!
|
// ГРУППИРУЕМ по OldName и берем .First()!
|
||||||
// Это реализует правило: "если записей несколько, берем из них первую и подменяем ей оригинальное задание".
|
// Это реализует правило: "если записей несколько, берем из них первую и подменяем ей оригинальное задание".
|
||||||
var renameTasksToDictionary = validAllowedTasks
|
var renameTasksToDictionary = validAllowedTasks
|
||||||
@@ -400,7 +400,7 @@ namespace PARR.Core.Services.RobotTask.Implementations
|
|||||||
{
|
{
|
||||||
_logger.LogWarning(
|
_logger.LogWarning(
|
||||||
"Задача для шаблона '{TemplateName}' (TaskId: {TaskId}) ИСКЛЮЧЕНА из выдачи. " +
|
"Задача для шаблона '{TemplateName}' (TaskId: {TaskId}) ИСКЛЮЧЕНА из выдачи. " +
|
||||||
"Связанный шаблон в процессе переименования имеет недопустимый StatusTypeId = {StatusTypeId} (ожидалось Used). " +
|
"Связанный шаблон в процессе переименования имеет недопустимый StatusTypeId = {StatusTypeId} (ожидалось Used или Unused). " +
|
||||||
"Исходная задача также не выполняется.",
|
"Исходная задача также не выполняется.",
|
||||||
task.TemplateName, task.TaskId, badStatusId);
|
task.TemplateName, task.TaskId, badStatusId);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user