fix:修复运输时效预警明细累计运输时间计算时机

This commit is contained in:
hardstylewyl 2025-03-20 17:01:33 +08:00
parent 28381c6441
commit 40bc881d91
3 changed files with 18 additions and 5 deletions

View File

@ -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;

View File

@ -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()
{

View File

@ -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.已关闭))
)
);