fix:修复确保轨迹落盘后才引发预警计算

test-interface: 提供预警生成任务快捷执行接口
This commit is contained in:
hardstylewyl 2025-03-21 15:47:35 +08:00
parent e9c32bb4cb
commit 7c1b4e67f8
3 changed files with 51 additions and 14 deletions

View File

@ -385,21 +385,21 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe
_ = Task.Run(async () =>
{
var scope = _serviceProvider.CreateScope();
var scope = _serviceProvider.CreateAsyncScope();
try
{
var handler = scope.ServiceProvider.GetRequiredService<ICompleteWarningHandler>();
await handler.TrackDeletedHandleAsync(signals);
var handler2 = scope.ServiceProvider.GetRequiredService<ITransportWarningHandler>();
await handler2.TrackDeletedHandleAsync(signals);
var handler3 = scope.ServiceProvider.GetRequiredService<IReturnWarningHandler>();
await Task.Delay(1500); //确保落盘
await handler2.TrackDeletedHandleAsync(signals);
await handler.TrackDeletedHandleAsync(signals);
await handler3.TrackUpdatedOrDeletedHandleAsync(signals.Cast<IWarningSignal>().ToList());
}
finally
{
scope.Dispose();
await scope.DisposeAsync();
}
});
}

View File

@ -504,18 +504,19 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
_ = Task.Run(async () =>
{
var scope = _serviceProvider.CreateScope();
var scope = _serviceProvider.CreateAsyncScope();
try
{
var handler = scope.ServiceProvider.GetRequiredService<ICompleteWarningHandler>();
await handler.TrackAddedHandleAsync(signals);
var handler2 = scope.ServiceProvider.GetRequiredService<ITransportWarningHandler>();
await Task.Delay(1500); //确保落盘
await handler.TrackAddedHandleAsync(signals);
await handler2.TrackAddedOrUpdatedHandleAsync(signals.Cast<IWarningSignal>().ToList());
}
finally
{
scope.Dispose();
await scope.DisposeAsync();
}
});
}
@ -530,18 +531,19 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
}).ToList();
_ = Task.Run(async () =>
{
var scope = _serviceProvider.CreateScope();
var scope = _serviceProvider.CreateAsyncScope();
try
{
var handler = scope.ServiceProvider.GetRequiredService<ITransportWarningHandler>();
await handler.TrackAddedOrUpdatedHandleAsync(signals.Cast<IWarningSignal>().ToList());
var handler2 = scope.ServiceProvider.GetRequiredService<IReturnWarningHandler>();
await Task.Delay(1500); //确保落盘
await handler.TrackAddedOrUpdatedHandleAsync(signals.Cast<IWarningSignal>().ToList());
await handler2.TrackUpdatedOrDeletedHandleAsync(signals.Cast<IWarningSignal>().ToList());
}
finally
{
scope.Dispose();
await scope.DisposeAsync();
}
});
}

View File

@ -0,0 +1,35 @@
using Microsoft.AspNetCore.Authorization;
using SJZY.Track.Application.Services.Warning.Handlers;
using SJZY.Track.Domain.Aggregates.WarningAggregate;
namespace SJZY.Track.Application.Services.DebugApis.TransportDetailsGenerate;
/// <summary>
/// 运输预警明细生成任务
/// </summary>
[AllowAnonymous]
[ApiExplorerSettings(GroupName = "调试专用")]
[Route("/S07")]
public class _TransportDetailsGenerateService : ApplicationService
{
private readonly IWarningTaskRepository _warningTaskRepository;
private readonly ITransportWarningHandler _transportWarningHandler;
public _TransportDetailsGenerateService(IWarningTaskRepository warningTaskRepository, ITransportWarningHandler transportWarningHandler)
{
_warningTaskRepository = warningTaskRepository;
_transportWarningHandler = transportWarningHandler;
}
/// <summary>
/// 运输预警明细生成任务执行,立即执行不考虑计划时机
/// </summary>
[HttpGet("TransportWarningDetailsGenerate_ScanAndExec")]
public async Task TransportWarningDetailsGenerate_ScanAndExec()
{
var tasks = await _warningTaskRepository.GetTransportWarningDetailsGenerateTaskAsync(x => !x.IsClosed);
await _transportWarningHandler.HandleWarningDetailsGenerateTask(tasks);
}
}