using Microsoft.AspNetCore.Authorization;
using TrackCenter.Application.Services.Warning.Handlers;
using TrackCenter.Domain.Aggregates.WarningAggregate;
namespace TrackCenter.Application.Services.DebugApis.TransportDetailsGenerate;
///
/// 运输预警明细生成任务
///
[AllowAnonymous]
[ApiExplorerSettings(GroupName = "调试专用")]
[Route("/S07")]
public class _TransportDetailsGenerateService : ApplicationServiceBase
{
private readonly IWarningTaskRepository _warningTaskRepository;
private readonly ITransportWarningHandler _transportWarningHandler;
public _TransportDetailsGenerateService(IWarningTaskRepository warningTaskRepository, ITransportWarningHandler transportWarningHandler)
{
_warningTaskRepository = warningTaskRepository;
_transportWarningHandler = transportWarningHandler;
}
///
/// 运输预警明细生成任务立即执行,不考虑计划执行时间,执行完成任务会关闭
///
///
[HttpGet("TransportWarningDetailsGenerate_ScanAndExec")]
public async Task TransportWarningDetailsGenerate_ScanAndExec()
{
var tasks = await _warningTaskRepository.GetTransportWarningDetailsGenerateTaskAsync(x => !x.IsClosed);
var taskIds = tasks.Select(x => x.Id).ToHashSet();
await _warningTaskRepository.CloseTransportWarningDetailsGenerateTaskAsync(x => !x.IsClosed && taskIds.Contains(x.Id));
await _transportWarningHandler.HandleWarningDetailsGenerateTask(tasks);
}
}