Merge remote-tracking branch 'origin/S03-轨迹中台优化项' into test

This commit is contained in:
dingenwen 2024-05-09 15:46:36 +08:00
commit 6cb56fcd06
5 changed files with 51 additions and 13 deletions

View File

@ -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

View 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!;
}

View File

@ -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);
} }

View File

@ -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();
}
} }

View File

@ -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