Merge remote-tracking branch 'origin/S03-轨迹中台优化项' into test
This commit is contained in:
commit
6cb56fcd06
@ -109,8 +109,6 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
|
|||||||
var newOrderIds = orderIds.Except(tracks.Select(x => x.OrderId)).ToArray();
|
var newOrderIds = orderIds.Except(tracks.Select(x => x.OrderId)).ToArray();
|
||||||
var trackContents = await _provideQueries.MatchTrackContentAsync(newOrderIds, @event.TrackCode);
|
var trackContents = await _provideQueries.MatchTrackContentAsync(newOrderIds, @event.TrackCode);
|
||||||
|
|
||||||
TrackDetailsIndex? firstTrack = null;
|
|
||||||
|
|
||||||
var insertTracks = new List<TrackDetailsIndex>();
|
var insertTracks = new List<TrackDetailsIndex>();
|
||||||
|
|
||||||
foreach (var order in @event.OrderIdentifiers)
|
foreach (var order in @event.OrderIdentifiers)
|
||||||
@ -168,30 +166,32 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
|
|||||||
}
|
}
|
||||||
|
|
||||||
canNextOrderIds.Add(order.OrderId);
|
canNextOrderIds.Add(order.OrderId);
|
||||||
|
|
||||||
firstTrack ??= track;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (canNextOrderIds.Count == 0) return;
|
||||||
|
|
||||||
|
var content = await _provideQueries.GetTrackContentAsync(@event.SubSystemId, @event.TrackCode);
|
||||||
|
|
||||||
// 批量add to es
|
// 批量add to es
|
||||||
await _trackDetailsRepository.AddManyAsync(insertTracks);
|
await _trackDetailsRepository.AddManyAsync(insertTracks);
|
||||||
|
|
||||||
if (firstTrack == null) return;
|
|
||||||
|
|
||||||
// 触发订单主表更新事件(异步)
|
// 触发订单主表更新事件(异步)
|
||||||
await _capPublisher.PublishAsync(GlobalConst.TrackChangeAfterUpdateOrderSubscribe,
|
await _capPublisher.PublishAsync(GlobalConst.TrackChangeAfterUpdateOrderSubscribe,
|
||||||
new TrackChangeAfterUpdateOrderEvent
|
new TrackChangeAfterUpdateOrderEvent
|
||||||
{
|
{
|
||||||
OrderIds = orderIds,
|
OrderIds = canNextOrderIds.ToArray(),
|
||||||
IsCompleted = @event.TrackRefreshData.IsCompleted,
|
IsCompleted = @event.TrackRefreshData.IsCompleted,
|
||||||
TrackContent = firstTrack.TrackContent,
|
TrackContent = content.TrackContent,
|
||||||
TrackEnContent = firstTrack.TrackEnContent,
|
TrackEnContent = content.TrackEnContent,
|
||||||
TrackPlace = @event.TrackPlace,
|
TrackPlace = @event.TrackPlace,
|
||||||
TrackTime = @event.TrackTime,
|
TrackTime = @event.TrackTime,
|
||||||
TrackTimeZone = @event.TrackTimeZone
|
TrackTimeZone = @event.TrackTimeZone
|
||||||
});
|
});
|
||||||
|
|
||||||
// 触发轨迹推送事件(异步)
|
// 触发轨迹推送事件(异步)
|
||||||
foreach (var group in @event.OrderIdentifiers.GroupBy(x => x.CustomId))
|
foreach (var group in @event.OrderIdentifiers
|
||||||
|
.Where(x => x.OrderId.IsIn(canNextOrderIds))
|
||||||
|
.GroupBy(x => x.CustomId))
|
||||||
{
|
{
|
||||||
var trackPushEvent = new TrackPushEvent
|
var trackPushEvent = new TrackPushEvent
|
||||||
{
|
{
|
||||||
@ -202,8 +202,8 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
|
|||||||
TrackCode = @event.TrackCode,
|
TrackCode = @event.TrackCode,
|
||||||
SystemPushInfo = new SystemPushStruct
|
SystemPushInfo = new SystemPushStruct
|
||||||
{
|
{
|
||||||
TrackStatus = firstTrack.TrackStatus,
|
TrackStatus = content.TrackStatus,
|
||||||
TrackContent = firstTrack.TrackContent,
|
TrackContent = content.TrackContent,
|
||||||
TrackPlace = @event.TrackPlace,
|
TrackPlace = @event.TrackPlace,
|
||||||
TrackTime = @event.TrackTime,
|
TrackTime = @event.TrackTime,
|
||||||
TrackTimeZone = @event.TrackTimeZone
|
TrackTimeZone = @event.TrackTimeZone
|
||||||
|
|||||||
19
src/SJZY.Track.Domain/Dtos/TrackContents/TrackContentVO.cs
Normal file
19
src/SJZY.Track.Domain/Dtos/TrackContents/TrackContentVO.cs
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
namespace SJZY.Track.Domain.Dtos.TrackContents;
|
||||||
|
|
||||||
|
public class TrackContentVO
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 轨迹状态
|
||||||
|
/// </summary>
|
||||||
|
public string TrackStatus { get; set; } = null!;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 轨迹内容
|
||||||
|
/// </summary>
|
||||||
|
public string TrackContent { get; set; } = null!;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 轨迹内容英文
|
||||||
|
/// </summary>
|
||||||
|
public string TrackEnContent { get; set; } = null!;
|
||||||
|
}
|
||||||
@ -1,4 +1,5 @@
|
|||||||
using SJZY.Track.Domain.Dtos.Order;
|
using SJZY.Track.Domain.Dtos.Order;
|
||||||
|
using SJZY.Track.Domain.Dtos.TrackContents;
|
||||||
using SJZY.Track.Domain.Dtos.TrackDetails;
|
using SJZY.Track.Domain.Dtos.TrackDetails;
|
||||||
using SJZY.Track.Domain.Dtos.TrackTemplate;
|
using SJZY.Track.Domain.Dtos.TrackTemplate;
|
||||||
|
|
||||||
@ -65,4 +66,6 @@ public interface IProvideQueries
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<List<OrderWithServiceProviderVO>> FindOrderWithServiceProviderAsync(int serviceProvider, int pageIndex,
|
Task<List<OrderWithServiceProviderVO>> FindOrderWithServiceProviderAsync(int serviceProvider, int pageIndex,
|
||||||
int pageSize = 1000);
|
int pageSize = 1000);
|
||||||
|
|
||||||
|
Task<TrackContentVO> GetTrackContentAsync(int subSystemId, string trackCode);
|
||||||
}
|
}
|
||||||
@ -3,6 +3,7 @@ using SJZY.Track.Domain.Aggregates.TrackContentAggregate;
|
|||||||
using SJZY.Track.Domain.Aggregates.TrackStatusAggregate;
|
using SJZY.Track.Domain.Aggregates.TrackStatusAggregate;
|
||||||
using SJZY.Track.Domain.Aggregates.TrackTemplateAggregate;
|
using SJZY.Track.Domain.Aggregates.TrackTemplateAggregate;
|
||||||
using SJZY.Track.Domain.Dtos.Order;
|
using SJZY.Track.Domain.Dtos.Order;
|
||||||
|
using SJZY.Track.Domain.Dtos.TrackContents;
|
||||||
using SJZY.Track.Domain.Dtos.TrackDetails;
|
using SJZY.Track.Domain.Dtos.TrackDetails;
|
||||||
using SJZY.Track.Domain.Dtos.TrackTemplate;
|
using SJZY.Track.Domain.Dtos.TrackTemplate;
|
||||||
using SJZY.Track.Domain.Queries;
|
using SJZY.Track.Domain.Queries;
|
||||||
@ -135,4 +136,18 @@ public class ProvideQueries : ISugarRepository, IProvideQueries,
|
|||||||
.Take(pageSize)
|
.Take(pageSize)
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<TrackContentVO> GetTrackContentAsync(int subSystemId, string trackCode)
|
||||||
|
{
|
||||||
|
return await Context.Queryable<TrackContentEntity>()
|
||||||
|
.LeftJoin<TrackStatusEntity>((x, y) => x.TrackStatusId == y.Id)
|
||||||
|
.Where(x => x.SubSystemId == subSystemId && x.Code == trackCode)
|
||||||
|
.Select((x, y) => new TrackContentVO
|
||||||
|
{
|
||||||
|
TrackStatus = y.Status,
|
||||||
|
TrackContent = x.Content,
|
||||||
|
TrackEnContent = x.EnContent
|
||||||
|
})
|
||||||
|
.FirstAsync();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -32,7 +32,8 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract<TrackDetail
|
|||||||
: await Context.SearchAsync<TrackDetailsIndex>(s => s
|
: await Context.SearchAsync<TrackDetailsIndex>(s => s
|
||||||
.Source(s2 => s2.Includes(fd => fd
|
.Source(s2 => s2.Includes(fd => fd
|
||||||
.Field(f => f.IndexName)
|
.Field(f => f.IndexName)
|
||||||
.Field(f => f.OrderId)))
|
.Field(f => f.OrderId)
|
||||||
|
))
|
||||||
.Size(1000)
|
.Size(1000)
|
||||||
.Query(q => q
|
.Query(q => q
|
||||||
.Bool(b => b
|
.Bool(b => b
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user