diff --git a/src/SJZY.Track.Application/Services/Warning/Handlers/TransportWarningHandler.cs b/src/SJZY.Track.Application/Services/Warning/Handlers/TransportWarningHandler.cs index 14e1c6eb..8794b9d4 100644 --- a/src/SJZY.Track.Application/Services/Warning/Handlers/TransportWarningHandler.cs +++ b/src/SJZY.Track.Application/Services/Warning/Handlers/TransportWarningHandler.cs @@ -303,7 +303,7 @@ public class TransportWarningHandler : ITransportWarningHandler, ITransientDepen ); // 处理【预警明细生成就绪阶段】预警明细生成任务 - var (updateTasks, addTasks) = HandleDetailGenerateTask(order, orderTasks, ruleItemBoDict, trackStatusTrackDict); + var (updateTasks, addTasks) = HandleDetailGenerateTask(order, orderTasks, warningDetails, ruleItemBoDict, trackStatusTrackDict); addDetailGenerateTasks.AddRange(addTasks); updateDetailGenerateTasks.AddRange(updateTasks); } @@ -411,12 +411,11 @@ public class TransportWarningHandler : ITransportWarningHandler, ITransientDepen // 命中:存在任务,起始轨迹状态轨迹变更则更新任务信息, // 命中:不存在任务,添加生成任务 // 未命中,已有的任务关闭,没有的忽略生成 - private (List UpdateTasks, List AddTasks) HandleDetailGenerateTask( - OrderEntity order, + private (List UpdateTasks, List AddTasks) HandleDetailGenerateTask(OrderEntity order, List tasks, + List warningDetails, Dictionary ruleItemBoDict, - Dictionary trackStatusIdEarliestTrackDict - ) + Dictionary trackStatusIdEarliestTrackDict) { var insertTasks = new List(); var updateTasks = new List(); @@ -437,7 +436,9 @@ public class TransportWarningHandler : ITransportWarningHandler, ITransientDepen // 不存在任务,生成任务根据最早轨迹 if (task == null) { - insertTasks.Add(BuildDetailsGenerateTask(order, ruleItem, earliestTrack)); + // 不存在开启的预警明细,则添加一个生成任务 + if (warningDetails.All(x => x.WarningSceneRuleItemId != ruleId)) + insertTasks.Add(BuildDetailsGenerateTask(order, ruleItem, earliestTrack)); continue; }