update: 调整轨迹更新为逐条更新

This commit is contained in:
云龙 王 2024-11-26 16:05:58 +08:00
parent 9b663fad04
commit f333ef0ea2

View File

@ -199,6 +199,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
return default;
}
//#7001:未来潜在需求,当轨迹内容匹配预设,记录一个标记,保证下刷过程都是使用预设内衣
//虽然在引发事件之前做了判断,引发之后并不一定立即处理,在此过程中轨迹内容仍然可能被修改,所以要二次进行判断。
//通过来源指示是否为手动操作
var manualOperation = @event.Source == (int) TrackSourceEnum.Artificial;
@ -275,7 +276,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
var orderIds = @event.OrderIdentifiers.Select(x => x.OrderId).ToArray();
// important:轨迹code相同,时间、发生地不同的,可能存在多条!!
var tracks = await _trackDetailsEsRepository.GetListAsync(orderIds, @event.TrackCode, true);
var tracks = await _trackDetailsEsRepository.GetListAsync(orderIds, @event.TrackCode, false);
var insertTracks = new List<TrackDetailsIndex>();
var updateTracks = new List<TrackDetailsIndex>();
@ -355,6 +356,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
//来源轨迹内容,第一次新增的时候使用轨迹内容表提供的
TrackStatus = trackContent.TrackStatus,
TrackStatusCode = trackContent.TrackStatusCode,
//跨子系统?
TrackContent = @event.Content ?? trackContent.TrackContent,
TrackEnContent = @event.EnStatus ?? trackContent.TrackEnContent,
//S06新增轨迹明细字段
@ -411,6 +413,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
track.UpdateTime = DateTime.Now;
//允许二次修改,在修改了轨迹内容后进行修改轨迹操作,如果输入的轨迹内容则以输入为准
//跨子系统?
track.TrackContent = @event.Content ?? trackContent.TrackContent;
track.TrackEnContent = @event.EnStatus ?? trackContent.TrackEnContent;
//S06新增
@ -451,6 +454,11 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
if (updateTracks.Any())
{
//逐条更新
foreach (var track in updateTracks)
{
await _trackDetailsEsRepository.UpdateAsync(track);
}
await _trackDetailsEsRepository.UpdateManyAsync(updateTracks);
}