diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs index 4070942a..281e01e8 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs @@ -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(); - await handler.TrackDeletedHandleAsync(signals); - var handler2 = scope.ServiceProvider.GetRequiredService(); - await handler2.TrackDeletedHandleAsync(signals); - var handler3 = scope.ServiceProvider.GetRequiredService(); + + await Task.Delay(1500); //确保落盘 + await handler2.TrackDeletedHandleAsync(signals); + await handler.TrackDeletedHandleAsync(signals); await handler3.TrackUpdatedOrDeletedHandleAsync(signals.Cast().ToList()); } finally { - scope.Dispose(); + await scope.DisposeAsync(); } }); } diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs index 1c9c0f34..827966a8 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs @@ -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(); - await handler.TrackAddedHandleAsync(signals); - var handler2 = scope.ServiceProvider.GetRequiredService(); + + await Task.Delay(1500); //确保落盘 + await handler.TrackAddedHandleAsync(signals); await handler2.TrackAddedOrUpdatedHandleAsync(signals.Cast().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(); - await handler.TrackAddedOrUpdatedHandleAsync(signals.Cast().ToList()); - var handler2 = scope.ServiceProvider.GetRequiredService(); + + await Task.Delay(1500); //确保落盘 + await handler.TrackAddedOrUpdatedHandleAsync(signals.Cast().ToList()); await handler2.TrackUpdatedOrDeletedHandleAsync(signals.Cast().ToList()); } finally { - scope.Dispose(); + await scope.DisposeAsync(); } }); } diff --git a/src/SJZY.Track.Application/Services/DebugApis/TransportDetailsGenerate/_TransportDetailsGenerateService.cs b/src/SJZY.Track.Application/Services/DebugApis/TransportDetailsGenerate/_TransportDetailsGenerateService.cs new file mode 100644 index 00000000..de80fdba --- /dev/null +++ b/src/SJZY.Track.Application/Services/DebugApis/TransportDetailsGenerate/_TransportDetailsGenerateService.cs @@ -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; + +/// +/// 运输预警明细生成任务 +/// +[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; + } + + /// + /// 运输预警明细生成任务执行,立即执行不考虑计划时机 + /// + [HttpGet("TransportWarningDetailsGenerate_ScanAndExec")] + public async Task TransportWarningDetailsGenerate_ScanAndExec() + { + var tasks = await _warningTaskRepository.GetTransportWarningDetailsGenerateTaskAsync(x => !x.IsClosed); + + await _transportWarningHandler.HandleWarningDetailsGenerateTask(tasks); + } + +}