From c395261d2ff21f9632cb6d0626852908b1a1f36e Mon Sep 17 00:00:00 2001 From: hardstylewyl <827778732@qq.com> Date: Wed, 26 Mar 2025 09:51:29 +0800 Subject: [PATCH] =?UTF-8?q?change-params:=E5=9B=9E=E4=BC=A0=E9=A2=84?= =?UTF-8?q?=E8=AD=A6=E6=98=8E=E7=BB=86=E5=A2=9E=E5=8A=A0=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E8=B6=85=E6=97=B6=E7=8A=B6=E6=80=81=20add-validation:=20?= =?UTF-8?q?=E7=BA=A6=E6=9D=9F=E5=9B=9E=E4=BC=A0=E9=A2=84=E8=AD=A6=E4=B8=AD?= =?UTF-8?q?=E8=B5=B7=E5=A7=8B=E8=BD=A8=E8=BF=B9=E6=97=B6=E9=97=B4=E4=B8=8D?= =?UTF-8?q?=E8=83=BD=E5=A4=A7=E4=BA=8E=E7=AD=89=E4=BA=8E=E6=97=B6=E6=95=88?= =?UTF-8?q?=20change-validation:=E5=90=8C=E6=AD=A5=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E4=B8=AD=E9=A2=84=E8=AD=A6=E6=97=B6=E6=95=88=E8=8C=83=E5=9B=B4?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Return/EditReturnWarningRuleItemInput.cs | 2 +- .../Warning/Return/ReturnWarningDetailsDto.cs | 6 ++ .../EditTransportWarningSceneRuleItemInput.cs | 87 ++++++++++--------- .../Services/Warning/ReturnWarningService.cs | 1 + .../Warning/TransportWarningService.cs | 6 ++ .../Return/ReturnWarningDetailsIndex.cs | 8 +- 6 files changed, 65 insertions(+), 45 deletions(-) diff --git a/src/SJZY.Track.Application.Contract/Dtos/Warning/Return/EditReturnWarningRuleItemInput.cs b/src/SJZY.Track.Application.Contract/Dtos/Warning/Return/EditReturnWarningRuleItemInput.cs index e8ee6562..589e0d1b 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/Warning/Return/EditReturnWarningRuleItemInput.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/Warning/Return/EditReturnWarningRuleItemInput.cs @@ -39,7 +39,7 @@ public class EditReturnWarningRuleItemDto /// /// 时效(单位h) /// - [Range(0.1, 99, ErrorMessage = "回传时效范围0.1-99")] + [Range(0.1f, 99.9f, ErrorMessage = "回传时效范围0.1-99.9")] public float ReturnTimeSpan { 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 efd2b9be..b3030197 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/Warning/Return/ReturnWarningDetailsDto.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/Warning/Return/ReturnWarningDetailsDto.cs @@ -133,6 +133,12 @@ public sealed class ReturnWarningDetailsDto /// public string TrackCreateTimeSpan { get; set; } + /// + /// 是否超时,只有命中了kpi考核的才有可能超时 + /// 如果为超时则标红【实际回传】字段 + /// + public bool IsTimeout { get; set; } + /// /// 是否有KPI考核 /// 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 fedef9e6..443c5054 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/Warning/Transport/EditTransportWarningSceneRuleItemInput.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/Warning/Transport/EditTransportWarningSceneRuleItemInput.cs @@ -5,22 +5,22 @@ namespace SJZY.Track.Application.Contract.Dtos.Warning.Transport; public class EditTransportWarningSceneRuleItemInput { - /// - /// 预警规主体id - /// - [IdRequired] - public int WarningId { get; set; } + /// + /// 预警规主体id + /// + [IdRequired] + public int WarningId { get; set; } - /// - /// 运输预警场景id - /// - [IdRequired] - public int SceneId { get; set; } + /// + /// 运输预警场景id + /// + [IdRequired] + public int SceneId { get; set; } - /// - /// 预警规则配置项目(列表内容传递) - /// - public List Items { get; set; } = new(); + /// + /// 预警规则配置项目(列表内容传递) + /// + public List Items { get; set; } = new(); } /// @@ -28,38 +28,39 @@ public class EditTransportWarningSceneRuleItemInput /// public class EditTransportWarningSceneRuleItemDto { - /// - /// 规则项目id(传0视为新增) - /// - public int Id { get; set; } + /// + /// 规则项目id(传0视为新增) + /// + public int Id { get; set; } - /// - /// 起始轨迹状态Id - /// - [IdRequired] - public int StartTrackStatusId { get; set; } + /// + /// 起始轨迹状态Id + /// + [IdRequired] + public int StartTrackStatusId { get; set; } - /// - /// 截止轨迹状态Id - /// - [IdRequired] - public int EndTrackStatusId { get; set; } + /// + /// 截止轨迹状态Id + /// + [IdRequired] + public int EndTrackStatusId { get; set; } - /// - /// 时效 (单位h) - /// - [Range(0.1, float.MaxValue, ErrorMessage = "时效必须大于0.1")] - public float TransportTimeSpan { get; set; } + /// + /// 时效 (单位h) + /// 注意:需要大于起始轨迹生成预警时间 + /// + [Range(0.1f, 9999.9f, ErrorMessage = "时效必须范围0.1-9999.9")] + public float TransportTimeSpan { get; set; } - /// - /// 起始轨迹生成预警时间 (单位h) - /// - [Range(0.1, float.MaxValue, ErrorMessage = "起始轨迹生成预警时间必须大于0.1")] - public float StartTrackWarningTimeSpan { get; set; } + /// + /// 起始轨迹生成预警时间 (单位h) + /// + [Range(0.1f, 9999.9f, ErrorMessage = "起始轨迹生成预警时间范围0.1-9999.9")] + public float StartTrackWarningTimeSpan { get; set; } - /// - /// 通知对象用户集合 - /// - [MinLength(1, ErrorMessage = "通知对象用户集合不能为空")] - public List NotifyUsers { get; set; } = new(); + /// + /// 通知对象用户集合 + /// + [MinLength(1, ErrorMessage = "通知对象用户集合不能为空")] + public List NotifyUsers { get; set; } = new(); } diff --git a/src/SJZY.Track.Application/Services/Warning/ReturnWarningService.cs b/src/SJZY.Track.Application/Services/Warning/ReturnWarningService.cs index 2154092c..00be37c8 100644 --- a/src/SJZY.Track.Application/Services/Warning/ReturnWarningService.cs +++ b/src/SJZY.Track.Application/Services/Warning/ReturnWarningService.cs @@ -156,6 +156,7 @@ public class ReturnWarningService : ApplicationService ActualReturnTimeSpan = FormatTimeSpan(x.ActualReturnTimeSpan), SystemReturnTimeSpan = FormatTimeSpan(x.SystemReturnTimeSpan), TrackCreateTimeSpan = FormatTimeSpan(x.TrackCreateTimeSpan), + IsTimeout = x.HasTimeout(), // 具体描述 TrackReturnTime = x.TrackReturnTime, diff --git a/src/SJZY.Track.Application/Services/Warning/TransportWarningService.cs b/src/SJZY.Track.Application/Services/Warning/TransportWarningService.cs index fc7293a4..baa69df7 100644 --- a/src/SJZY.Track.Application/Services/Warning/TransportWarningService.cs +++ b/src/SJZY.Track.Application/Services/Warning/TransportWarningService.cs @@ -378,6 +378,12 @@ public class TransportWarningService : ApplicationService [HttpPost("EditTransportWarningSceneRuleItem")] public async Task EditTransportWarningSceneRuleItem(EditTransportWarningSceneRuleItemInput input) { + // 起始轨迹生成预警时间不能大于时效 + if (input.Items.Count > 0 && input.Items.Any(x => x.StartTrackWarningTimeSpan >= x.TransportTimeSpan)) + { + throw new BusinessException(message: "起始轨迹生成预警时间不能大于等于时效,请检查"); + } + var rule = await _warningRuleRepository.GetWarningRuleByIdAsync(input.WarningId, WarningRuleType.运输时效预警); if (rule == null) { diff --git a/src/SJZY.Track.Domain/Aggregates/WarningAggregate/Return/ReturnWarningDetailsIndex.cs b/src/SJZY.Track.Domain/Aggregates/WarningAggregate/Return/ReturnWarningDetailsIndex.cs index 5acf8617..5b23f892 100644 --- a/src/SJZY.Track.Domain/Aggregates/WarningAggregate/Return/ReturnWarningDetailsIndex.cs +++ b/src/SJZY.Track.Domain/Aggregates/WarningAggregate/Return/ReturnWarningDetailsIndex.cs @@ -62,7 +62,6 @@ public class ReturnWarningDetailsIndex : IdBaseIndex //计算属性 public long? ActualReturnTimeSpan { get; set; } //实际回传用时(单位毫秒) - public long? SystemReturnTimeSpan { get; set; } //系统回传用时 (单位毫秒) public long TrackCreateTimeSpan { get; set; } //轨迹创建用时(单位毫秒) @@ -81,6 +80,13 @@ public class ReturnWarningDetailsIndex : IdBaseIndex SystemReturnTimeSpan = (long?) (TrackReturnTime.Value - TrackCreateTime).TotalMilliseconds; } + public bool HasTimeout() + { + if (ActualReturnTimeSpan.HasValue && ReturnTimeSpan.HasValue) + return TimeSpan.FromMilliseconds(ActualReturnTimeSpan.Value) > TimeSpan.FromHours(ReturnTimeSpan.Value); + return false; + } + // 匹配硅胶字段 public bool MatchExtra(string? compareFields, string? extra) {