diff --git a/src/SJZY.Track.Application.Contract/Dtos/Warning/Complete/CompleteWarningDetailsDto.cs b/src/SJZY.Track.Application.Contract/Dtos/Warning/Complete/CompleteWarningDetailsDto.cs
index 94fafb32..e785f1e1 100644
--- a/src/SJZY.Track.Application.Contract/Dtos/Warning/Complete/CompleteWarningDetailsDto.cs
+++ b/src/SJZY.Track.Application.Contract/Dtos/Warning/Complete/CompleteWarningDetailsDto.cs
@@ -87,9 +87,9 @@ public class CompleteWarningDetailsDto
public DateTime? LatestTrackTime { get; set; }
///
- /// 最新轨迹发生时区
+ /// 最新轨迹发生时区 e.g GMT +8:00 / --
///
- public float? LatestTrackTimeZone { get; set; }
+ public string? LatestTrackTimeZone { get; set; }
///
/// 通知对象
diff --git a/src/SJZY.Track.Application.Contract/Dtos/Warning/Return/ReturnWarningDetailsDto.cs b/src/SJZY.Track.Application.Contract/Dtos/Warning/Return/ReturnWarningDetailsDto.cs
index 8036fc15..960e3ae2 100644
--- a/src/SJZY.Track.Application.Contract/Dtos/Warning/Return/ReturnWarningDetailsDto.cs
+++ b/src/SJZY.Track.Application.Contract/Dtos/Warning/Return/ReturnWarningDetailsDto.cs
@@ -96,9 +96,9 @@ public sealed class ReturnWarningDetailsDto
public DateTime TrackTime { get; set; }
///
- /// 轨迹发生时区
+ /// 轨迹发生时区 e.g GMT +8:00 / --
///
- public float TrackTimeZone { get; set; }
+ public string TrackTimeZone { get; set; }
///
/// 轨迹创建时间
diff --git a/src/SJZY.Track.Application.Contract/Dtos/Warning/Transport/TransportWarningDetailsDto.cs b/src/SJZY.Track.Application.Contract/Dtos/Warning/Transport/TransportWarningDetailsDto.cs
index 15aada78..c5b88ae8 100644
--- a/src/SJZY.Track.Application.Contract/Dtos/Warning/Transport/TransportWarningDetailsDto.cs
+++ b/src/SJZY.Track.Application.Contract/Dtos/Warning/Transport/TransportWarningDetailsDto.cs
@@ -64,7 +64,7 @@ public sealed class TransportWarningDetailsDto
public DateTime? LatestTrackTime { get; set; }
///
- /// 最新轨迹发生时区
+ /// 最新轨迹发生时区 e.g GMT +8:00 / --
///
public string LatestTrackTimeZone { get; set; }
diff --git a/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs b/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs
index 3cf88618..77f06254 100644
--- a/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs
+++ b/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs
@@ -198,7 +198,7 @@ public partial class OrderService : ApplicationService, IOrderService
order.IsDeleted = true;
_ = Task.Run(async () =>
{
- var scope = _serviceProvider.CreateScope();
+ var scope = _serviceProvider.CreateAsyncScope();
try
{
var handler = scope.ServiceProvider.GetRequiredService();
@@ -206,7 +206,7 @@ public partial class OrderService : ApplicationService, IOrderService
}
finally
{
- scope.Dispose();
+ await scope.DisposeAsync();
}
});
}
diff --git a/src/SJZY.Track.Application/Services/Warning/CompleteWarningService.cs b/src/SJZY.Track.Application/Services/Warning/CompleteWarningService.cs
index 78126101..e956fd80 100644
--- a/src/SJZY.Track.Application/Services/Warning/CompleteWarningService.cs
+++ b/src/SJZY.Track.Application/Services/Warning/CompleteWarningService.cs
@@ -185,7 +185,7 @@ public class CompleteWarningService : ApplicationService
LatestTrackContent = orderIdTrack?.TrackContent,
LatestTrackPlace = orderIdTrack?.TrackPlace,
LatestTrackTime = orderIdTrack?.TrackTime,
- LatestTrackTimeZone = orderIdTrack?.TrackTimeZone,
+ LatestTrackTimeZone = FormatTimeZone(orderIdTrack?.TrackTimeZone),
NotifyUserNames = ToUserNames(x.NotifyUsers),
CreateTime = x.CreateTime,
@@ -212,6 +212,7 @@ public class CompleteWarningService : ApplicationService
return string.Join(',', notifyUsers.ToObject>().Select(x => x.UserName));
}
+ // 构建缺失轨迹状态
List BuildMissingTrackStatus(string statusIds)
{
var trackStatus = statusIds.Split(',').Select(x =>
@@ -229,6 +230,22 @@ public class CompleteWarningService : ApplicationService
return trackStatus.ToList()!;
}
+
+ // 格式化时区
+ string FormatTimeZone(float? timezone)
+ {
+ if (timezone == null) return "--";
+
+ if (Math.Abs(timezone.Value - GlobalConst.NoneTrackTimeZone) < 1) return "--";
+
+ // 将小数形式的小时转换为时区偏移量
+ var hours = (int) timezone.Value; // 提取整数部分作为小时
+ var minutes = (int) ((timezone.Value - hours) * 60); // 将小数部分乘以 60 转换为分钟
+ var offset = new TimeSpan(hours, minutes, 0);
+ var timeZoneStr = offset.ToString();
+ var flag = timezone > 0f ? "+" : "";
+ return $"GMT {flag}{timeZoneStr.RemovePostFix(":00")}";
+ }
}
///
diff --git a/src/SJZY.Track.Application/Services/Warning/ReturnWarningService.cs b/src/SJZY.Track.Application/Services/Warning/ReturnWarningService.cs
index 1a0cee0f..e502d63f 100644
--- a/src/SJZY.Track.Application/Services/Warning/ReturnWarningService.cs
+++ b/src/SJZY.Track.Application/Services/Warning/ReturnWarningService.cs
@@ -138,7 +138,7 @@ public class ReturnWarningService : ApplicationService
TrackContent = x.TrackContent,
TrackPlace = x.TrackPlace,
TrackTime = x.TrackTime,
- TrackTimeZone = x.TrackTimeZone,
+ TrackTimeZone = FormatTimeZone(x.TrackTimeZone),
TrackCreateTime = x.TrackCreateTime,
// 轨迹信息(映射后)
PushTrackCode = x.PushTrackCode,
@@ -176,6 +176,22 @@ public class ReturnWarningService : ApplicationService
return string.Empty;
return string.Join(',', notifyUsers.ToObject>().Select(x => x.UserName));
}
+
+ // 格式化时区
+ string FormatTimeZone(float? timezone)
+ {
+ if (timezone == null) return "--";
+
+ if (Math.Abs(timezone.Value - GlobalConst.NoneTrackTimeZone) < 1) return "--";
+
+ // 将小数形式的小时转换为时区偏移量
+ var hours = (int) timezone.Value; // 提取整数部分作为小时
+ var minutes = (int) ((timezone.Value - hours) * 60); // 将小数部分乘以 60 转换为分钟
+ var offset = new TimeSpan(hours, minutes, 0);
+ var timeZoneStr = offset.ToString();
+ var flag = timezone > 0f ? "+" : "";
+ return $"GMT {flag}{timeZoneStr.RemovePostFix(":00")}";
+ }
}
///
diff --git a/src/SJZY.Track.Domain/Aggregates/WarningAggregate/Transport/TransportWarningDetailsIndex.cs b/src/SJZY.Track.Domain/Aggregates/WarningAggregate/Transport/TransportWarningDetailsIndex.cs
index adb66af4..ccdcfad4 100644
--- a/src/SJZY.Track.Domain/Aggregates/WarningAggregate/Transport/TransportWarningDetailsIndex.cs
+++ b/src/SJZY.Track.Domain/Aggregates/WarningAggregate/Transport/TransportWarningDetailsIndex.cs
@@ -81,7 +81,7 @@ public sealed class TransportWarningDetailsIndex : IdBaseIndex
if (Status is (int) TransportWarningStatus.已完成 or (int) TransportWarningStatus.超时完成)
return (long)EndTrackTime!.Value.Subtract(StartTrackTime).TotalMilliseconds;
- // 已关闭,当前时间 - 起始轨迹时间
+ // 其他状态,当前时间 - 起始轨迹时间
return (long)DateTime.Now.Subtract(StartTrackTime).TotalMilliseconds;
}