add-interface:

- 提供接口模型给前端开发使用
This commit is contained in:
hardstylewyl 2025-03-03 10:22:23 +08:00
parent b53db5c7bf
commit 3382bcff76
31 changed files with 1586 additions and 0 deletions

View File

@ -0,0 +1,106 @@
namespace Track.Warning.VNext.Application.Contract.Dtos.Warning.Complete;
/// <summary>
/// 完整预警
/// </summary>
public class CompleteWarningDetailsDto // todo:需要根据状态排序
{
/// <summary>
/// 预警明细唯一id
/// </summary>
public string EsId { get; set; }
/// <summary>
/// 子系统id
/// </summary>
public int SubSystemId { get; set; }
/// <summary>
/// 子系统名称
/// </summary>
public string SubSystemName { get; set; } // todo:id换名称
/// <summary>
/// 订单类型
/// </summary>
public int OrderType { get; set; }
/// <summary>
/// 订单类型名称
/// </summary>
public string OrderTypeName { get; set; } // todo:type换名称
/// <summary>
/// 订单id
/// </summary>
public int OrderId { get; set; }
/// <summary>
/// 订单号
/// </summary>
public string OrderNo { get; set; }
/// <summary>
/// 状态 (待处理样式标红)
/// 1:待处理,2:已处理,3:已关闭
/// </summary>
public int Status { get; set; }
/// <summary>
/// 客户id
/// </summary>
public int CustomId { get; set; }
/// <summary>
/// 客户简称
/// </summary>
public int CustomName { get; set; } // todo:id换名称
/// <summary>
/// 缺失轨迹状态
/// </summary>
public string MissingTrackStatus { get; set; } // todo:id换名称
//视图属性 todo:可以从订单主表拿到
/// <summary>
/// 最新轨迹状态
/// </summary>
public string LatestTrackStatus { get; set; }
/// <summary>
/// 最新轨迹内容
/// </summary>
public string LatestTrackContent { get; set; }
/// <summary>
/// 最新轨迹发生地
/// </summary>
public string LatestTrackPlace { get; set; }
/// <summary>
/// 最新轨迹发生时间
/// </summary>
public DateTime LatestTrackTime { get; set; }
/// <summary>
/// 最新轨迹发生时区
/// </summary>
public float LatestTrackTimeZone { get; set; }
/// <summary>
/// 通知对象
/// </summary>
public string NotifyUserNames { get; set; }
/// <summary>
/// 预警创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 预警处理时间
/// </summary>
public DateTime? ProcessedTime { get; set; }
}

View File

@ -0,0 +1,72 @@
using Track.Warning.VNext.Application.Contract.Dtos.Common;
using Track.Warning.VNext.Application.Contract.Dtos.Warning.Return;
namespace Track.Warning.VNext.Application.Contract.Dtos.Warning.Complete;
/// <summary>
/// 完整预警规则配置条目
/// </summary>
public class CompleteWarningRuleItemDto
{
/// <summary>
/// 配置条目唯一id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 预警规则主体id
/// </summary>
public int WarningId { get; set; }
/// <summary>
/// 订单类型 e.g FBA订单、海运单
/// </summary>
public List<OrderTypeDto> OrderType { get; set; }
/// <summary>
/// 检查点轨迹状态id
/// </summary>
public int CheckPointTrackStatusId { get; set; }
/// <summary>
/// 检查点轨迹状态
/// </summary>
public string CheckPointTrackStatus { get; set; }
/// <summary>
/// 要求的轨迹状态集合 e.g [揽收/入库中],[提交报关]
/// </summary>
public List<RequireTrackStatusItem> RequireTrackStatus { get; set; }
/// <summary>
/// 通知对象用户集合
/// </summary>
public List<NotifyUserDto> NotifyUsers { get; set; }
}
/// <summary>
/// 订单类型描述
/// </summary>
public class OrderTypeDto
{
/// <summary>
/// 订单类型
/// </summary>
public int OrderType { get; set; }
/// <summary>
/// 订单类型名称
/// </summary>
public string OrderTypeName { get; set; }
}
/// <summary>
/// 要求的轨迹状态项目(每个项目的状态为或关系)
/// </summary>
public class RequireTrackStatusItem
{
/// <summary>
/// 轨迹状态集合
/// </summary>
public List<TrackStatusDto> Statuses { get; set; } = new();
}

View File

@ -0,0 +1,60 @@
using System.ComponentModel.DataAnnotations;
using Track.Warning.VNext.Application.Contract.DataAnnotations;
using Track.Warning.VNext.Application.Contract.Dtos.Common;
namespace Track.Warning.VNext.Application.Contract.Dtos.Warning.Complete;
/// <summary>
/// 编辑完整预警配置
/// </summary>
public class EditCompleteWarningRuleItemInput
{
/// <summary>
/// 预警规主体id
/// </summary>
[IdRequired]
public int WarningId { get; set; }
/// <summary>
/// 预警规则配置项目(列表内容传递)
/// </summary>
public List<EditCompleteWarningRuleItemDto> Items { get; set; } = new();
}
/// <summary>
/// 用于编辑的预警规则内容
/// </summary>
public class EditCompleteWarningRuleItemDto
{
/// <summary>
/// 规则项目唯一id(传0视为新增)
/// </summary>
public int Id { get; set; }
/// <summary>
/// 订单类型集合(,分割) e.g. 1,2,3
/// </summary>
[Required]
public string OrderTypes { get; set; }
/// <summary>
/// 检查点轨迹状态id
/// </summary>
[IdRequired]
public int CheckPointTrackStatusId { get; set; }
/// <summary>
/// 要求的轨迹状态id集合 e.g. [[1,3],[5,7]]
/// required: 集合元素(子集合)不要有交集!
/// </summary>
[Required]
[MinLength(1, ErrorMessage = "要求的轨迹状态id集合不能为空")]
public List<List<int>> RequireTrackStatus { get; set; }
/// <summary>
/// 通知对象用户集合
/// </summary>
[Required]
[MinLength(1, ErrorMessage = "通知对象用户集合不能为空")]
public List<NotifyUserDto> NotifyUsers { get; set; } = new();
}

View File

@ -0,0 +1,15 @@
using Track.Warning.VNext.Application.Contract.DataAnnotations;
namespace Track.Warning.VNext.Application.Contract.Dtos.Warning.Complete;
/// <summary>
/// 获取完整预警规则条目列表
/// </summary>
public class GetCompleteWarningRuleItemInput
{
/// <summary>
/// 规则主体id
/// </summary>
[IdRequired]
public int WarningId { get; set; }
}

View File

@ -0,0 +1,65 @@
using Track.Warning.VNext.Application.Contract.Dtos.Common;
namespace Track.Warning.VNext.Application.Contract.Dtos.Warning.Complete;
/// <summary>
/// 分页获取完成预警详情
/// </summary>
public class GetPageCompleteWarningDetailsInput : PageInfoInput
{
/// <summary>
/// 子系统id
/// </summary>
public int? SubSystemId { get; set; }
/// <summary>
/// 订单号,多个订单号(,分割)
/// </summary>
public string? OrderNos { get; set; }
/// <summary>
/// 订单类型
/// </summary>
public int? OrderType { get; set; }
/// <summary>
/// 状态
/// 1:待处理,2:已处理,3:已关闭
/// </summary>
public int? Status { get; set; }
/// <summary>
/// 客户id
/// </summary>
public int? CustomId { get; set; }
/// <summary>
/// 缺失轨迹状态id
/// </summary>
public int? MissingTrackStatusId { get; set; }
/// <summary>
/// 通知对象id
/// </summary>
public int? NotifyUserId { get; set; }
/// <summary>
/// 预警创建时间开始
/// </summary>
public DateTime? WarningCreateTimeStart { get; set; }
/// <summary>
/// 预警创建时间截止
/// </summary>
public DateTime? WarningCreateTimeEnd { get; set; }
/// <summary>
/// 预警处理时间开始
/// </summary>
public DateTime? WarningHandleTimeStart { get; set; }
/// <summary>
/// 预警处理时间截止
/// </summary>
public DateTime? WarningHandleTimeEnd { get; set; }
}

View File

@ -0,0 +1,16 @@
using System.ComponentModel.DataAnnotations;
namespace Track.Warning.VNext.Application.Contract.DataAnnotations;
/// <summary>
/// 要求id存在并且大于0
/// </summary>
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
public sealed class IdRequiredAttribute : RangeAttribute
{
public IdRequiredAttribute()
: base(1, int.MaxValue)
{
ErrorMessage = "{0} is required and must be greater than 0";
}
}

View File

@ -0,0 +1,28 @@
namespace Track.Warning.VNext.Application.Contract.Dtos.Warning;
/// <summary>
/// 获取预警规则主体
/// </summary>
public class GetWarningRuleInput
{
/// <summary>
/// 子系统id
/// </summary>
public int? SubSystemId { get; set; }
/// <summary>
/// 关键字(kpi/客户名称 模糊)
/// </summary>
public string? KeyWord { get; set; }
/// <summary>
/// 是否启用(留null查全部)
/// </summary>
public bool? IsEnabled { get; set; }
/// <summary>
/// 预警类型(留null查所有类型)
/// 1:运输时效,2:回传时效,3:完整预警
/// </summary>
public int? WarningType { get; set; }
}

View File

@ -0,0 +1,19 @@
using System.ComponentModel.DataAnnotations;
using Track.Warning.VNext.Application.Contract.DataAnnotations;
namespace Track.Warning.VNext.Application.Contract.Dtos.Common;
public sealed class NotifyUserDto
{
/// <summary>
/// 用户id
/// </summary>
[IdRequired]
public int UserId { get; set; }
/// <summary>
/// 用户名
/// </summary>
[Required]
public string UserName { get; set; }
}

View File

@ -0,0 +1,51 @@
using System.ComponentModel.DataAnnotations;
using Track.Warning.VNext.Application.Contract.DataAnnotations;
using Track.Warning.VNext.Application.Contract.Dtos.Common;
namespace Track.Warning.VNext.Application.Contract.Dtos.Warning.Return;
/// <summary>
/// 编辑回传时效配置
/// </summary>
public class EditReturnWarningRuleItemInput
{
/// <summary>
/// 预警规主体id
/// </summary>
[IdRequired]
public int WarningId { get; set; }
/// <summary>
/// 预警规则配置项目(列表内容传递)
/// </summary>
public List<EditReturnWarningRuleItemDto> Items { get; set; } = new();
}
/// <summary>
/// 用于编辑的预警规则配置项目
/// </summary>
public class EditReturnWarningRuleItemDto
{
/// <summary>
/// 唯一id(传0视为新增)
/// </summary>
public int Id { get; set; }
/// <summary>
/// 轨迹状态Id集合(,分割)
/// </summary>
[Required]
public string TrackStatusIds { get; set; }
/// <summary>
/// 时效(单位h)
/// </summary>
[Range(0.1, float.MaxValue, ErrorMessage = "时效必须大于0.1")]
public float ReturnTimeSpan { get; set; }
/// <summary>
/// 通知对象用户集合
/// </summary>
[MinLength(1, ErrorMessage = "通知对象用户集合不能为空")]
public List<NotifyUserDto> NotifyUsers { get; set; } = new();
}

View File

@ -0,0 +1,95 @@
using Track.Warning.VNext.Application.Contract.Dtos.Common;
namespace Track.Warning.VNext.Application.Contract.Dtos.Warning.Return;
/// <summary>
/// 分页获取回传预警明细输入
/// </summary>
public class GetPageReturnWarningDetailsInput : PageInfoInput
{
/// <summary>
/// 子系统id
/// </summary>
public int? SubSystemId { get; set; }
/// <summary>
/// 订单号,多个订单号(,分割)
/// </summary>
public string? OrderNos { get; set; }
/// <summary>
/// 订单类型
/// </summary>
public int? OrderType { get; set; }
/// <summary>
/// 状态
/// 1:人工介入 2:重试中 3:推送完成 4:已关闭
/// </summary>
public int? Status { get; set; }
/// <summary>
/// 客户id
/// </summary>
public int? CustomId { get; set; }
/// <summary>
/// 轨迹状态id
/// </summary>
public int? TrackStatusId { get; set; }
/// <summary>
/// 轨迹内容id
/// </summary>
public int? TrackContentId { get; set; }
/// <summary>
/// 是否有Kpi考核 (传null为查全部)
/// </summary>
public bool? IsKpi { get; set; }
/// <summary>
/// 通知对象用户id
/// </summary>
public int? NotifyUserId { get; set; }
/// <summary>
/// 轨迹发生时间开始
/// </summary>
public DateTime? TrackTimeStart { get; set; }
/// <summary>
/// 轨迹发生时间截止
/// </summary>
public DateTime? TrackTimeEnd { get; set; }
/// <summary>
/// 轨迹创建时间开始
/// </summary>
public DateTime? TrackCreateTimeStart { get; set; }
/// <summary>
/// 轨迹创建时间截止
/// </summary>
public DateTime? TrackCreateTimeEnd { get; set; }
/// <summary>
/// 轨迹回传时间开始
/// </summary>
public DateTime? TrackReturnTimeStart { get; set; }
/// <summary>
/// 轨迹回传时间截止
/// </summary>
public DateTime? TrackReturnTimeEnd { get; set; }
/// <summary>
/// 预警创建时间开始
/// </summary>
public DateTime? WarningCreateTimeStart { get; set; }
/// <summary>
/// 预警创建时间截止
/// </summary>
public DateTime? WarningCreateTimeEnd { get; set; }
}

View File

@ -0,0 +1,15 @@
using Track.Warning.VNext.Application.Contract.DataAnnotations;
namespace Track.Warning.VNext.Application.Contract.Dtos.Warning.Return;
/// <summary>
/// 获取回传报文日志
/// </summary>
public class GetReturnMessageRecordInput
{
/// <summary>
/// 回传预警明细id
/// </summary>
[IdRequired]
public string WarningDetailsId { get; set; }
}

View File

@ -0,0 +1,15 @@
using Track.Warning.VNext.Application.Contract.DataAnnotations;
namespace Track.Warning.VNext.Application.Contract.Dtos.Warning.Return;
/// <summary>
/// 获取回传预警规则项目列表
/// </summary>
public class GetReturnWarningRuleItemInput
{
/// <summary>
/// 规则主体id
/// </summary>
[IdRequired]
public int WarningId { get; set; }
}

View File

@ -0,0 +1,32 @@
namespace Track.Warning.VNext.Application.Contract.Dtos.Warning.Return;
/// <summary>
/// 回传报文日志
/// </summary>
public sealed class ReturnMessageRecordDto
{
/// <summary>
/// 回传报文唯一id
/// </summary>
public string EsId { get; set; }
/// <summary>
/// 回传预警明细id
/// </summary>
public string ReturnWarningDetailsId { get; set; }
/// <summary>
/// 是否成功
/// </summary>
public bool IsSuccess { get; set; }
/// <summary>
/// 报文内容 Json字符串
/// </summary>
public string Message { get; set; }
/// <summary>
/// 报文创建时间
/// </summary>
public DateTime CreateTime { get; set; }
}

View File

@ -0,0 +1,156 @@
namespace Track.Warning.VNext.Application.Contract.Dtos.Warning.Return;
/// <summary>
/// 回传预警明细
/// todo:需要根据状态排序
/// </summary>
public sealed class ReturnWarningDetailsDto
{
/// <summary>
/// 预警明细唯一id
/// </summary>
public string EsId { get; set; }
/// <summary>
/// 子系统id
/// </summary>
public int SubSystemId { get; set; }
/// <summary>
/// 子系统名称
/// </summary>
public string SubSystemName { get; set; } // todo:id换名称
/// <summary>
/// 订单类型
/// </summary>
public int OrderType { get; set; }
/// <summary>
/// 订单类型名称
/// </summary>
public string OrderTypeName { get; set; } // todo:type换名称
/// <summary>
/// 订单id
/// </summary>
public int OrderId { get; set; }
/// <summary>
/// 订单号
/// </summary>
public string OrderNo { get; set; }
/// <summary>
/// 状态 1:人工介入 2:重试中 3:推送完成 4:已关闭
/// </summary>
public int Status { get; set; }
/// <summary>
/// 客户id
/// </summary>
public int CustomId { get; set; }
/// <summary>
/// 客户简称
/// </summary>
public string CustomName { get; set; } // todo:id换名称
/// <summary>
/// 轨迹状态
/// </summary>
public string TrackStatus { get; set; }
/// <summary>
/// 轨迹代码
/// </summary>
public string TrackCode { get; set; }
/// <summary>
/// 轨迹内容
/// </summary>
public string TrackContent { get; set; }
/// <summary>
/// 推送轨迹代码
/// </summary>
public string PushTrackCode { get; set; }
/// <summary>
/// 推送轨迹状态
/// </summary>
public string PushTrackStatus { get; set; }
/// <summary>
/// 推送轨迹内容
/// </summary>
public string PushTrackContent { get; set; }
/// <summary>
/// 轨迹发生地
/// </summary>
public string TrackPlace { get; set; }
/// <summary>
/// 轨迹发生时间
/// </summary>
public DateTime TrackTime { get; set; }
/// <summary>
/// 轨迹发生时区
/// </summary>
public float TrackTimeZone { get; set; }
/// <summary>
/// 轨迹创建时间
/// </summary>
public DateTime TrackCreateTime { get; set; }
/// <summary>
/// 轨迹回传时间
/// </summary>
public DateTime? TrackReturnTime { get; set; }
/// <summary>
/// 回传时效
/// </summary>
public float? ReturnTimeSpan { get; set; }
// todo:计算属性
/// <summary>
/// 实际回传用时(单位毫秒)
/// </summary>
public long? ActualReturnTimeSpan { get; set; }
/// <summary>
/// 系统回传用时(单位毫秒)
/// </summary>
public long? SystemReturnTimeSpan { get; set; }
/// <summary>
/// 轨迹创建用时(单位毫秒)
/// </summary>
public long TrackCreateTimeSpan { get; set; }
/// <summary>
/// 是否有KPI考核
/// </summary>
public bool IsExistsKpi { get; set; }
/// <summary>
/// 回传重试次数
/// </summary>
public int RetryCount { get; set; }
/// <summary>
/// 通知对象 (未命中kpi考核一定不存在通知人)
/// </summary>
public string? NotifyUserNames { get; set; }
/// <summary>
/// 预警创建时间
/// </summary>
public DateTime CreateTime { get; set; }
}

View File

@ -0,0 +1,39 @@
using Track.Warning.VNext.Application.Contract.Dtos.Common;
namespace Track.Warning.VNext.Application.Contract.Dtos.Warning.Return;
public class ReturnWarningRuleItemDto
{
/// <summary>
/// 规则项目唯一 id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 轨迹状态
/// </summary>
public List<TrackStatusDto> TrackStatus { get; set; }
/// <summary>
/// 时效(单位h)
/// </summary>
public float ReturnTimeSpan { get; set; }
/// <summary>
/// 通知对象
/// </summary>
public List<NotifyUserDto> NotifyUsers { get; set; }
}
public class TrackStatusDto
{
/// <summary>
/// 轨迹状态id
/// </summary>
public int TrackStatusId { get; set; }
/// <summary>
/// 轨迹状态名称
/// </summary>
public string TrackStatus { get; set; }
}

View File

@ -0,0 +1,66 @@
using System.ComponentModel.DataAnnotations;
using Track.Warning.VNext.Application.Contract.DataAnnotations;
using Track.Warning.VNext.Application.Contract.Dtos.Common;
namespace Track.Warning.VNext.Application.Contract.Dtos.Warning.Transport;
public class EditTransportWarningSceneRuleItemInput
{
/// <summary>
/// 预警规主体id
/// </summary>
[IdRequired]
public int WarningId { get; set; }
/// <summary>
/// 运输预警场景id
/// </summary>
[IdRequired]
public int SceneId { get; set; }
/// <summary>
/// 预警规则配置项目(列表内容传递)
/// </summary>
public List<EditTransportWarningSceneRuleItemDto> Items { get; set; } = new();
}
/// <summary>
/// 用于编辑的预警规则配置项目
/// </summary>
public class EditTransportWarningSceneRuleItemDto
{
/// <summary>
/// 规则项目id(传0视为新增)
/// </summary>
public int Id { get; set; }
/// <summary>
/// 起始轨迹状态Id
/// </summary>
[IdRequired]
public int StartTrackStatusId { get; set; }
/// <summary>
/// 截止轨迹状态Id
/// </summary>
[IdRequired]
public int EndTrackStatusId { get; set; }
/// <summary>
/// 时效 (单位h)
/// </summary>
[Range(0.1, float.MaxValue, ErrorMessage = "时效必须大于0.1")]
public float TransportTimeSpan { get; set; }
/// <summary>
/// 起始轨迹生成预警时间 (单位h)
/// </summary>
[Range(0.1, float.MaxValue, ErrorMessage = "起始轨迹生成预警时间必须大于0.1")]
public float StartTrackWarningTimeSpan { get; set; }
/// <summary>
/// 通知对象用户集合
/// </summary>
[MinLength(1, ErrorMessage = "通知对象用户集合不能为空")]
public List<NotifyUserDto> NotifyUsers { get; set; } = new();
}

View File

@ -0,0 +1,54 @@
using Track.Warning.VNext.Application.Contract.Dtos.Common;
namespace Track.Warning.VNext.Application.Contract.Dtos.Warning.Transport;
/// <summary>
/// 分页获取运输预警明细
/// </summary>
public class GetPageTransportWarningDetailsInput : PageInfoInput
{
/// <summary>
/// 子系统id
/// </summary>
public int? SubSystemId { get; set; }
/// <summary>
/// 订单号,多个订单号(,分割)
/// </summary>
public string? OrderNos { get; set; }
/// <summary>
/// 订单类型
/// </summary>
public int? OrderType { get; set; }
/// <summary>
/// 状态
/// </summary>
public int? Status { get; set; }
/// <summary>
/// 客户Id
/// </summary>
public int? CustomId { get; set; }
/// <summary>
/// 预警名称
/// </summary>
public string? WarningName { get; set; }
/// <summary>
/// 通知对象用户Id
/// </summary>
public int? NotifyUserId { get; set; }
/// <summary>
/// 创建时间开始
/// </summary>
public DateTime? CreateTimeStart { get; set; }
/// <summary>
/// 创建时间截止
/// </summary>
public DateTime? CreateTimeEnd { get; set; }
}

View File

@ -0,0 +1,15 @@
using Track.Warning.VNext.Application.Contract.DataAnnotations;
namespace Track.Warning.VNext.Application.Contract.Dtos.Warning.Transport;
/// <summary>
/// 获取运输时效预警规则场景
/// </summary>
public class GetTransportWarningSceneInput
{
/// <summary>
/// 预警主体id
/// </summary>
[IdRequired]
public int WarningId { get; set; }
}

View File

@ -0,0 +1,21 @@
using Track.Warning.VNext.Application.Contract.DataAnnotations;
namespace Track.Warning.VNext.Application.Contract.Dtos.Warning.Transport;
/// <summary>
/// 获取运输时效预警场景规则条目列表
/// </summary>
public class GetTransportWarningSceneRuleItemInput
{
/// <summary>
/// 预警主体id
/// </summary>
[IdRequired]
public int WarningId { get; set; }
/// <summary>
/// 运输预警场景id
/// </summary>
[IdRequired]
public int SceneId { get; set; }
}

View File

@ -0,0 +1,149 @@
namespace Track.Warning.VNext.Application.Contract.Dtos.Warning.Transport;
/// <summary>
/// 运输时效预警明细
/// </summary>
public sealed class TransportWarningDetailsDto // todo:需要根据状态排序
{
/// <summary>
/// 预警明细唯一id
/// </summary>
public string EsId { get; set; }
/// <summary>
/// 子系统id
/// </summary>
public int SubSystemId { get; set; }
/// <summary>
/// 子系统名称
/// </summary>
public string SubSystemName { get; set; } // todo:id换名称
/// <summary>
/// 客户id
/// </summary>
public int CustomId { get; set; }
/// <summary>
/// 客户简称
/// </summary>
public string CustomName { get; set; } // todo:id换名称
/// <summary>
/// 订单id
/// </summary>
public int OrderId { get; set; }
/// <summary>
/// 订单号
/// </summary>
public string OrderNo { get; set; }
/// <summary>
/// 订单类型
/// </summary>
public int OrderType { get; set; }
/// <summary>
/// 订单类型名称
/// </summary>
public string OrderTypeName { get; set; } // todo:type换名称
// 实时属性 todo:从订单查询
/// <summary>
/// 最新轨迹内容
/// </summary>
public string LatestTrackContent { get; set; }
/// <summary>
/// 最新轨迹时间
/// </summary>
public DateTime LatestTrackTime { get; set; }
/// <summary>
/// 最新轨迹发生时区
/// </summary>
public float LatestTrackTimeZone { get; set; }
/// <summary>
/// 最新轨迹发生地
/// </summary>
public string LatestTrackPlace { get; set; }
/// <summary>
/// 通知对象
/// </summary>
public string NotifyUserNames { get; set; }
/// <summary>
/// 起始轨迹状态
/// </summary>
public string StartTrackStatus { get; set; }
/// <summary>
/// 起始轨迹内容
/// </summary>
public string StartTrackContent { get; set; }
/// <summary>
/// 起始轨迹发生时间
/// </summary>
public DateTime StartTrackTime { get; set; }
/// <summary>
/// 起始轨迹时区
/// </summary>
public float StartTrackTimeZone { get; set; }
/// <summary>
/// 截止轨迹状态
/// </summary>
public string EndTrackStatus { get; set; }
/// <summary>
/// 截止轨迹内容
/// </summary>
public string? EndTrackContent { get; set; }
/// <summary>
/// 截止轨迹发生时间
/// </summary>
public DateTime? EndTrackTime { get; set; }
/// <summary>
/// 截止轨迹时区
/// </summary>
public float? EndTrackTimeZone { get; set; }
/// <summary>
/// 预警名称 (预警主体名称 如字节全程时效)
/// </summary>
public string WarningName { get; set; }
/// <summary>
/// 预警规则描述(用于tooltip展示)
/// </summary>
public string WarningRuleDescription { get; set; }
/// <summary>
/// 累计运输时间
/// </summary>
public string CumulativeTimeSpan { get; set; } // todo:需要转换为某个格式
/// <summary>
/// 预警状态 (根据key展示对应名称,即将超时需要标红)
/// 1:即将超时 2:已超时 3:已完成 4:超时完成 5:已关闭,初始为【即将超时】
/// </summary>
public int Status { get; set; }
/// <summary>
/// 预警创建时间
/// </summary>
public DateTime CreateTime { get; set; }
}

View File

@ -0,0 +1,52 @@
namespace Track.Warning.VNext.Application.Contract.Dtos.Warning.Transport;
/// <summary>
/// 预警规则场景
/// </summary>
public class TransportWarningSceneDto
{
/// <summary>
/// 场景唯一id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 预警规则主体id
/// </summary>
public int WarningId { get; set; }
/// <summary>
/// 场景摘要(用于展示场景tabs)
/// </summary>
public string Summary { get; set; } // todo:将规则场景一些列因素转换为一段描述
/// <summary>
/// 是否中转(单一)
/// </summary>
public bool? IsTransit { get; set; }
/// <summary>
/// 货物类型(多个,分割)
/// </summary>
public string? CargoType { get; set; }
/// <summary>
/// 起运港口(多个,分割)
/// </summary>
public string? LeavePort { get; set; }
/// <summary>
/// 产品编码(多个,分割)
/// </summary>
public string? ProductCode { get; set; }
/// <summary>
/// 月份(多个/分割)
/// </summary>
public string? Months { get; set; }
/// <summary>
/// 区域Id(单一)
/// </summary>
public int? AreaId { get; set; }
}

View File

@ -0,0 +1,49 @@
using Track.Warning.VNext.Application.Contract.Dtos.Common;
namespace Track.Warning.VNext.Application.Contract.Dtos.Warning.Transport;
/// <summary>
/// 运输时效场景规则项目
/// </summary>
public class TransportWarningSceneRuleItemDto
{
/// <summary>
/// 规则项目唯一id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 起始轨迹状态Id
/// </summary>
public int StartTrackStatusId { get; set; }
/// <summary>
/// 起始轨迹状态
/// </summary>
public string StartTrackStatus { get; set; }
/// <summary>
/// 截止轨迹状态Id
/// </summary>
public int EndTrackStatusId { get; set; }
/// <summary>
/// 截止轨迹状态
/// </summary>
public string EndTrackStatus { get; set; }
/// <summary>
/// 时效 (单位h)
/// </summary>
public float TransportTimeSpan { get; set; }
/// <summary>
/// 起始轨迹生成预警时间 (单位h)
/// </summary>
public float StartTrackWarningTimeSpan { get; set; }
/// <summary>
/// 通知对象用户集合
/// </summary>
public List<NotifyUserDto> NotifyUsers { get; set; } = new();
}

View File

@ -0,0 +1,47 @@
using Track.Warning.VNext.Application.Contract.DataAnnotations;
namespace Track.Warning.VNext.Application.Contract.Dtos.Warning.Transport;
public class UpsertTransportWarningSceneInput
{
/// <summary>
/// 场景唯一id (传0视为新增)
/// </summary>
public int Id { get; set; }
/// <summary>
/// 预警规则主体id
/// </summary>
[IdRequired]
public int WarningId { get; set; }
/// <summary>
/// 是否中转(单一)
/// </summary>
public bool? IsTransit { get; set; }
/// <summary>
/// 货物类型(多个,分割)
/// </summary>
public string? CargoType { get; set; }
/// <summary>
/// 起运港口(多个,分割)
/// </summary>
public string? LeavePort { get; set; }
/// <summary>
/// 产品编码(多个,分割)
/// </summary>
public string? ProductCode { get; set; }
/// <summary>
/// 月份(多个/分割)
/// </summary>
public string? Months { get; set; }
/// <summary>
/// 区域Id(单一)
/// </summary>
public int? AreaId { get; set; }
}

View File

@ -0,0 +1,45 @@
using System.ComponentModel.DataAnnotations;
using Track.Warning.VNext.Application.Contract.DataAnnotations;
namespace Track.Warning.VNext.Application.Contract.Dtos.Warning;
/// <summary>
/// 更新或者新增预警规则主体
/// </summary>
public class UpsertWarningRuleInput
{
/// <summary>
/// 唯一id(传0视为新增)
/// </summary>
public int Id { get; set; }
/// <summary>
/// 子系统id
/// </summary>
[IdRequired]
public int SubSystemId { get; set; } //子系统id
/// <summary>
/// 客户id
/// </summary>
[IdRequired]
public int CustomId { get; set; } //客户id
/// <summary>
/// 预警规则名称
/// </summary>
[Required]
public string Name { get; set; }
/// <summary>
/// 是否启用
/// </summary>
[Required]
public bool IsEnabled { get; set; }
/// <summary>
/// 预警类型,1:运输时效,2:回传时效,3:完整预警
/// </summary>
[Range(1, 3, ErrorMessage = "预警类型只能选取以下值,1:运输时效,2:回传时效,3:完整预警")]
public int WarningType { get; set; }
}

View File

@ -0,0 +1,52 @@
namespace Track.Warning.VNext.Application.Contract.Dtos.Warning;
/// <summary>
/// 预警规则主体
/// </summary>
public sealed class WarningRuleDto
{
/// <summary>
/// 规则主体唯一id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 子系统id
/// </summary>
public int SubSystemId { get; set; } //子系统id
/// <summary>
/// 子系统名称
/// </summary>
public int SubSystemName { get; set; } // todo:id换name
/// <summary>
/// 客户id
/// </summary>
public int CustomId { get; set; } //客户id
/// <summary>
/// 客户简称
/// </summary>
public int CustomName { get; set; } // todo:id换name
/// <summary>
/// 预警规则名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 是否启用
/// </summary>
public bool IsEnabled { get; set; }
/// <summary>
/// 预警类型,1:运输时效,2:回传时效,3:完整预警
/// </summary>
public int WarningType { get; set; }
/// <summary>
/// 规则版本,用于标识规则产物(如预警信息)
/// </summary>
public string Version { get; set; }
}

View File

@ -0,0 +1,48 @@
using Microsoft.AspNetCore.Mvc;
using Track.Warning.VNext.Application.Contract.Dtos.Common;
using Track.Warning.VNext.Application.Contract.Dtos.Warning.Complete;
namespace Track.Warning.VNext.Controllers.Warning;
/// <summary>
/// 完整预警服务
/// </summary>
[ApiController]
[Route("Warning/Complete")]
public class CompleteWarningService : ControllerBase
{
/// <summary>
/// 编辑完整预警规则列表
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("EditCompleteWarningRuleItem")]
public Task<UnifyResultDto> EditCompleteWarningRuleItem(EditCompleteWarningRuleItemInput input)
{
return Task.FromResult(new UnifyResultDto());
}
/// <summary>
/// 获取完整预警规则列表
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("GetCompleteWarningRuleItem")]
public Task<UnifyResultDto<List<CompleteWarningRuleItemDto>>>
GetCompleteWarningRuleItem(GetCompleteWarningRuleItemInput input)
{
return Task.FromResult(new UnifyResultDto<List<CompleteWarningRuleItemDto>>());
}
/// <summary>
/// 分页获取完整预警详情
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("GetPageCompleteWarningDetails")]
public Task<UnifyPageResultDto<CompleteWarningDetailsDto>>
GetPageCompleteWarningDetails(GetPageCompleteWarningDetailsInput input)
{
return Task.FromResult(new UnifyPageResultDto<CompleteWarningDetailsDto>());
}
}

View File

@ -0,0 +1,58 @@
using Microsoft.AspNetCore.Mvc;
using Track.Warning.VNext.Application.Contract.Dtos.Common;
using Track.Warning.VNext.Application.Contract.Dtos.Warning.Return;
namespace Track.Warning.VNext.Controllers.Warning;
/// <summary>
/// 回传预警服务
/// </summary>
[ApiController]
[Route("Warning/Return")]
public class ReturnWarningService : ControllerBase
{
/// <summary>
/// 编辑回传预警规则列表
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("EditReturnWarningRuleItem")]
public Task<UnifyResultDto> EditReturnWarningRuleItem(EditReturnWarningRuleItemInput input)
{
return Task.FromResult(new UnifyResultDto());
}
/// <summary>
/// 分页获取回传预警明细
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("GetPageReturnWarningDetails")]
public Task<UnifyPageResultDto<ReturnWarningDetailsDto>>
GetPageReturnWarningDetails(GetPageReturnWarningDetailsInput input)
{
return Task.FromResult(new UnifyPageResultDto<ReturnWarningDetailsDto>());
}
/// <summary>
/// 获取回传报文日志
/// </summary>
[HttpPost("GetReturnMessageRecord")]
public Task<UnifyResultDto<List<ReturnMessageRecordDto>>>
GetReturnMessageRecord(GetReturnMessageRecordInput input)
{
return Task.FromResult(new UnifyResultDto<List<ReturnMessageRecordDto>>());
}
/// <summary>
/// 获取回传预警规则列表
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("GetReturnWarningRuleItem")]
public Task<UnifyResultDto<List<ReturnWarningRuleItemDto>>>
GetReturnWarningRuleItem(GetReturnWarningRuleItemInput input)
{
return Task.FromResult(new UnifyResultDto<List<ReturnWarningRuleItemDto>>());
}
}

View File

@ -0,0 +1,71 @@
using Track.Warning.VNext.Application.Contract.Dtos.Warning.Transport;
/// <summary>
/// 运输时效预警服务
/// </summary>
[ApiController]
[Route("Warning/Transport")]
public class TransportWarningService : ControllerBase
{
/// <summary>
/// 编辑预警规则项目(全量)
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("EditTransportWarningSceneRuleItem")]
public Task<UnifyResultDto>
EditTransportWarningSceneRuleItem(EditTransportWarningSceneRuleItemInput input)
{
return Task.FromResult(new UnifyResultDto());
}
/// <summary>
/// 分页获取运输时效预警明细
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("GetPageTransportWarningDetails")]
public Task<UnifyPageResultDto<TransportWarningDetailsDto>>
GetPageTransportWarningDetails(GetPageTransportWarningDetailsInput input)
{
return Task.FromResult(new UnifyPageResultDto<TransportWarningDetailsDto>());
}
/// <summary>
/// 获取预警规则场景
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("GetTransportWarningScene")]
public Task<UnifyResultDto<List<TransportWarningSceneDto>>>
GetTransportWarningScene(GetTransportWarningSceneInput input)
{
return Task.FromResult(new UnifyResultDto<List<TransportWarningSceneDto>>());
}
/// <summary>
/// 获取运输时效场景规则项目
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("GetTransportWarningSceneRuleItem")]
public Task<UnifyResultDto<List<TransportWarningSceneRuleItemDto>>>
GetTransportWarningSceneRuleItem(GetTransportWarningSceneRuleItemInput input)
{
return Task.FromResult(new UnifyResultDto<List<TransportWarningSceneRuleItemDto>>());
}
/// <summary>
/// 新增/更新 运输时效场景
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("UpsertTransportWarningScene")]
public Task<UnifyResultDto<IdBaseDto>>
UpsertTransportWarningScene(UpsertTransportWarningSceneInput input)
{
return Task.FromResult(new UnifyResultDto<IdBaseDto>());
}
}

View File

@ -0,0 +1,46 @@
using Track.Warning.VNext.Application.Contract.Dtos.Warning;
namespace Track.Warning.VNext.Controllers.Warning;
/// <summary>
/// 预警规则主体
/// </summary>
[ApiController]
[Route("Warning")]
public class WarningService : ControllerBase
{
/// <summary>
/// 新增/修改预警规则主体
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("UpsertWarningRule")]
public async Task<UnifyResultDto<IdBaseDto>> UpsertWarningRule(UpsertWarningRuleInput input)
{
// var id = await _warningRuleRepository.UpsertReturnIdAsync(new WarningRuleEntity(
// input.Id,
// input.Name,
// input.SubSystemId,
// input.CustomId,
// input.IsEnabled,
// input.WarningType)
// );
return new UnifyResultDto<IdBaseDto>(true, new IdBaseDto
{
Id = input.Id
});
}
/// <summary>
/// 获取预警规则列表
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("GetWarningRule")]
public Task<UnifyResultDto<List<WarningRuleDto>>> GetWarningRule(GetWarningRuleInput input)
{
//var result = await _warningRuleRepository.GetWarningRuleListAsync(input.SubSystemId, input.KeyWord, input.IsEnabled, input.WarningType);
throw new NotImplementedException();
}
}

View File

@ -21,4 +21,25 @@ public partial class GlobalConst
/// 订单操作记录 es索引名称(模板按天)
/// </summary>
public const string OrderOperationRecordIndex = "sjzy_track_order_operation_records";
// todo:以下为新增
/// <summary>
/// 运输时效预警明细 es索引名称(模板按天)
/// </summary>
public const string TransportWarningDetailsIndex = "sjzy_track_transport_warning_details";
/// <summary>
/// 回传时效预警明细 es索引名称(模板按天)
/// </summary>
public const string ReturnWarningDetailsIndex = "sjzy_track_return_warning_details";
/// <summary>
/// 回传报文日志 es索引名称(模板按天)
/// </summary>
public const string ReturnMessageRecordIndex = "sjzy_track_return_message_records";
/// <summary>
/// 完整预警明细 es索引名称(模板按天)
/// </summary>
public const string CompleteWarningDetailsIndex = "sjzy_track_complete_warning_details";
}

View File

@ -0,0 +1,8 @@
namespace SJZY.Track.Domain.Enums;
public enum WarningRuleType
{
运输时效预警 = 1,
回传时效预警 = 2,
完整预警 = 3
}