列表的最新轨迹需要调整

This commit is contained in:
moyongzhen 2024-03-05 20:46:00 +08:00
parent 25e3172275
commit 317d59861a
4 changed files with 67 additions and 1 deletions

View File

@ -20,4 +20,5 @@ public interface ITrackDetailsRepository
/// <param name="trackCodes"></param> /// <param name="trackCodes"></param>
/// <returns></returns> /// <returns></returns>
Task DeleteTrackAsync(int orderId, List<string> trackCodes); Task DeleteTrackAsync(int orderId, List<string> trackCodes);
Task<List<TrackDetailsIndex>?> GetListAsync(List<int> orderIds);
} }

View File

@ -114,5 +114,10 @@ namespace SJZY.Track.Domain.Dtos.Order
/// 子系统 /// 子系统
/// </summary> /// </summary>
public string SubSystem { get; set; } public string SubSystem { get; set; }
/// <summary>
/// 子系统id
/// </summary>
public int SubSystemId { get; set; }
} }
} }

View File

@ -1,5 +1,6 @@
using SJZY.Track.Domain; using SJZY.Track.Domain;
using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
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.VEntities; using SJZY.Track.Domain.VEntities;
@ -9,6 +10,15 @@ namespace SJZY.Track.Repository.Repositories;
public class OrderRepository : BasicRepository<OrderEntity>, IOrderRepository, ITransientDependency public class OrderRepository : BasicRepository<OrderEntity>, IOrderRepository, ITransientDependency
{ {
private readonly ITrackDetailsRepository _trackDetailsRepository;
public OrderRepository(
ITrackDetailsRepository trackDetailsRepository
)
{
this._trackDetailsRepository=trackDetailsRepository;
}
public async Task CreateOrderAsync(OrderEntity order) public async Task CreateOrderAsync(OrderEntity order)
{ {
using var tran = TransactionHelper.GetReadCommitted(); using var tran = TransactionHelper.GetReadCommitted();
@ -147,10 +157,48 @@ public class OrderRepository : BasicRepository<OrderEntity>, IOrderRepository, I
NewestTrackTime = a.LatestTrackTime, NewestTrackTime = a.LatestTrackTime,
IsFinish = a.IsCompleted, IsFinish = a.IsCompleted,
CreateTime = a.CreateTime, CreateTime = a.CreateTime,
SubSystem = c.CnName SubSystem = c.CnName,
SubSystemId = c.Id
}) })
.ToPagedListAsync(input.PageIndex, input.PageSize); .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 暂时注释 #region 暂时注释
//if (pageList.List.Any()) //if (pageList.List.Any())

View File

@ -3,6 +3,7 @@ using SJZY.Expand.ABP.Core.Logger;
using SJZY.Expand.ElasticSearch.Services; using SJZY.Expand.ElasticSearch.Services;
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
using SJZY.Track.Domain.Dtos.TrackDetails; using SJZY.Track.Domain.Dtos.TrackDetails;
using SJZY.UserCenter.SharedModel.Dtos.PHP.User;
namespace SJZY.Track.Repository.Repositories; namespace SJZY.Track.Repository.Repositories;
@ -99,6 +100,17 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract<TrackDetail
return data?.Documents?.ToList(); return data?.Documents?.ToList();
} }
public async Task<List<TrackDetailsIndex>?> GetListAsync(List<int> orderIds)
{
var data = await Context.SearchAsync<TrackDetailsIndex>(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<string> trackCodes) public async Task DeleteTrackAsync(int orderId, List<string> trackCodes)
{ {
var r = await Context.UpdateByQueryAsync<TrackDetailsIndex>(x => x var r = await Context.UpdateByQueryAsync<TrackDetailsIndex>(x => x