using Newtonsoft.Json; using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; namespace SJZY.Track.Application.Services.Warning.Signals; /// /// 预警信号,目前只是操作轨迹时产生 /// 未来可以通过扩展类型+扩展字段的形式增加更多种预警触发源 /// public readonly struct WarningSignal { public WarningSignalType Type { get; } public int OrderId { get; } public string EsId { get; } public int TrackStatusId { get; } public int TrackContentId { get; } // public string OrderNo { get; set; } // public int OrderType { get; set; } // public int SubSystemId { get; set; } [System.Text.Json.Serialization.JsonConstructor] [JsonConstructor] public WarningSignal(WarningSignalType type, int orderId, string esId, int trackStatusId, int trackContentId) { Type = type; OrderId = orderId; EsId = esId; TrackStatusId = trackStatusId; TrackContentId = trackContentId; } public static List FromTrack(List tracks, WarningSignalType type) { return tracks .Select(x => FromTrack(x, type)) .ToList(); } public static WarningSignal FromTrack(TrackDetailsIndex track, WarningSignalType type) { return new WarningSignal( type, track.OrderId, track.Id, track.TrackStatusId, track.TrackContentId ); } }