opt:优化轨迹新增
This commit is contained in:
parent
78c0aa1191
commit
49eda2a3aa
@ -106,6 +106,9 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
|
||||
var orderIds = @event.OrderIdentifiers.Select(x => x.OrderId).ToArray();
|
||||
var tracks = await _trackDetailsRepository.GetListAsync(orderIds, @event.TrackCode);
|
||||
|
||||
var newOrderIds = orderIds.Except(tracks.Select(x => x.OrderId)).ToArray();
|
||||
var trackContents = await _provideQueries.MatchTrackContentAsync(newOrderIds, @event.TrackCode);
|
||||
|
||||
TrackDetailsIndex? firstTrack = null;
|
||||
|
||||
var insertTracks = new List<TrackDetailsIndex>();
|
||||
@ -136,9 +139,8 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
|
||||
CreateTime = DateTime.Now
|
||||
};
|
||||
|
||||
//todo:可以优化?
|
||||
// 根据轨迹code在订单模板内容中寻找匹配的
|
||||
var trackContent = await _provideQueries.MatchTrackContentAsync(order.OrderId, @event.TrackCode);
|
||||
var trackContent = trackContents.FirstOrDefault(x => x.OrderId == order.OrderId);
|
||||
if (trackContent == default)
|
||||
{
|
||||
// 订单所绑定的模板,没有一条内容可以匹配发生的轨迹
|
||||
|
||||
@ -3,9 +3,14 @@
|
||||
public class MatchTrackContentDto
|
||||
{
|
||||
/// <summary>
|
||||
/// 轨迹内容id
|
||||
/// 订单Id
|
||||
/// </summary>
|
||||
public string TrackCode { get; set; }
|
||||
public int OrderId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 轨迹内容code
|
||||
/// </summary>
|
||||
public string TrackCode { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// 轨迹内容
|
||||
|
||||
@ -27,10 +27,10 @@ public interface IProvideQueries
|
||||
/// <summary>
|
||||
/// 根据订单id找到订单模板,匹配模板命中的轨迹内容
|
||||
/// </summary>
|
||||
/// <param name="orderId">订单id</param>
|
||||
/// <param name="orderIds">订单ids</param>
|
||||
/// <param name="code">轨迹代码</param>
|
||||
/// <returns></returns>
|
||||
Task<MatchTrackContentDto?> MatchTrackContentAsync(int orderId, string code);
|
||||
Task<List<MatchTrackContentDto>> MatchTrackContentAsync(int[] orderIds, string code);
|
||||
|
||||
/// <summary>
|
||||
/// 获取可删除的订单轨迹代码
|
||||
|
||||
@ -50,22 +50,23 @@ public class ProvideQueries : ISugarRepository, IProvideQueries,
|
||||
.ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<MatchTrackContentDto?> MatchTrackContentAsync(int orderId, string code)
|
||||
public async Task<List<MatchTrackContentDto>> MatchTrackContentAsync(int[] orderIds, string code)
|
||||
{
|
||||
return await Context.Queryable<OrderTemplateEntity>()
|
||||
.LeftJoin<TrackTemplateContentEntity>((x, a) => x.TrackTemplateId == a.TrackTemplateId)
|
||||
.LeftJoin<TrackContentEntity>((x, a, b) => a.TrackContentId == b.Id)
|
||||
.LeftJoin<TrackStatusEntity>((x, a, b, c) => b.TrackStatusId == c.Id)
|
||||
.Where((x, a, b) => x.OrderId == orderId && b.Code == code)
|
||||
.Where((x, a, b) => orderIds.Contains(x.OrderId) && b.Code == code)
|
||||
.Select((x, a, b, c) => new MatchTrackContentDto
|
||||
{
|
||||
OrderId = x.OrderId,
|
||||
TrackCode = b.Code,
|
||||
Content = b.Content,
|
||||
EnContent = b.EnContent,
|
||||
Status = c.Status,
|
||||
IsCanDelete = a.IsCanDelete
|
||||
})
|
||||
.FirstAsync();
|
||||
.ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<List<CanDeleteTrackCodeVO>> GetCanDeleteTrackCodesAsync(List<int> orderIds,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user