diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetOrderDetailsInput.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetOrderDetailsInput.cs
index 9c5956ae..a6a3c4c7 100644
--- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetOrderDetailsInput.cs
+++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetOrderDetailsInput.cs
@@ -70,7 +70,7 @@ public class TrackOrderDetailDto
///
/// 轨迹发生时间
///
- public DateTime? TrackTime { get; set; }
+ public DateTime TrackTime { get; set; }
///
/// 轨迹发生时区
diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackInput.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackInput.cs
index 44df6107..f14b3885 100644
--- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackInput.cs
+++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackInput.cs
@@ -33,7 +33,7 @@ public class GetTrackInputV2 : OrderNosInfo
public enum SortMethod
{
///
- /// 按轨迹发生时间排序
+ /// 按轨迹发生时间升序
///
ByTrackTime = 0,
@@ -43,12 +43,22 @@ public enum SortMethod
ByTrackTimeDesc = 1,
///
- /// 模板排序+轨迹发生时间
+ /// 模板排序+轨迹发生时间升序
///
ByTemplateAndTrackTime = 2,
///
/// 模板排序+轨迹发生时间
///
- ByTemplateAndTrackTimeDesc = 3
+ ByTemplateAndTrackTimeDesc = 3,
+
+ ///
+ /// 按创建时间升序
+ ///
+ ByCreateTime = 4,
+
+ ///
+ /// 按创建时间降序
+ ///
+ ByCreateTimeDesc = 5
}
diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackOutput.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackOutput.cs
index e03a46f0..820ed535 100644
--- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackOutput.cs
+++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackOutput.cs
@@ -114,4 +114,9 @@ public class TrackDetail
/// 扩展信息字段,用与轨迹推送的附加字段
///
public string? Extra { get; set; }
+
+ ///
+ /// 轨迹创建时间
+ ///
+ public DateTime CreateTime { get; set; }
}
diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.Query.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.Query.cs
index caebb3ee..44aee2b1 100644
--- a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.Query.cs
+++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.Query.cs
@@ -88,7 +88,8 @@ public partial class TrackService
TrackPlacePostcode = x.TrackPlacePostcode,
DestinationTimeZone = x.DestinationTimeZone,
EstimatedDeliveryDate = x.EstimatedDeliveryDate,
- Extra = x.Extra
+ Extra = x.Extra,
+ CreateTime = x.CreateTime
}).ToList();
res.Add(item);
@@ -166,7 +167,8 @@ public partial class TrackService
TrackPlacePostcode = x.TrackPlacePostcode,
DestinationTimeZone = x.DestinationTimeZone,
EstimatedDeliveryDate = x.EstimatedDeliveryDate,
- Extra = x.Extra
+ Extra = x.Extra,
+ CreateTime = x.CreateTime,
}).ToList();
res.Add(item);
@@ -209,6 +211,12 @@ public partial class TrackService
case SortMethod.ByTemplateAndTrackTimeDesc:
list.ForEach(item => item.TrackDetails.Sort((a, b) => DateTimeHelper.ConvertUtc0Compare(b.Time, b.TimeZone ?? 8, a.Time, a.TimeZone ?? 8)));
break;
+ case SortMethod.ByCreateTime:
+ list.ForEach(item => item.TrackDetails.Sort((a, b) => a.CreateTime.CompareTo(b.CreateTime)));
+ break;
+ case SortMethod.ByCreateTimeDesc:
+ list.ForEach(item => item.TrackDetails.Sort((a, b) => b.CreateTime.CompareTo(a.CreateTime)));
+ break;
default:
throw new ArgumentOutOfRangeException(nameof(sortMethod), sortMethod, "不支持的排序方式");
}
diff --git a/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs b/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs
index 701d72cb..86a44c4b 100644
--- a/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs
+++ b/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs
@@ -2,6 +2,7 @@ using System.Linq.Expressions;
using SJZY.Expand.AliyunOSS;
using SJZY.Track.Application.Contract.Dtos.ProvideServices;
using SJZY.Track.Application.Contract.Dtos.TrackOrder;
+using SJZY.Track.Application.Helpers;
using SJZY.Track.Application.Services.Warning.Handlers;
using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Aggregates.TrackContentAggregate;
@@ -134,9 +135,10 @@ public class TrackOrderService : ApplicationService
///
///
///
+ ///
///
[HttpPost("GetDetails")]
- public async Task> GetTracksAsync(int? orderId, string? orderNo, int? systemId)
+ public async Task> GetTracksAsync(int? orderId, string? orderNo, int? systemId, SortMethod sortMethod = SortMethod.ByCreateTimeDesc)
{
Expression>? whereExpression = null;
//根据订单id查询
@@ -186,6 +188,29 @@ public class TrackOrderService : ApplicationService
a.TrackTimeZone = $"GMT {flag}{timeZoneStr.RemovePostFix(":00")}";
}
});
+
+ // 排序
+ switch (sortMethod)
+ {
+ case SortMethod.ByTrackTime:
+ list.Sort((a, b) => DateTimeHelper.ConvertUtc0Compare(a.TrackTime, a.TrackTimeZoneValue, b.TrackTime, b.TrackTimeZoneValue));
+ break;
+ case SortMethod.ByTrackTimeDesc:
+ list.Sort((a, b) => DateTimeHelper.ConvertUtc0Compare(b.TrackTime, b.TrackTimeZoneValue, a.TrackTime, a.TrackTimeZoneValue));
+ break;
+ case SortMethod.ByTemplateAndTrackTime:
+ case SortMethod.ByTemplateAndTrackTimeDesc:
+ throw new BusinessException(message: "该接口暂不支持该模板排序方式,如需支持请联系轨迹中台负责人");
+ case SortMethod.ByCreateTime:
+ list.Sort((a, b) => a.CreateTime.CompareTo(b.CreateTime));
+ break;
+ case SortMethod.ByCreateTimeDesc:
+ list.Sort((a, b) => b.CreateTime.CompareTo(a.CreateTime));
+ break;
+ default:
+ throw new ArgumentOutOfRangeException(nameof(sortMethod), sortMethod, null);
+ }
+
return list;
}