feat(api, dal, activator, distributor): RobotConfigurationService - добавлена логика, статус Updating шаблону можно поставить если у него есть ScheduleEsppId.

This commit is contained in:
Mikhail Trubnikov
2026-03-13 10:22:13 +10:00
parent b9d1f923b3
commit 94d277109d
4 changed files with 37 additions and 8 deletions

View File

@@ -225,7 +225,8 @@ namespace PARR.API.Controllers.V1
template.IsActiveTemplate = request.IsActiveTemplate; template.IsActiveTemplate = request.IsActiveTemplate;
//необходимо обновить шаблон //необходимо обновить шаблон
var config = robotConfigurationService.GetFromTemplateByRobotCode(RobotsEnum.TemplateOrder, template); var config = robotConfigurationService.GetFromTemplateByRobotCode(RobotsEnum.TemplateOrder, template);
robotConfigurationService.ChangeTaskStatus(TaskStatusEnum.Updating, config); //robotConfigurationService.ChangeTaskStatus(TaskStatusEnum.Updating, config);
robotConfigurationService.SetUpdateTaskStatusIfAllow(config);
} }
if (template.IsActiveSchedule != request.IsActiveSchedule) if (template.IsActiveSchedule != request.IsActiveSchedule)
@@ -233,7 +234,8 @@ namespace PARR.API.Controllers.V1
template.IsActiveSchedule = request.IsActiveSchedule; template.IsActiveSchedule = request.IsActiveSchedule;
//необходимо обновить расписание //необходимо обновить расписание
var config = robotConfigurationService.GetFromTemplateByRobotCode(RobotsEnum.ScheduleOrder, template); var config = robotConfigurationService.GetFromTemplateByRobotCode(RobotsEnum.ScheduleOrder, template);
robotConfigurationService.ChangeTaskStatus(TaskStatusEnum.Updating, config); //robotConfigurationService.ChangeTaskStatus(TaskStatusEnum.Updating, config);
robotConfigurationService.SetUpdateTaskStatusIfAllow(config);
} }
if (!await templateService.CommitAsync(new HistoryInitiator { InitiatorComment = "Изменён статус шаблона/расписания", InitiatorIp = clientService.GetClientIp()?.ToString(), InitiatorParrComponentId = ParrComponentsEnum.Api })) if (!await templateService.CommitAsync(new HistoryInitiator { InitiatorComment = "Изменён статус шаблона/расписания", InitiatorIp = clientService.GetClientIp()?.ToString(), InitiatorParrComponentId = ParrComponentsEnum.Api }))

View File

@@ -58,6 +58,25 @@ namespace PARR.DAL.Services.Implementations
return false; return false;
} }
// Если хотим поставить Updating у шаблона, можно ставить только в том случае, если у шаблона уже есть ScheduleEsppId
if (configuration.RobotCode == (int)RobotsEnum.TemplateOrder)
{
// есть ли связь у config с templetes, может инклуда нет, мало ли
if (configuration.Template == null)
{
logger.LogWarning("При изменении статуса задания на обновление шаблона, не смог проверить наличае ScheduleEsppId, так как нет Include с Templates. Пропустил эту проверку. configurationId: {configurationId}", configuration.Id);
}
else
{
if (configuration.Template.ScheduleEsppId == null)
{
logger.LogInformation("Нельзя установить статус {newStatus} для конфигурации {configurationId}, templateId: {templateId}, так как у шаблона отсутсвтует ScheduleEsppId=null",
updatingStatus, configuration.Id, configuration.TemplateId);
return false;
}
}
}
// Статус ОК, можно ставить Updating // Статус ОК, можно ставить Updating
ChangeTaskStatus(updatingStatus, configuration); ChangeTaskStatus(updatingStatus, configuration);
logger.LogInformation("Установлен статус {newStatus} для конфигурации {configurationId}, templateId: {templateId}", updatingStatus, configuration.Id, configuration.TemplateId); logger.LogInformation("Установлен статус {newStatus} для конфигурации {configurationId}, templateId: {templateId}", updatingStatus, configuration.Id, configuration.TemplateId);

View File

@@ -45,16 +45,22 @@ internal class TemplateActivator : ITemplateActivator
case TemplateActivatorEsppObjectTypesEnum.Template: case TemplateActivatorEsppObjectTypesEnum.Template:
foreach (var template in templates) foreach (var template in templates)
{ {
template.IsActiveTemplate = query.NewState; if (template.IsActiveTemplate != query.NewState)
UpdateRobotConfiguration(RobotsEnum.TemplateOrder, template); {
template.IsActiveTemplate = query.NewState;
UpdateRobotConfiguration(RobotsEnum.TemplateOrder, template);
}
} }
break; break;
case TemplateActivatorEsppObjectTypesEnum.Schedule: case TemplateActivatorEsppObjectTypesEnum.Schedule:
foreach (var template in templates) foreach (var template in templates)
{ {
template.IsActiveSchedule = query.NewState; if (template.IsActiveSchedule != query.NewState)
UpdateRobotConfiguration(RobotsEnum.ScheduleOrder, template); {
template.IsActiveSchedule = query.NewState;
UpdateRobotConfiguration(RobotsEnum.ScheduleOrder, template);
}
} }
break; break;
} }
@@ -118,7 +124,8 @@ internal class TemplateActivator : ITemplateActivator
private void UpdateRobotConfiguration(RobotsEnum robotsEnum, Template t) private void UpdateRobotConfiguration(RobotsEnum robotsEnum, Template t)
{ {
var config = robotConfigurationService.GetFromTemplateByRobotCode(robotsEnum, t); var config = robotConfigurationService.GetFromTemplateByRobotCode(robotsEnum, t);
robotConfigurationService.ChangeTaskStatus(TaskStatusEnum.Updating, config); // robotConfigurationService.ChangeTaskStatus(TaskStatusEnum.Updating, config);
robotConfigurationService.SetUpdateTaskStatusIfAllow(config);
} }

View File

@@ -75,7 +75,8 @@ namespace PARR.TemplateDistributor
// ставим задание роботу - обновить расписания // ставим задание роботу - обновить расписания
var config = robotConfigurationService.GetFromTemplateByRobotCode(RobotsEnum.ScheduleOrder, templateDb); var config = robotConfigurationService.GetFromTemplateByRobotCode(RobotsEnum.ScheduleOrder, templateDb);
robotConfigurationService.ChangeTaskStatus(TaskStatusEnum.Updating, config); //robotConfigurationService.ChangeTaskStatus(TaskStatusEnum.Updating, config);
robotConfigurationService.SetUpdateTaskStatusIfAllow(config);
updatedCount++; updatedCount++;
} }