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