diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/BatchUpsertTrackInput.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/BatchUpsertTrackInput.cs
index d5767cd5..b5a73ed3 100644
--- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/BatchUpsertTrackInput.cs
+++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/BatchUpsertTrackInput.cs
@@ -37,8 +37,8 @@ public class BatchUpsertTrackInput : OrderNosInfo
///
/// 轨迹发生时区
///
- [Required]
- [Range(-12, 12)]
+ // [Required]
+ // [Range(-12, 12)]
public float TrackTimeZone { get; set; }
///
diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpsertOrderInput.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpsertOrderInput.cs
index cfdbe0ac..1214f51d 100644
--- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpsertOrderInput.cs
+++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpsertOrderInput.cs
@@ -7,8 +7,6 @@ public class UpsertOrderInput : UpdateOrderInput
///
/// 客户id
///
- [Required]
- [Range(1, int.MaxValue)]
public int CustomId { get; set; }
///
diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpsertTrackInput.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpsertTrackInput.cs
index 2ba86e87..2b34f832 100644
--- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpsertTrackInput.cs
+++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpsertTrackInput.cs
@@ -37,8 +37,8 @@ public class UpsertTrackInput : OrderNoInfo
///
/// 轨迹发生时区
///
- [Required]
- [Range(-12, 12)]
+ // [Required]
+ // [Range(-12, 12)]
public float? TrackTimeZone { get; set; }
///
diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs
index dd4704ca..08e079d6 100644
--- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs
+++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs
@@ -201,9 +201,8 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe
}
else //原有逻辑,根据轨迹code和订单进行删除
{
- var trackCodes = @event.TrackIdentifiers.Select(x => x.TrackCode).ToList();
- // 删除轨迹(删的是同子系统下的单,所以code是统一的)
- tracks = await _trackDetailsEsRepository.GetListAsync(@event.OrderIds, trackCodes,null);
+ //根据订单查询出所有的轨迹,查所有是因为主单上需要进行回退更新
+ tracks = await _trackDetailsEsRepository.GetListAsync(@event.OrderIds);
//构建标识符集合
var ids = @event.TrackIdentifiers.Select(x => $"{x.TrackCode}{x.TrackTime}").ToList();
@@ -217,8 +216,10 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe
await _trackDetailsEsRepository.DeleteTrackByIdAsync(track.Id, track.IndexName);
}
- orderIds = tracks.Select(m => m.OrderId).Distinct().ToList();
- tracks = deleteTracks;
+ //从被删除轨迹寻找订单id,稍后会更新订单主表
+ orderIds = deleteTracks.Select(m => m.OrderId).Distinct().ToList();
+ //排除掉已经删除的轨迹
+ tracks = tracks.Except(deleteTracks).ToList();
}
@@ -236,7 +237,9 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe
foreach (var order in orders)
{
- var track = tracks.FirstOrDefault(x => x.OrderId == order.Id);
+ //找到最新的轨迹数据
+ var track = tracks?.OrderByDescending(x=>x.TrackTime)
+ .FirstOrDefault(x => x.OrderId == order.Id);
// 删除全部轨迹导致的重置行为
if (track == default)
@@ -264,7 +267,7 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe
OrderId = order.Id,
OrderNo = order.OrderNo,
OptionType = OrderOperationType.删除轨迹.ToString(),
- Content = tracks?.Where(m => m.OrderId == order.Id)?.ToList().ToJson(),
+ Content = tracks?.Where(m => m.OrderId == order.Id).ToList().ToJson(),
CreateUserId = @event.OperationManId,
CreateUserName = @event.OperationMan ?? "",
CreateTime = DateTime.Now
diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs
index 8023836a..59cee586 100644
--- a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs
+++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs
@@ -392,6 +392,7 @@ public partial class TrackService : ApplicationService, ITrackService
TrackCode = input.TrackCode,
TrackPlace = input.TrackPlace,
TrackTime = input.TrackTime,
+ NewTrackTime = input.NewTrackTime,
TrackTimeZone = input.TrackTimeZone,
OperationMan = userInfo.Data.UserName,
OperationManId = userInfo.Data.UserId,
diff --git a/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/ITrackDetailsEsRepository.cs b/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/ITrackDetailsEsRepository.cs
index c57b797b..bf5e3af3 100644
--- a/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/ITrackDetailsEsRepository.cs
+++ b/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/ITrackDetailsEsRepository.cs
@@ -24,7 +24,7 @@ public interface ITrackDetailsEsRepository : IElasticsearchClientService> GetListAsync(int orderId);
- Task> GetListAsync(int[] orderIds, List trackCodes, TrackSourceEnum? source);
+ Task> GetListAsync(int[] orderIds, List? trackCodes = null, TrackSourceEnum? source = null);
Task> DeleteTrackAsync(int[] orderIds, List trackCodes);
diff --git a/src/SJZY.Track.Repository/Queries/ProvideQueries.cs b/src/SJZY.Track.Repository/Queries/ProvideQueries.cs
index 8dd6fc96..b59a308d 100644
--- a/src/SJZY.Track.Repository/Queries/ProvideQueries.cs
+++ b/src/SJZY.Track.Repository/Queries/ProvideQueries.cs
@@ -35,7 +35,7 @@ public class ProvideQueries : ISugarRepository, IProvideQueries, ITransientDepen
public async Task> GetTrackCodeMapsAsync(int upSubSystemId, int subSystemId, params string[] trackCodes)
{
- // 根据上游code得到下游code
+ // 根据上游code得到下游code
return await Context.Queryable()
.Where(x => x.SubSystemId == subSystemId && x.MapSubSystemId == upSubSystemId &&
trackCodes.Contains(x.MapTrackContentCode))
@@ -62,7 +62,7 @@ public class ProvideQueries : ISugarRepository, IProvideQueries, ITransientDepen
.Select((a, b, c) => new OrderWithServiceProviderVO
{
//优先使用第三方的订单号,为空时才使用主单号
- OrderNo = b.OrderNo.IsNullOrWhiteSpace() ? a.OrderNo : b.OrderNo!,
+ OrderNo = b.OrderNo ?? a.OrderNo,
OrderType = a.OrderType,
SubSystemId = a.SubSystemId,
ServiceProviderCode = b.ServiceProviderCode,
@@ -83,7 +83,7 @@ public class ProvideQueries : ISugarRepository, IProvideQueries, ITransientDepen
.Select((a, b) => new OrderWithServiceProviderVO
{
//优先使用第三方的订单号,为空时才使用主单号
- OrderNo = b.OrderNo.IsNullOrWhiteSpace() ? a.OrderNo : b.OrderNo!,
+ OrderNo = b.OrderNo ?? a.OrderNo,
OrderType = a.OrderType,
SubSystemId = a.SubSystemId,
ServiceProviderCode = b.ServiceProviderCode
diff --git a/src/SJZY.Track.Repository/Repositories/TrackDetailsEsRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackDetailsEsRepository.cs
index 346d8c57..e4dbd518 100644
--- a/src/SJZY.Track.Repository/Repositories/TrackDetailsEsRepository.cs
+++ b/src/SJZY.Track.Repository/Repositories/TrackDetailsEsRepository.cs
@@ -357,7 +357,7 @@ public class TrackDetailsEsRepository : ElasticSearchContextAbstract> GetListAsync(int[] orderIds, List trackCodes, TrackSourceEnum? source)
+ public async Task> GetListAsync(int[] orderIds, List? trackCodes = null, TrackSourceEnum? source = null)
{
var query = new QueryContainer();
@@ -365,10 +365,12 @@ public class TrackDetailsEsRepository : ElasticSearchContextAbstract.Terms(t => t.Field(f => f.OrderId).Terms(orderIds));
}
- if (trackCodes.Count > 0)
+
+ if (trackCodes != null && trackCodes.Count > 0)
{
query &= Query.Terms(t => t.Field(f => f.TrackCode.Suffix("keyword")).Terms(trackCodes));
}
+
if (source.HasValue)
{
query &= Query.Term(t => t.Field(f => f.Source).Value(source.Value));