track/src/TrackCenter.Domain/Aggregates/OrderAggregate/OrderEntity.cs
2025-08-04 17:46:29 +08:00

240 lines
6.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);
}
}