fix:修复因为精度导致的预警规则时效修改不成功

This commit is contained in:
hardstylewyl 2025-03-21 17:48:22 +08:00
parent 8a137f7c33
commit fcf1d88ff0
4 changed files with 15 additions and 12 deletions

View File

@ -595,7 +595,7 @@ public sealed class ReturnWarningHandler : IReturnWarningHandler, ITransientDepe
private static bool CanNeedFollow(ReturnWarningRuleItemBO oldRule, ReturnWarningRuleItemBO postRule) private static bool CanNeedFollow(ReturnWarningRuleItemBO oldRule, ReturnWarningRuleItemBO postRule)
{ {
// 时效发生更改 // 时效发生更改
if (Math.Abs(oldRule.ReturnTimeSpan - postRule.ReturnTimeSpan) > 0.1f) if (Math.Abs(oldRule.ReturnTimeSpan - postRule.ReturnTimeSpan) > 0.01f)
return true; return true;
// 关注的轨迹状态减少 // 关注的轨迹状态减少

View File

@ -883,14 +883,16 @@ public class TransportWarningHandler : ITransportWarningHandler, ITransientDepen
.Where(x => x.Type == HandleType.Detail) .Where(x => x.Type == HandleType.Detail)
.Select(x => x.Detail) .Select(x => x.Detail)
.ToList(); .ToList();
await _warningDetailsEsRepository.BulkUpdateTransportWarningDetailsAsync(updateWarningDetails); if (reHitRuleBlocks.Count > 0)
await _warningDetailsEsRepository.BulkUpdateTransportWarningDetailsAsync(updateWarningDetails);
// 3.2 更新预警生成任务(重新命中规则) // 3.2 更新预警生成任务(重新命中规则)
var updateGenerateTasks = reHitRuleBlocks var updateGenerateTasks = reHitRuleBlocks
.Where(x => x.Type == HandleType.GenerateTask) .Where(x => x.Type == HandleType.GenerateTask)
.Select(x => x.GenerateTask) .Select(x => x.GenerateTask)
.ToList(); .ToList();
await _warningTaskRepository.BulkUpdateTransportWarningDetailsGenerateTaskAsync(updateGenerateTasks); if (updateGenerateTasks.Count > 0)
await _warningTaskRepository.BulkUpdateTransportWarningDetailsGenerateTaskAsync(updateGenerateTasks);
// 3.3 处理需要关闭的【预警明细】【预警生成任务】【预警通知任务】(未命中规则) // 3.3 处理需要关闭的【预警明细】【预警生成任务】【预警通知任务】(未命中规则)
var typeIdsDict = handleBlocks var typeIdsDict = handleBlocks
@ -910,10 +912,11 @@ public class TransportWarningHandler : ITransportWarningHandler, ITransientDepen
// 4.处理删除规则的相关联的【预警明细】【预警生成任务】【预警通知任务】 // 4.处理删除规则的相关联的【预警明细】【预警生成任务】【预警通知任务】
// 预警信息状态修改为已关闭(即将超时/已超时) // 预警信息状态修改为已关闭(即将超时/已超时)
var closeDetailIds = typeIdsDict.GetValueOrDefault(HandleType.Detail, new HashSet<string>()); var closeDetailIds = typeIdsDict.GetValueOrDefault(HandleType.Detail, new HashSet<string>());
await _warningDetailsEsRepository.BulkCloseTransportWarningDetailsAsync(new BulkCloseTransportWarningDetailsVO if (closeDetailIds.Count > 0)
{ await _warningDetailsEsRepository.BulkCloseTransportWarningDetailsAsync(new BulkCloseTransportWarningDetailsVO
DetailsIds = closeDetailIds, {
}); DetailsIds = closeDetailIds,
});
// 关闭相关的预警生成任务(未关闭的) // 关闭相关的预警生成任务(未关闭的)
var closeGenerateTaskIds = typeIdsDict.GetValueOrDefault(HandleType.GenerateTask, new HashSet<string>()); var closeGenerateTaskIds = typeIdsDict.GetValueOrDefault(HandleType.GenerateTask, new HashSet<string>());
@ -968,10 +971,10 @@ public class TransportWarningHandler : ITransportWarningHandler, ITransientDepen
if (oldRule.EndTrackStatusId != postRule.EndTrackStatusId) if (oldRule.EndTrackStatusId != postRule.EndTrackStatusId)
return true; return true;
if (Math.Abs(oldRule.TransportTimeSpan - postRule.TransportTimeSpan) > 0.1f) if (Math.Abs(oldRule.TransportTimeSpan - postRule.TransportTimeSpan) > 0.01f)
return true; return true;
if (Math.Abs(oldRule.StartTrackWarningTimeSpan - postRule.StartTrackWarningTimeSpan) > 0.1f) if (Math.Abs(oldRule.StartTrackWarningTimeSpan - postRule.StartTrackWarningTimeSpan) > 0.01f)
return true; return true;
return false; return false;

View File

@ -102,6 +102,6 @@ public class ReturnWarningDetailsIndex : IdBaseIndex
public bool MatchTrackTime(DateTime trackTime, float trackTimeZone) public bool MatchTrackTime(DateTime trackTime, float trackTimeZone)
{ {
return TrackTime == trackTime && Math.Abs(TrackTimeZone - trackTimeZone) < 0.1f; return TrackTime == trackTime && Math.Abs(TrackTimeZone - trackTimeZone) < 0.01f;
} }
} }

View File

@ -140,7 +140,7 @@ public sealed class TransportWarningDetailsIndex : IdBaseIndex
public DateTime GetUtc0StartTrackTime() public DateTime GetUtc0StartTrackTime()
{ {
return Math.Abs(StartTrackTimeZone - GlobalConst.NoneTrackTimeZone) < 0.1f return Math.Abs(StartTrackTimeZone - GlobalConst.NoneTrackTimeZone) < 0.01f
? StartTrackTime ? StartTrackTime
: StartTrackTime.Subtract(TimeSpan.FromHours(StartTrackTimeZone)); : StartTrackTime.Subtract(TimeSpan.FromHours(StartTrackTimeZone));
} }
@ -148,7 +148,7 @@ public sealed class TransportWarningDetailsIndex : IdBaseIndex
public DateTime? GetUtc0EndTrackTime() public DateTime? GetUtc0EndTrackTime()
{ {
if (EndTrackTime == null || EndTrackTimeZone == null) return null; if (EndTrackTime == null || EndTrackTimeZone == null) return null;
return Math.Abs(EndTrackTimeZone.Value - GlobalConst.NoneTrackTimeZone) < 0.1f return Math.Abs(EndTrackTimeZone.Value - GlobalConst.NoneTrackTimeZone) < 0.01f
? EndTrackTime ? EndTrackTime
: EndTrackTime.Value.Subtract(TimeSpan.FromHours(EndTrackTimeZone.Value)); : EndTrackTime.Value.Subtract(TimeSpan.FromHours(EndTrackTimeZone.Value));
} }