Merge branch 'S07' into test

This commit is contained in:
hardstylewyl 2025-04-11 17:40:06 +08:00
commit f46a6fb312
5 changed files with 55 additions and 7 deletions

View File

@ -70,7 +70,7 @@ public class TrackOrderDetailDto
/// <summary> /// <summary>
/// 轨迹发生时间 /// 轨迹发生时间
/// </summary> /// </summary>
public DateTime? TrackTime { get; set; } public DateTime TrackTime { get; set; }
/// <summary> /// <summary>
/// 轨迹发生时区 /// 轨迹发生时区

View File

@ -33,7 +33,7 @@ public class GetTrackInputV2 : OrderNosInfo
public enum SortMethod public enum SortMethod
{ {
/// <summary> /// <summary>
/// 按轨迹发生时间排序 /// 按轨迹发生时间升序
/// </summary> /// </summary>
ByTrackTime = 0, ByTrackTime = 0,
@ -43,12 +43,22 @@ public enum SortMethod
ByTrackTimeDesc = 1, ByTrackTimeDesc = 1,
/// <summary> /// <summary>
/// 模板排序+轨迹发生时间 /// 模板排序+轨迹发生时间升序
/// </summary> /// </summary>
ByTemplateAndTrackTime = 2, ByTemplateAndTrackTime = 2,
/// <summary> /// <summary>
/// 模板排序+轨迹发生时间 /// 模板排序+轨迹发生时间
/// </summary> /// </summary>
ByTemplateAndTrackTimeDesc = 3 ByTemplateAndTrackTimeDesc = 3,
/// <summary>
/// 按创建时间升序
/// </summary>
ByCreateTime = 4,
/// <summary>
/// 按创建时间降序
/// </summary>
ByCreateTimeDesc = 5
} }

View File

@ -114,4 +114,9 @@ public class TrackDetail
/// 扩展信息字段,用与轨迹推送的附加字段 /// 扩展信息字段,用与轨迹推送的附加字段
/// </summary> /// </summary>
public string? Extra { get; set; } public string? Extra { get; set; }
/// <summary>
/// 轨迹创建时间
/// </summary>
public DateTime CreateTime { get; set; }
} }

View File

@ -88,7 +88,8 @@ public partial class TrackService
TrackPlacePostcode = x.TrackPlacePostcode, TrackPlacePostcode = x.TrackPlacePostcode,
DestinationTimeZone = x.DestinationTimeZone, DestinationTimeZone = x.DestinationTimeZone,
EstimatedDeliveryDate = x.EstimatedDeliveryDate, EstimatedDeliveryDate = x.EstimatedDeliveryDate,
Extra = x.Extra Extra = x.Extra,
CreateTime = x.CreateTime
}).ToList(); }).ToList();
res.Add(item); res.Add(item);
@ -166,7 +167,8 @@ public partial class TrackService
TrackPlacePostcode = x.TrackPlacePostcode, TrackPlacePostcode = x.TrackPlacePostcode,
DestinationTimeZone = x.DestinationTimeZone, DestinationTimeZone = x.DestinationTimeZone,
EstimatedDeliveryDate = x.EstimatedDeliveryDate, EstimatedDeliveryDate = x.EstimatedDeliveryDate,
Extra = x.Extra Extra = x.Extra,
CreateTime = x.CreateTime,
}).ToList(); }).ToList();
res.Add(item); res.Add(item);
@ -209,6 +211,12 @@ public partial class TrackService
case SortMethod.ByTemplateAndTrackTimeDesc: case SortMethod.ByTemplateAndTrackTimeDesc:
list.ForEach(item => item.TrackDetails.Sort((a, b) => DateTimeHelper.ConvertUtc0Compare(b.Time, b.TimeZone ?? 8, a.Time, a.TimeZone ?? 8))); list.ForEach(item => item.TrackDetails.Sort((a, b) => DateTimeHelper.ConvertUtc0Compare(b.Time, b.TimeZone ?? 8, a.Time, a.TimeZone ?? 8)));
break; 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: default:
throw new ArgumentOutOfRangeException(nameof(sortMethod), sortMethod, "不支持的排序方式"); throw new ArgumentOutOfRangeException(nameof(sortMethod), sortMethod, "不支持的排序方式");
} }

View File

@ -2,6 +2,7 @@ using System.Linq.Expressions;
using SJZY.Expand.AliyunOSS; using SJZY.Expand.AliyunOSS;
using SJZY.Track.Application.Contract.Dtos.ProvideServices; using SJZY.Track.Application.Contract.Dtos.ProvideServices;
using SJZY.Track.Application.Contract.Dtos.TrackOrder; using SJZY.Track.Application.Contract.Dtos.TrackOrder;
using SJZY.Track.Application.Helpers;
using SJZY.Track.Application.Services.Warning.Handlers; using SJZY.Track.Application.Services.Warning.Handlers;
using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Aggregates.TrackContentAggregate; using SJZY.Track.Domain.Aggregates.TrackContentAggregate;
@ -134,9 +135,10 @@ public class TrackOrderService : ApplicationService
/// <param name="orderId"></param> /// <param name="orderId"></param>
/// <param name="orderNo"></param> /// <param name="orderNo"></param>
/// <param name="systemId"></param> /// <param name="systemId"></param>
/// <param name="sortMethod"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost("GetDetails")] [HttpPost("GetDetails")]
public async Task<List<TrackOrderDetailDto>> GetTracksAsync(int? orderId, string? orderNo, int? systemId) public async Task<List<TrackOrderDetailDto>> GetTracksAsync(int? orderId, string? orderNo, int? systemId, SortMethod sortMethod = SortMethod.ByCreateTimeDesc)
{ {
Expression<Func<OrderEntity, bool>>? whereExpression = null; Expression<Func<OrderEntity, bool>>? whereExpression = null;
//根据订单id查询 //根据订单id查询
@ -186,6 +188,29 @@ public class TrackOrderService : ApplicationService
a.TrackTimeZone = $"GMT {flag}{timeZoneStr.RemovePostFix(":00")}"; 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; return list;
} }