diff --git a/src/SJZY.Track.Application/Services/Warning/Handlers/TransportWarningHandler.cs b/src/SJZY.Track.Application/Services/Warning/Handlers/TransportWarningHandler.cs index fb12aea4..26b75035 100644 --- a/src/SJZY.Track.Application/Services/Warning/Handlers/TransportWarningHandler.cs +++ b/src/SJZY.Track.Application/Services/Warning/Handlers/TransportWarningHandler.cs @@ -112,7 +112,7 @@ public class TransportWarningHandler : ITransportWarningHandler, ITransientDepen orderDetails.ForEach(x => { x.Status = TransportWarningStatus.已关闭.GetHashCode(); - x.CumulativeTimeSpan = (long)DateTime.Now.Subtract(x.StartTrackTime).TotalMilliseconds; //tips:完成态缓存累计运输时间 + x.CumulativeTimeSpan = x.CalcCumulativeTimeSpan(); //tips:完成态缓存累计运输时间 }); orderTasks.ForEach(x => x.IsClosed = true); needUpdateDetails.AddRange(orderDetails); @@ -174,7 +174,7 @@ public class TransportWarningHandler : ITransportWarningHandler, ITransientDepen details.ForEach(x => { x.Status = TransportWarningStatus.已关闭.GetHashCode(); - x.CumulativeTimeSpan = (long)DateTime.Now.Subtract(x.StartTrackTime).TotalMilliseconds; //tips:完成态缓存累计运输时间 + x.CumulativeTimeSpan = x.CalcCumulativeTimeSpan(); //tips:完成态缓存累计运输时间 }); needUpdateDetails.AddRange(details); continue; @@ -382,7 +382,7 @@ public class TransportWarningHandler : ITransportWarningHandler, ITransientDepen detail.Status = TransportWarningStatus.超时完成.GetHashCode(); // 维护累计运输时间(由于变更为终止态,此时为最后一次变更) - detail.CumulativeTimeSpan = (long)DateTime.Now.Subtract(detail.StartTrackTime).TotalMilliseconds; + detail.CumulativeTimeSpan = detail.CalcCumulativeTimeSpan(); // 填充终止状态轨迹信息 detail.EndTrackContentId = earliestTrack.TrackContentId; diff --git a/src/SJZY.Track.Domain/Aggregates/WarningAggregate/Transport/TransportWarningDetailsIndex.cs b/src/SJZY.Track.Domain/Aggregates/WarningAggregate/Transport/TransportWarningDetailsIndex.cs index e4e16481..8e4e49af 100644 --- a/src/SJZY.Track.Domain/Aggregates/WarningAggregate/Transport/TransportWarningDetailsIndex.cs +++ b/src/SJZY.Track.Domain/Aggregates/WarningAggregate/Transport/TransportWarningDetailsIndex.cs @@ -55,7 +55,7 @@ public sealed class TransportWarningDetailsIndex : IdBaseIndex public DateTime? EndTrackTime { get; set; } //截止轨迹发生时间 public float? EndTrackTimeZone { get; set; } //截止轨迹发生时区 - // // 实时属性 todo:后面拆出vo + // // 实时属性vo // public int LatestTrackContentId { get; set; } //最新轨迹内容Id // public string LatestTrackContent { get; set; } //(冗余)最新轨迹内容名称 // public DateTime LatestTrackTime { get; set; } //最新轨迹发生时间 @@ -74,6 +74,11 @@ public sealed class TransportWarningDetailsIndex : IdBaseIndex public bool CanCompleted() => CompletedStatus.Contains(Status); + public long CalcCumulativeTimeSpan() + { + return (long)DateTime.Now.Subtract(StartTrackTime).TotalMilliseconds; + } + // tips:计算并设置状态,后续维护到vo当中 public int CalcStatus() { diff --git a/src/SJZY.Track.Repository/Repositories/WarningDetailsEsRepository.cs b/src/SJZY.Track.Repository/Repositories/WarningDetailsEsRepository.cs index 556a025d..d44da56a 100644 --- a/src/SJZY.Track.Repository/Repositories/WarningDetailsEsRepository.cs +++ b/src/SJZY.Track.Repository/Repositories/WarningDetailsEsRepository.cs @@ -265,7 +265,15 @@ public class WarningDetailsEsRepository : IWarningDetailsEsRepository, ITransien u.Index(GlobalConst.TransportWarningDetailsIndex) .Query(q => q.Bool(b => b.Must(musts))) .Script(s => s - .Source("ctx._source.status = params.status") + .Source(@"ctx._source.status = params.status; + if (ctx._source.startTrackTime != null) { + // 替换日期字符串中的T + String formattedDateString = ctx._source.startTrackTime.replace(""T"", "" ""); + SimpleDateFormat sdf = new SimpleDateFormat(""yyyy-MM-dd HH:mm:ss""); + // 更新 cumulativeTimeSpan 字段 + ctx._source.cumulativeTimeSpan = new Date().getTime() - sdf.parse(formattedDateString).getTime() + 3600*8*1000; + }" + ) .Params(p => p.Add("status", (int) TransportWarningStatus.已关闭)) ) );