feat(api): Обновил логику получения шаблона по статусу, согласоно статусам отработки робота. TemplateRobotStatusController - управление статусами робота в шаблоне
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using PARR.DAL.Context;
|
||||
using PARR.DAL.Contracts;
|
||||
using PARR.DAL.Models;
|
||||
using PARR.DAL.Services.Abstracts;
|
||||
using PARR.DAL.Services.Interfaces;
|
||||
@@ -34,12 +35,44 @@ namespace PARR.DAL.Services.Implementations
|
||||
.ThenInclude(t => t!.ResponseArea)
|
||||
.Include(h => h.Host)
|
||||
.ThenInclude(t => t!.EkStatus)
|
||||
.Include(r=>r.RobotStatus)
|
||||
.Include(r => r.RobotStatus)
|
||||
.Include(a => a.ApplicationsInWork)
|
||||
.ThenInclude(w => w!.Work)
|
||||
.ThenInclude(t => t!.Tnk)
|
||||
.ThenInclude(s => s!.Subprocess)
|
||||
.ThenInclude(p => p!.Process);
|
||||
}
|
||||
|
||||
public async Task CheckAndSetErrorRobotStatusAsync(int robotAttemptsNumber, TimeSpan robotWaitTime)
|
||||
{
|
||||
//Ищем `RobotStatusCode` = 22 и `RobotLastStatusUpdated` истекло и `RobotAttemptsNumber` >= допустимого значения из настроек,
|
||||
//ставим всем этим записям `RobotStatusCode`= 33
|
||||
|
||||
var endDate = DateTimeOffset.UtcNow.Add(-robotWaitTime);
|
||||
|
||||
var templates = await EntitySet.Where(t =>
|
||||
t.RobotStatusCode == (int)RobotStatusEnum.InProgress
|
||||
&& t.RobotAttemptsNumber >= robotAttemptsNumber
|
||||
&& t.RobotLastStatusUpdated <= endDate
|
||||
)
|
||||
.ToListAsync();
|
||||
|
||||
if (!templates.Any())
|
||||
return;
|
||||
|
||||
foreach (var template in templates)
|
||||
{
|
||||
template.RobotStatusCode = (int)RobotStatusEnum.Error;
|
||||
template.DateModified = DateTimeOffset.UtcNow;
|
||||
logger.LogInformation($"Устанавливаю RobotStatus: {RobotStatusEnum.Error} для шаблона {template.Name}");
|
||||
}
|
||||
|
||||
|
||||
var result = await CommitAsync();
|
||||
|
||||
if (!result)
|
||||
logger.LogError($"Ошибка при сохранении изменений RobotStatus у шаблонов на {RobotStatusEnum.Error}");
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user