change:轨迹查询对外逻辑调整
This commit is contained in:
parent
63e4c8b999
commit
0b8e9da918
@ -5,17 +5,18 @@ public class GetTrackOutput
|
||||
/// <summary>
|
||||
/// 订单号
|
||||
/// </summary>
|
||||
public string OrderNo { get; set; }
|
||||
public string OrderNo { get; set; } = null!;
|
||||
|
||||
public List<TrackDetail> TrackDetails { get; set; }
|
||||
public List<TrackDetail> TrackDetails { get; set; } = new();
|
||||
}
|
||||
|
||||
public class TrackDetail
|
||||
{
|
||||
public string Code { get; set; }
|
||||
public string Status { get; set; }
|
||||
public string Content { get; set; }
|
||||
public string Location { get; set; }
|
||||
public string Code { get; set; } = null!;
|
||||
public string Status { get; set; } = null!;
|
||||
public string? Content { get; set; }
|
||||
public string? OriginContent { get; set; }
|
||||
public string Location { get; set; } = null!;
|
||||
public DateTime Time { get; set; }
|
||||
public float TimeZone { get; set; }
|
||||
}
|
||||
@ -39,6 +39,7 @@ public partial class TrackService
|
||||
Code = x.TrackCode,
|
||||
Status = x.TrackStatus,
|
||||
Content = x.TrackContent,
|
||||
OriginContent = x.OriginTrackContent,
|
||||
Location = x.TrackPlace,
|
||||
Time = x.TrackTime.AddHours(input.TimeZone ?? 8 - x.TrackTimeZone),
|
||||
TimeZone = input.TimeZone ?? 8
|
||||
@ -54,20 +55,11 @@ public partial class TrackService
|
||||
|
||||
private async Task TrackDetailSort(List<GetTrackOutput> list, GetTrackInput input)
|
||||
{
|
||||
switch (input.SortMethod)
|
||||
{
|
||||
case SortMethod.ByTrackTime:
|
||||
// tips:quick-sort 直接修改原list
|
||||
list.ForEach(item => item.TrackDetails.Sort((a, b) => a.Time.CompareTo(b.Time)));
|
||||
break;
|
||||
case SortMethod.ByTrackTimeDesc:
|
||||
list.ForEach(item => item.TrackDetails.Sort((a, b) => b.Time.CompareTo(a.Time)));
|
||||
break;
|
||||
case SortMethod.ByTemplate:
|
||||
var orderTemplates = await _provideQueries
|
||||
.GetOrderTemplateLinksAsync(input.OrderType, input.OrderNos);
|
||||
var distinctTemplateIds = orderTemplates.Select(x => x.TemplateId).Distinct().ToList();
|
||||
var templateContent = await _provideQueries.GetOrderedTrackCodesAsync(distinctTemplateIds);
|
||||
|
||||
list.ForEach(item =>
|
||||
{
|
||||
var codes = new List<string>();
|
||||
@ -85,9 +77,32 @@ public partial class TrackService
|
||||
.OrderBy(x => codes.IndexOf(x.Code)) // 按照在模板内容的位置排序
|
||||
.ToList();
|
||||
});
|
||||
|
||||
switch (input.SortMethod)
|
||||
{
|
||||
case SortMethod.ByTrackTime:
|
||||
// tips:quick-sort 直接修改原list
|
||||
list.ForEach(item => item.TrackDetails.Sort((a, b) => a.Time.CompareTo(b.Time)));
|
||||
break;
|
||||
case SortMethod.ByTrackTimeDesc:
|
||||
list.ForEach(item => item.TrackDetails.Sort((a, b) => b.Time.CompareTo(a.Time)));
|
||||
break;
|
||||
case SortMethod.ByTemplate:
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException(nameof(input.SortMethod), input.SortMethod, "不支持的排序方式");
|
||||
}
|
||||
|
||||
// 显示原轨迹
|
||||
list.ForEach(item =>
|
||||
{
|
||||
item.TrackDetails.ForEach(track =>
|
||||
{
|
||||
if (templateContent.First(x => x.Code == track.Code).ShowOrigin)
|
||||
{
|
||||
track.Content = track.OriginContent;
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -1,7 +0,0 @@
|
||||
namespace SJZY.Track.Application.Services.TrackTemplates
|
||||
{
|
||||
public interface ITrackTemplateService
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
@ -16,4 +16,9 @@ public class OrderedTrackCodeDto
|
||||
/// 是否对外
|
||||
/// </summary>
|
||||
public bool IsExternal { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 显示原轨迹
|
||||
/// </summary>
|
||||
public bool ShowOrigin { get; set; }
|
||||
}
|
||||
@ -20,20 +20,6 @@ public class ProvideQueries : ISugarRepository, IProvideQueries,
|
||||
Context = SqlsugarScopeBasic.GetContextSafely("default");
|
||||
}
|
||||
|
||||
public async Task<List<OrderTemplateLinkDto>> GetOrderTemplateLinksAsync(int orderType,
|
||||
params string[] orderNumbers)
|
||||
{
|
||||
return await Context.Queryable<OrderEntity>()
|
||||
.LeftJoin<OrderTemplateEntity>((a, b) => a.Id == b.OrderId)
|
||||
.Where(a => a.OrderType == orderType && orderNumbers.Contains(a.OrderNo))
|
||||
.Select((a, b) => new OrderTemplateLinkDto
|
||||
{
|
||||
OrderNo = a.OrderNo,
|
||||
TemplateId = b.TrackTemplateId
|
||||
})
|
||||
.ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<List<OrderTemplateLinkDto>> GetOrderTemplateLinksAsync(int orderType, List<string> orderNumbers)
|
||||
{
|
||||
return await Context.Queryable<OrderEntity>()
|
||||
@ -49,15 +35,17 @@ public class ProvideQueries : ISugarRepository, IProvideQueries,
|
||||
|
||||
public async Task<List<OrderedTrackCodeDto>> GetOrderedTrackCodesAsync(List<int> templateIds)
|
||||
{
|
||||
return await Context.Queryable<TrackTemplateContentEntity>()
|
||||
.LeftJoin<TrackContentEntity>((a, b) => a.TrackContentId == b.Id)
|
||||
.Where(a => templateIds.Contains(a.TrackTemplateId))
|
||||
.OrderBy(a => a.Sort)
|
||||
.Select((a, b) => new OrderedTrackCodeDto
|
||||
return await Context.Queryable<TrackTemplateEntity>()
|
||||
.LeftJoin<TrackTemplateContentEntity>((a, b) => a.Id == b.TrackTemplateId)
|
||||
.LeftJoin<TrackContentEntity>((a, b, c) => b.TrackContentId == c.Id)
|
||||
.Where(a => templateIds.Contains(a.Id))
|
||||
.OrderBy((a, b) => b.Sort)
|
||||
.Select((a, b, c) => new OrderedTrackCodeDto
|
||||
{
|
||||
TemplateId = a.TrackTemplateId,
|
||||
Code = b.Code,
|
||||
IsExternal = a.IsExternal
|
||||
TemplateId = a.Id,
|
||||
ShowOrigin = a.ShowOrigin,
|
||||
Code = c.Code,
|
||||
IsExternal = b.IsExternal
|
||||
})
|
||||
.ToListAsync();
|
||||
}
|
||||
|
||||
@ -85,6 +85,7 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract<TrackDetail
|
||||
.Field(f => f.TrackStatus)
|
||||
.Field(f => f.TrackCode)
|
||||
.Field(f => f.TrackContent)
|
||||
.Field(f => f.OriginTrackContent)
|
||||
.Field(f => f.TrackPlace)
|
||||
.Field(f => f.TrackTime)
|
||||
.Field(f => f.TrackTimeZone)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user