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>
public DateTime? TrackTime { get; set; }
public DateTime TrackTime { get; set; }
/// <summary>
/// 轨迹发生时区

View File

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

View File

@ -114,4 +114,9 @@ public class TrackDetail
/// 扩展信息字段,用与轨迹推送的附加字段
/// </summary>
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,
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, "不支持的排序方式");
}

View File

@ -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
/// <param name="orderId"></param>
/// <param name="orderNo"></param>
/// <param name="systemId"></param>
/// <param name="sortMethod"></param>
/// <returns></returns>
[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;
//根据订单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;
}