change-params:回传预警明细增加是否超时状态

add-validation: 约束回传预警中起始轨迹时间不能大于等于时效
change-validation:同步文档中预警时效范围配置
This commit is contained in:
hardstylewyl 2025-03-26 09:51:29 +08:00
parent cfccd59ce1
commit c395261d2f
6 changed files with 65 additions and 45 deletions

View File

@ -39,7 +39,7 @@ public class EditReturnWarningRuleItemDto
/// <summary> /// <summary>
/// 时效(单位h) /// 时效(单位h)
/// </summary> /// </summary>
[Range(0.1, 99, ErrorMessage = "回传时效范围0.1-99")] [Range(0.1f, 99.9f, ErrorMessage = "回传时效范围0.1-99.9")]
public float ReturnTimeSpan { get; set; } public float ReturnTimeSpan { get; set; }
/// <summary> /// <summary>

View File

@ -133,6 +133,12 @@ public sealed class ReturnWarningDetailsDto
/// </summary> /// </summary>
public string TrackCreateTimeSpan { get; set; } public string TrackCreateTimeSpan { get; set; }
/// <summary>
/// 是否超时,只有命中了kpi考核的才有可能超时
/// 如果为超时则标红【实际回传】字段
/// </summary>
public bool IsTimeout { get; set; }
/// <summary> /// <summary>
/// 是否有KPI考核 /// 是否有KPI考核
/// </summary> /// </summary>

View File

@ -47,14 +47,15 @@ public class EditTransportWarningSceneRuleItemDto
/// <summary> /// <summary>
/// 时效 (单位h) /// 时效 (单位h)
/// 注意:需要大于起始轨迹生成预警时间
/// </summary> /// </summary>
[Range(0.1, float.MaxValue, ErrorMessage = "时效必须大于0.1")] [Range(0.1f, 9999.9f, ErrorMessage = "时效必须范围0.1-9999.9")]
public float TransportTimeSpan { get; set; } public float TransportTimeSpan { get; set; }
/// <summary> /// <summary>
/// 起始轨迹生成预警时间 (单位h) /// 起始轨迹生成预警时间 (单位h)
/// </summary> /// </summary>
[Range(0.1, float.MaxValue, ErrorMessage = "起始轨迹生成预警时间必须大于0.1")] [Range(0.1f, 9999.9f, ErrorMessage = "起始轨迹生成预警时间范围0.1-9999.9")]
public float StartTrackWarningTimeSpan { get; set; } public float StartTrackWarningTimeSpan { get; set; }
/// <summary> /// <summary>

View File

@ -156,6 +156,7 @@ public class ReturnWarningService : ApplicationService
ActualReturnTimeSpan = FormatTimeSpan(x.ActualReturnTimeSpan), ActualReturnTimeSpan = FormatTimeSpan(x.ActualReturnTimeSpan),
SystemReturnTimeSpan = FormatTimeSpan(x.SystemReturnTimeSpan), SystemReturnTimeSpan = FormatTimeSpan(x.SystemReturnTimeSpan),
TrackCreateTimeSpan = FormatTimeSpan(x.TrackCreateTimeSpan), TrackCreateTimeSpan = FormatTimeSpan(x.TrackCreateTimeSpan),
IsTimeout = x.HasTimeout(),
// 具体描述 // 具体描述
TrackReturnTime = x.TrackReturnTime, TrackReturnTime = x.TrackReturnTime,

View File

@ -378,6 +378,12 @@ public class TransportWarningService : ApplicationService
[HttpPost("EditTransportWarningSceneRuleItem")] [HttpPost("EditTransportWarningSceneRuleItem")]
public async Task<UnifyResultDto> EditTransportWarningSceneRuleItem(EditTransportWarningSceneRuleItemInput input) public async Task<UnifyResultDto> 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.运输时效预警); var rule = await _warningRuleRepository.GetWarningRuleByIdAsync(input.WarningId, WarningRuleType.运输时效预警);
if (rule == null) if (rule == null)
{ {

View File

@ -62,7 +62,6 @@ public class ReturnWarningDetailsIndex : IdBaseIndex
//计算属性 //计算属性
public long? ActualReturnTimeSpan { get; set; } //实际回传用时(单位毫秒) public long? ActualReturnTimeSpan { get; set; } //实际回传用时(单位毫秒)
public long? SystemReturnTimeSpan { get; set; } //系统回传用时 (单位毫秒) public long? SystemReturnTimeSpan { get; set; } //系统回传用时 (单位毫秒)
public long TrackCreateTimeSpan { get; set; } //轨迹创建用时(单位毫秒) public long TrackCreateTimeSpan { get; set; } //轨迹创建用时(单位毫秒)
@ -81,6 +80,13 @@ public class ReturnWarningDetailsIndex : IdBaseIndex
SystemReturnTimeSpan = (long?) (TrackReturnTime.Value - TrackCreateTime).TotalMilliseconds; 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) public bool MatchExtra(string? compareFields, string? extra)
{ {