diff --git a/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/ITrackDetailsRepository.cs b/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/ITrackDetailsRepository.cs index d79c78df..f6578023 100644 --- a/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/ITrackDetailsRepository.cs +++ b/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/ITrackDetailsRepository.cs @@ -20,4 +20,5 @@ public interface ITrackDetailsRepository /// /// Task DeleteTrackAsync(int orderId, List trackCodes); + Task?> GetListAsync(List orderIds); } \ No newline at end of file diff --git a/src/SJZY.Track.Domain/Dtos/Order/GetPageTrackOrderInputVO.cs b/src/SJZY.Track.Domain/Dtos/Order/GetPageTrackOrderInputVO.cs index b32b1327..b596a5e1 100644 --- a/src/SJZY.Track.Domain/Dtos/Order/GetPageTrackOrderInputVO.cs +++ b/src/SJZY.Track.Domain/Dtos/Order/GetPageTrackOrderInputVO.cs @@ -114,5 +114,10 @@ namespace SJZY.Track.Domain.Dtos.Order /// 子系统 /// public string SubSystem { get; set; } + + /// + /// 子系统id + /// + public int SubSystemId { get; set; } } } diff --git a/src/SJZY.Track.Repository/Repositories/OrderRepository.cs b/src/SJZY.Track.Repository/Repositories/OrderRepository.cs index b1bb6476..3910ce84 100644 --- a/src/SJZY.Track.Repository/Repositories/OrderRepository.cs +++ b/src/SJZY.Track.Repository/Repositories/OrderRepository.cs @@ -1,5 +1,6 @@ using SJZY.Track.Domain; using SJZY.Track.Domain.Aggregates.OrderAggregate; +using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; using SJZY.Track.Domain.Aggregates.TrackTemplateAggregate; using SJZY.Track.Domain.Dtos.Order; using SJZY.Track.Domain.VEntities; @@ -9,6 +10,15 @@ namespace SJZY.Track.Repository.Repositories; public class OrderRepository : BasicRepository, IOrderRepository, ITransientDependency { + private readonly ITrackDetailsRepository _trackDetailsRepository; + + public OrderRepository( + ITrackDetailsRepository trackDetailsRepository + ) + { + this._trackDetailsRepository=trackDetailsRepository; + } + public async Task CreateOrderAsync(OrderEntity order) { using var tran = TransactionHelper.GetReadCommitted(); @@ -147,10 +157,48 @@ public class OrderRepository : BasicRepository, IOrderRepository, I NewestTrackTime = a.LatestTrackTime, IsFinish = a.IsCompleted, CreateTime = a.CreateTime, - SubSystem = c.CnName + SubSystem = c.CnName, + SubSystemId = c.Id }) .ToPagedListAsync(input.PageIndex, input.PageSize); + if (pageList.List.Any()) + { + //查询也需要最新的轨迹 + var orderIds = pageList.List.Select(a => a.Id).ToList(); + var esTrackDetails = await _trackDetailsRepository.GetListAsync(orderIds); + if (!esTrackDetails.IsNullOrEmpty()) + { + pageList.List.ForEach(a => + { + var esDetails = esTrackDetails.Where(a => a.OrderId== a.OrderId).OrderByDescending(a => a.TrackTime); + var trackDetail = esDetails.FirstOrDefault(); + if (trackDetail!=null) + { + if (trackDetail.TrackContent!=a.NewestTrackContent) + { + a.NewestTrackContent=trackDetail.TrackContent; + } + if (trackDetail.TrackEnContent!=a.NewestTrackEnContent) + { + a.NewestTrackContent=trackDetail.TrackEnContent; + } + if (trackDetail.TrackPlace!=a.NewestTrackPlace) + { + a.NewestTrackPlace=trackDetail.TrackPlace; + } + if (trackDetail.TrackTime!= trackDetail.TrackTime) + { + a.NewestTrackTime=trackDetail.TrackTime; + } + } + }); + } + } + + + + #region 暂时注释 //if (pageList.List.Any()) diff --git a/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs index 31d9fc36..136020cc 100644 --- a/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs +++ b/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs @@ -3,6 +3,7 @@ using SJZY.Expand.ABP.Core.Logger; using SJZY.Expand.ElasticSearch.Services; using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; using SJZY.Track.Domain.Dtos.TrackDetails; +using SJZY.UserCenter.SharedModel.Dtos.PHP.User; namespace SJZY.Track.Repository.Repositories; @@ -99,6 +100,17 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract?> GetListAsync(List orderIds) + { + var data = await Context.SearchAsync(x => x.Query(q => q.Terms(t => t.Field(g => g.OrderId).Terms(orderIds)) + && q.Term(a => a.Field(g => g.IsDeleted).Value(false)) + ) + .Size(100000) + .Sort(s => s.Field(f => f.TrackTime, SortOrder.Descending))); + + return data?.Documents?.ToList(); + } + public async Task DeleteTrackAsync(int orderId, List trackCodes) { var r = await Context.UpdateByQueryAsync(x => x