using Fake.Domain.Entities.Auditing;
using TrackCenter.Domain.Consts;
namespace TrackCenter.Domain.Aggregates.OrderAggregate;
///
/// 轨迹订单主表
///
[SugarTable("t_order")]
public class OrderEntity : FullAuditedAggregateRoot
{
///
/// 自增主键
///
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
///
/// 订单号
///
[SugarColumn(ColumnName = "OrderNo")]
public string OrderNo { get; set; } = null!;
///
/// 订单类型(主数据枚举TrackOrderType)
///
[SugarColumn(ColumnName = "OrderType")]
public int OrderType { get; set; }
///
/// 应用
///
[SugarColumn(ColumnName = "AppKey")]
public string AppKey { get; set; }
///
/// 客户id(外部主体id)
///
[SugarColumn(ColumnName = "CustomId")]
public int CustomId { get; set; }
///
/// 订单是否完结(异步维护)
///
[SugarColumn(ColumnName = "IsCompleted")]
public bool IsCompleted { get; set; }
///
/// 最新推送轨迹code(异步维护)
///
[SugarColumn(ColumnName = "LatestPushTrackCode")]
public string? LatestPushTrackCode { get; set; }
///
/// 最新推送时间(异步维护)
///
[SugarColumn(ColumnName = "LatestPushTime")]
public DateTime? LatestPushTime { get; set; }
///
/// 推送异常信息
///
[SugarColumn(ColumnName = "LatestPushError")]
public string? LatestPushError { get; set; }
///
/// 最新轨迹状态(异步维护)
///
[SugarColumn(ColumnName = "LatestTrackStatus")]
public string? LatestTrackStatus { get; set; }
///
/// 最新轨迹内容(异步维护)
///
[SugarColumn(ColumnName = "LatestTrackContent")]
public string? LatestTrackContent { get; set; }
///
/// 最新轨迹内容英文(异步维护)
///
[SugarColumn(ColumnName = "LatestTrackEnContent")]
public string? LatestTrackEnContent { get; set; }
///
/// 最新轨迹时间(异步维护)
///
[SugarColumn(ColumnName = "LatestTrackTime")]
public DateTime? LatestTrackTime { get; set; }
///
/// 最新轨迹时区(异步维护)
///
[SugarColumn(ColumnName = "LatestTrackTimeZone")]
public float? LatestTrackTimeZone { get; set; }
///
/// 最新轨迹发生地(异步维护)
///
[SugarColumn(ColumnName = "LatestTrackPlace")]
public string? LatestTrackPlace { get; set; }
///
/// 目的城市
///
[SugarColumn(ColumnName = "ArrivalCity")]
public string ArrivalCity { get; set; } = null!;
///
/// 目的国家
///
[SugarColumn(ColumnName = "ArrivalCountry")]
public string ArrivalCountry { get; set; } = null!;
///
/// 目的港口
///
[SugarColumn(ColumnName = "ArrivalPort")]
public string? ArrivalPort { get; set; }
///
/// 起运城市
///
[SugarColumn(ColumnName = "LeaveCity")]
public string LeaveCity { get; set; } = null!;
///
/// 起运国家
///
[SugarColumn(ColumnName = "LeaveCountry")]
public string LeaveCountry { get; set; } = null!;
///
/// 问题类型(主数据枚举TrackQuestionType)
///
[SugarColumn(ColumnName = "QuestionType")]
public int QuestionType { get; set; }
///
/// 起运港口
///
[SugarColumn(ColumnName = "LeavePort")]
public string? LeavePort { get; set; }
///
/// 货物类型
///
[SugarColumn(ColumnName = "CargoType")]
public string? CargoType { get; set; }
///
/// 是否中转
///
[SugarColumn(ColumnName = "IsTransit")]
public bool? IsTransit { get; set; }
///
/// 产品编码
///
[SugarColumn(ColumnName = "ProductCode")]
public string? ProductCode { get; set; }
///
/// 时区缺失和发生地缺失标记,1表示时区,2表示发生地,3表示两种
///
[SugarColumn(ColumnName = "DeficiencyTag")]
public int? DeficiencyTag { get; set; }
///
/// 到达邮编
///
[SugarColumn(ColumnName = "ArrivalPostCode")]
public string? ArrivalPostCode { get; set; }
///
/// 到达州省
///
[SugarColumn(ColumnName = "ArrivalProvince")]
public string? ArrivalProvince { get; set; }
///
/// 预计到达时间
///
[SugarColumn(ColumnName = "EstimatedDeliveryDate")]
public DateTime? EstimatedDeliveryDate { get; set; }
///
/// 目的地时区
///
[SugarColumn(ColumnName = "DestinationTimeZone")]
public float? DestinationTimeZone { get; set; }
///
/// 冗余订单第三方订单号(创建订单,更新订单时维护)
///
[SugarColumn(ColumnName = "ThirdPartyOrderNumber")]
public string? ThirdPartyOrderNumber { get; set; }
[SugarColumn(IsIgnore = true)]
public List OrderFlights { get; set; }
[SugarColumn(IsIgnore = true)]
public List OrderPullStatus { get; set; }
public void ResetTrackInfo()
{
IsCompleted = false;
LatestTrackStatus = null;
LatestTrackContent = null;
LatestTrackEnContent = null;
LatestTrackTime = null;
LatestTrackPlace = null;
LatestTrackTimeZone = null;
EstimatedDeliveryDate = null;
DestinationTimeZone = null;
}
// 设置三方单号字段
public void SetThirdPartyOrderNumber(List orderPullStatusEntities)
{
if (orderPullStatusEntities.Count == 0)
{
ThirdPartyOrderNumber = GlobalConst.EmptyString;
return;
}
const string separator = "、";
var thirdPartyOrderNumbers = orderPullStatusEntities
.Where(x => !string.IsNullOrWhiteSpace(x.OrderNo))
.Select(x => $"{x.OrderNo}({x.ServiceProviderCode})")
.ToList();
if (thirdPartyOrderNumbers.Count == 0)
{
ThirdPartyOrderNumber = GlobalConst.EmptyString;
return;
}
ThirdPartyOrderNumber = string.Join(separator, thirdPartyOrderNumbers);
}
}