From 331862f480031072d877f752076a7eea4f067d34 Mon Sep 17 00:00:00 2001 From: hardstylewyl <827778732@qq.com> Date: Mon, 24 Mar 2025 17:59:34 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E6=A0=BC=E5=BC=8F=E5=8C=96=E9=A2=84?= =?UTF-8?q?=E8=AD=A6=E6=98=8E=E7=BB=86=E6=97=B6=E5=8C=BAe.g=20GMT=20+8:00?= =?UTF-8?q?=20/=20--?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Complete/CompleteWarningDetailsDto.cs | 4 ++-- .../Warning/Return/ReturnWarningDetailsDto.cs | 4 ++-- .../Transport/TransportWarningDetailsDto.cs | 2 +- .../Services/ProvideServices/OrderService.cs | 4 ++-- .../Warning/CompleteWarningService.cs | 19 ++++++++++++++++++- .../Services/Warning/ReturnWarningService.cs | 18 +++++++++++++++++- .../Transport/TransportWarningDetailsIndex.cs | 2 +- 7 files changed, 43 insertions(+), 10 deletions(-) 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; }