240 lines
6.7 KiB
C#
240 lines
6.7 KiB
C#
using Fake.Domain.Entities.Auditing;
|
||
using TrackCenter.Domain.Consts;
|
||
|
||
namespace TrackCenter.Domain.Aggregates.OrderAggregate;
|
||
|
||
/// <summary>
|
||
/// 轨迹订单主表
|
||
/// </summary>
|
||
[SugarTable("t_order")]
|
||
public class OrderEntity : FullAuditedAggregateRoot<int>
|
||
{
|
||
/// <summary>
|
||
/// 自增主键
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)]
|
||
public int Id { get; set; }
|
||
|
||
/// <summary>
|
||
/// 订单号
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "OrderNo")]
|
||
public string OrderNo { get; set; } = null!;
|
||
|
||
/// <summary>
|
||
/// 订单类型(主数据枚举TrackOrderType)
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "OrderType")]
|
||
public int OrderType { get; set; }
|
||
|
||
/// <summary>
|
||
/// 应用
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "AppKey")]
|
||
public string AppKey { get; set; }
|
||
|
||
/// <summary>
|
||
/// 客户id(外部主体id)
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "CustomId")]
|
||
public int CustomId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 订单是否完结(异步维护)
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "IsCompleted")]
|
||
public bool IsCompleted { get; set; }
|
||
|
||
/// <summary>
|
||
/// 最新推送轨迹code(异步维护)
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "LatestPushTrackCode")]
|
||
public string? LatestPushTrackCode { get; set; }
|
||
|
||
/// <summary>
|
||
/// 最新推送时间(异步维护)
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "LatestPushTime")]
|
||
public DateTime? LatestPushTime { get; set; }
|
||
|
||
/// <summary>
|
||
/// 推送异常信息
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "LatestPushError")]
|
||
public string? LatestPushError { get; set; }
|
||
|
||
/// <summary>
|
||
/// 最新轨迹状态(异步维护)
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "LatestTrackStatus")]
|
||
public string? LatestTrackStatus { get; set; }
|
||
|
||
/// <summary>
|
||
/// 最新轨迹内容(异步维护)
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "LatestTrackContent")]
|
||
public string? LatestTrackContent { get; set; }
|
||
|
||
/// <summary>
|
||
/// 最新轨迹内容英文(异步维护)
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "LatestTrackEnContent")]
|
||
public string? LatestTrackEnContent { get; set; }
|
||
|
||
/// <summary>
|
||
/// 最新轨迹时间(异步维护)
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "LatestTrackTime")]
|
||
public DateTime? LatestTrackTime { get; set; }
|
||
|
||
/// <summary>
|
||
/// 最新轨迹时区(异步维护)
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "LatestTrackTimeZone")]
|
||
public float? LatestTrackTimeZone { get; set; }
|
||
|
||
/// <summary>
|
||
/// 最新轨迹发生地(异步维护)
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "LatestTrackPlace")]
|
||
public string? LatestTrackPlace { get; set; }
|
||
|
||
/// <summary>
|
||
/// 目的城市
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "ArrivalCity")]
|
||
public string ArrivalCity { get; set; } = null!;
|
||
|
||
/// <summary>
|
||
/// 目的国家
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "ArrivalCountry")]
|
||
public string ArrivalCountry { get; set; } = null!;
|
||
|
||
/// <summary>
|
||
/// 目的港口
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "ArrivalPort")]
|
||
public string? ArrivalPort { get; set; }
|
||
|
||
/// <summary>
|
||
/// 起运城市
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "LeaveCity")]
|
||
public string LeaveCity { get; set; } = null!;
|
||
|
||
/// <summary>
|
||
/// 起运国家
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "LeaveCountry")]
|
||
public string LeaveCountry { get; set; } = null!;
|
||
|
||
/// <summary>
|
||
/// 问题类型(主数据枚举TrackQuestionType)
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "QuestionType")]
|
||
public int QuestionType { get; set; }
|
||
|
||
/// <summary>
|
||
/// 起运港口
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "LeavePort")]
|
||
public string? LeavePort { get; set; }
|
||
|
||
/// <summary>
|
||
/// 货物类型
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "CargoType")]
|
||
public string? CargoType { get; set; }
|
||
|
||
/// <summary>
|
||
/// 是否中转
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "IsTransit")]
|
||
public bool? IsTransit { get; set; }
|
||
|
||
/// <summary>
|
||
/// 产品编码
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "ProductCode")]
|
||
public string? ProductCode { get; set; }
|
||
|
||
/// <summary>
|
||
/// 时区缺失和发生地缺失标记,1表示时区,2表示发生地,3表示两种
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "DeficiencyTag")]
|
||
public int? DeficiencyTag { get; set; }
|
||
|
||
/// <summary>
|
||
/// 到达邮编
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "ArrivalPostCode")]
|
||
public string? ArrivalPostCode { get; set; }
|
||
|
||
/// <summary>
|
||
/// 到达州省
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "ArrivalProvince")]
|
||
public string? ArrivalProvince { get; set; }
|
||
|
||
/// <summary>
|
||
/// 预计到达时间
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "EstimatedDeliveryDate")]
|
||
public DateTime? EstimatedDeliveryDate { get; set; }
|
||
|
||
/// <summary>
|
||
/// 目的地时区
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "DestinationTimeZone")]
|
||
public float? DestinationTimeZone { get; set; }
|
||
|
||
/// <summary>
|
||
/// 冗余订单第三方订单号(创建订单,更新订单时维护)
|
||
/// </summary>
|
||
[SugarColumn(ColumnName = "ThirdPartyOrderNumber")]
|
||
public string? ThirdPartyOrderNumber { get; set; }
|
||
|
||
[SugarColumn(IsIgnore = true)]
|
||
public List<OrderFlightEntity> OrderFlights { get; set; }
|
||
|
||
[SugarColumn(IsIgnore = true)]
|
||
public List<OrderPullStatusEntity> 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<OrderPullStatusEntity> 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);
|
||
}
|
||
}
|