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