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