using SJZY.Track.Application.Contract.Dtos.ProvideServices;
namespace SJZY.Track.Application.Contract.Events;
public class TrackUpsertEvent
{
///
/// 子系统id
///
public int SubSystemId { get; set; }
///
/// 客户id
///
public int CustomId { get; set; }
///
/// 订单id
///
public OrderIdentifier[] OrderIdentifiers { get; set; } = null!;
///
/// 轨迹唯一标识(用于单个订单更新单条轨迹,如果有的话优先级最高)
///
public string? EsId { get; set; }
///
/// 操作人(null则默认系统)
///
public string? OperationMan { get; set; }
///
/// 操作人id
///
public int OperationManId { get; set; }
///
/// true新增,false更新
///
public bool IsAdd { get; set; }
///
/// 轨迹内容代码
///
public string TrackCode { get; set; } = null!;
///
/// 轨迹发生地
///
public string TrackPlace { get; set; } = null!;
///
/// 轨迹发生时间
///
public DateTime TrackTime { get; set; }
///
/// 更改后的轨迹发生时间,无需更改保持为空
///
public DateTime? NewTrackTime { get; set; }
///
/// 轨迹发生时区
///
public float TrackTimeZone { get; set; }
///
/// 已经处理过的订单
///
public List Visited { get; set; } = new();
public TrackRefreshStruct TrackRefreshData { get; set; }
///
/// 客户是否可见
///
public bool IsVisibility { get; set; }
///
/// 数据来源:1外部服务商创建,2内部系统创建,3人工创建
///
public int Source { get; set; }
///
/// 轨迹备注
///
public string? Remarks { get; set; }
///
/// 附件集合
///
public List? Files { get; set; }
///
/// 轨迹内容,若为空则取轨迹内容表中该轨迹Code对应的轨迹内容
///
public string? Content { get; set; }
///
/// 轨迹内容英文,若为空则取轨迹内容表中该轨迹Code对应的轨迹英文内容
///
public string? EnStatus { get; set; }
///
/// 轨迹发生地(城市)
///
public string? TrackPlaceCity { get; set; }
///
/// 轨迹发生地(城市)Id
///
public int? TrackPlaceCityId { get; set; }
///
/// 轨迹发生地(省/州)
///
public string? TrackPlaceProvince { get; set; }
///
///轨迹发生地(省/州)Id
///
public int? TrackPlaceProvinceId { get; set; }
///
/// 轨迹发生地(国家/地区)
///
public string? TrackPlaceNation { get; set; }
///
/// 轨迹发生地(国家/地区)Id
///
public int? TrackPlaceNationId { get; set; }
///
/// 轨迹发生地邮编
///
public string? TrackPlacePostcode { get; set; }
///
/// 预计到达时间
///
public DateTime? EstimatedDeliveryDate { get; set; }
///
/// 目的地时区
///
public float? DestinationTimeZone { get; set; }
///
/// 重复的情况下,用什么比较
///
public string? CompareFields { get; set; }
///
/// 扩展信息字段,用与轨迹推送的附加字段
///
public string? Extra { get; set; }
///
/// 是否强制推送
///
public bool ForcedPush { get; set; }
///
/// 指定是否推送
///
public bool IsToMq { get; set; }
public override string ToString()
{
return
$"[{(IsAdd ? "TrackInsert" : "TrackUpdate")} by {OperationMan}] SubSystemId: {SubSystemId}, OrderIds: {string.Join(",",
OrderIdentifiers.Select(x => x.OrderId))}, TrackCode: {TrackCode}, TrackPlace: {TrackPlace}, TrackTime: {TrackTime}";
}
}