From bf3afe9480386253fcdc34eac2edb2c6fa70aa3b Mon Sep 17 00:00:00 2001 From: hardstylewyl <827778732@qq.com> Date: Thu, 27 Mar 2025 11:39:32 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E6=8F=8F=E8=BF=B0=EF=BC=8C=E4=BF=AE=E5=A4=8D=E9=A2=84=E8=AD=A6?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=E6=B6=88=E6=81=AF=E4=BD=93=E6=A0=87=E9=A2=98?= =?UTF-8?q?=E5=8A=A0=E5=9C=A8=E5=A4=B4=E9=83=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EditTransportWarningSceneRuleItemInput.cs | 2 +- .../Hangfire/WarningNotifyAggregator.cs | 23 +++++++++++++------ .../Helpers/DateTimeHelper.cs | 4 +++- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/SJZY.Track.Application.Contract/Dtos/Warning/Transport/EditTransportWarningSceneRuleItemInput.cs b/src/SJZY.Track.Application.Contract/Dtos/Warning/Transport/EditTransportWarningSceneRuleItemInput.cs index 443c5054..23e5bb6a 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/Warning/Transport/EditTransportWarningSceneRuleItemInput.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/Warning/Transport/EditTransportWarningSceneRuleItemInput.cs @@ -49,7 +49,7 @@ public class EditTransportWarningSceneRuleItemDto /// 时效 (单位h) /// 注意:需要大于起始轨迹生成预警时间 /// - [Range(0.1f, 9999.9f, ErrorMessage = "时效必须范围0.1-9999.9")] + [Range(0.1f, 9999.9f, ErrorMessage = "时效范围0.1-9999.9")] public float TransportTimeSpan { get; set; } /// diff --git a/src/SJZY.Track.Application/Hangfire/WarningNotifyAggregator.cs b/src/SJZY.Track.Application/Hangfire/WarningNotifyAggregator.cs index bc83d7ad..e71eb5fa 100644 --- a/src/SJZY.Track.Application/Hangfire/WarningNotifyAggregator.cs +++ b/src/SJZY.Track.Application/Hangfire/WarningNotifyAggregator.cs @@ -1,5 +1,6 @@ using Microsoft.Extensions.Options; using SJZY.Track.Application.Contract.Dtos.Warning; +using SJZY.Track.Application.Helpers; using SJZY.Track.Application.Options; using SJZY.Track.Application.Services.Warning.Model; using SJZY.Track.Domain.Aggregates.KPIAreaAggregate; @@ -315,7 +316,6 @@ public sealed class WarningNotifyAggregator : ITransientDependency { var options = _optionsMonitor.CurrentValue; var hours = options.ScanWarningNotifyTaskHourInterval; - const float timeZone = 8.00f; var transportCount = 0; var transportLastNHoursCount = 0; var returnCount = 0; @@ -344,7 +344,6 @@ public sealed class WarningNotifyAggregator : ITransientDependency return NotifyMessageBuilder.Build( hours, - timeZone, transportCount, transportLastNHoursCount, returnCount, @@ -364,7 +363,7 @@ public static class NotifyMessageBuilder { public const string Title = "预警通知"; - public static string Build(int hours, float timeZone, + public static string Build(int hours, int transportCount, int transportLastNHoursCount, int returnCount, int returnLastNHoursCount, int completeCount, int completeLastNHoursCount) @@ -375,15 +374,25 @@ public static class NotifyMessageBuilder var url1 = ""; var url2 = ""; var url3 = ""; - var message = $"尊敬的用户,截止到{dateTime}(UTC {timeZone:+0:00:F2}),轨迹中心监测到与您相关的预警风险信息共计{totalCount} 条,请及时处理,详情如下:"; + + var message = $"{Title}\n尊敬的用户,截止到{dateTime}(UTC {BuildLocalTimezoneStr()}),轨迹中心监测到与您相关的预警风险信息共计{totalCount} 条,请及时处理,详情如下:"; if (transportCount > 0) - message += $"\n运输时效预警共计{transportCount}条,其中过去{hours}小时内新增的预警{transportLastNHoursCount}条,查看详情{url1}"; + message += $"\n运输时效预警共计{transportCount}条,其中过去{hours}小时内新增的预警{transportLastNHoursCount}条"; if (returnCount > 0) - message += $"\n回传时效预警共计{returnCount}条,其中过去{hours}小时内新增的预警{returnLastNHoursCount}条,查看详情{url2}"; + message += $"\n回传时效预警共计{returnCount}条,其中过去{hours}小时内新增的预警{returnLastNHoursCount}条"; if (completeCount > 0) - message += $"\n轨迹完整预警共计{completeCount}条,其中过去{hours}小时内新增的预警{completeLastNHoursCount}条,查看详情{url3}"; + message += $"\n轨迹完整预警共计{completeCount}条,其中过去{hours}小时内新增的预警{completeLastNHoursCount}条"; return message; } + + // 构建本地时区字符串标识 e.g UTC +8:00 + private static string BuildLocalTimezoneStr() + { + var offset = TimeZoneInfo.Local.BaseUtcOffset; + var flag = offset.Hours > 0 ? "+" : ""; + var offsetStr = offset.ToString().RemovePostFix(":00"); + return $"UTC {flag}{offsetStr}"; + } } diff --git a/src/SJZY.Track.Application/Helpers/DateTimeHelper.cs b/src/SJZY.Track.Application/Helpers/DateTimeHelper.cs index b621a191..c92202a4 100644 --- a/src/SJZY.Track.Application/Helpers/DateTimeHelper.cs +++ b/src/SJZY.Track.Application/Helpers/DateTimeHelper.cs @@ -66,7 +66,9 @@ public static class DateTimeHelper { if (timezone == null) return "--"; - if (Math.Abs(timezone.Value - GlobalConst.NoneTrackTimeZone) < 1) return "--"; + if (Math.Abs(timezone.Value - GlobalConst.NoneTrackTimeZone) < 0.01f) return "--"; + + if (Math.Abs(timezone.Value) < 0.01f) return "GMT +00:00"; // 将小数形式的小时转换为时区偏移量 var hours = (int) timezone.Value; // 提取整数部分作为小时