fix:修复运输时效预警收到截止轨迹时的累计运输计算错误

This commit is contained in:
hardstylewyl 2025-03-24 14:49:00 +08:00
parent f3da66267f
commit 13dc04b252
2 changed files with 9 additions and 3 deletions

View File

@ -381,15 +381,15 @@ public class TransportWarningHandler : ITransportWarningHandler, ITransientDepen
if (detail.CalcStatus() == TransportWarningStatus.已超时.GetHashCode())
detail.Status = TransportWarningStatus.超时完成.GetHashCode();
// 维护累计运输时间(由于变更为终止态,此时为最后一次变更)
detail.CumulativeTimeSpan = detail.CalcCumulativeTimeSpan();
// 填充终止状态轨迹信息
detail.EndTrackContentId = earliestTrack.TrackContentId;
detail.EndTrackContent = earliestTrack.TrackContent;
detail.EndTrackTime = earliestTrack.TrackTime;
detail.EndTrackTimeZone = earliestTrack.TrackTimeZone;
// 维护累计运输时间(由于变更为终止态,此时为最后一次变更)
detail.CumulativeTimeSpan = detail.CalcCumulativeTimeSpan();
updateDetails.Add(detail);
closeNotifyDetailIds.Add(detail.Id);
continue;

View File

@ -4,6 +4,7 @@ using Nest;
using SJZY.Expand.ElasticSearch;
using SJZY.Track.Domain.Aggregates.KPIAreaAggregate;
using SJZY.Track.Domain.Consts;
using SJZY.Track.Domain.Enums;
namespace SJZY.Track.Domain.Aggregates.WarningAggregate.Transport;
@ -76,6 +77,11 @@ public sealed class TransportWarningDetailsIndex : IdBaseIndex
public long CalcCumulativeTimeSpan()
{
// 已完成/超时完成,截止轨迹时间 - 起始轨迹时间
if (Status is (int) TransportWarningStatus.已完成 or (int) TransportWarningStatus.超时完成)
return (long)EndTrackTime!.Value.Subtract(StartTrackTime).TotalMilliseconds;
// 已关闭,当前时间 - 起始轨迹时间
return (long)DateTime.Now.Subtract(StartTrackTime).TotalMilliseconds;
}