diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/BatchUpsertTrackInput.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/BatchUpsertTrackInput.cs index c1e5bcfc..90e159cc 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/BatchUpsertTrackInput.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/BatchUpsertTrackInput.cs @@ -123,7 +123,7 @@ public class BatchUpsertTrackInput : OrderNosInfo /// /// 扩展信息字段,用与轨迹推送的附加字段 /// - public Dictionary? Extra { get; set; } + public string? Extra { get; set; } /// /// 是否强制推送 diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackOutput.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackOutput.cs index 28d0a76d..f5313b3b 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackOutput.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackOutput.cs @@ -105,5 +105,5 @@ public class TrackDetail /// /// 扩展信息字段,用与轨迹推送的附加字段 /// - public Dictionary? Extra { get; set; } + public string? Extra { 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 0fa3b448..2b15e904 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpsertTrackInput.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpsertTrackInput.cs @@ -132,7 +132,7 @@ public class UpsertTrackInput : OrderNoInfo /// /// 扩展信息字段,用与轨迹推送的附加字段 /// - public Dictionary? Extra { get; set; } + public string? Extra { get; set; } /// /// 是否强制推送 diff --git a/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushRecordDto.cs b/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushRecordDto.cs index 9ce8fe2e..7bb84c1c 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushRecordDto.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushRecordDto.cs @@ -85,5 +85,5 @@ public class TrackPushRecordDto /// /// 轨迹的额外新 /// - public Dictionary? Extra { get; set; } + public string? Extra { get; set; } } diff --git a/src/SJZY.Track.Application.Contract/Events/TrackChangeEto.cs b/src/SJZY.Track.Application.Contract/Events/TrackChangeEto.cs index 5f49e9ff..6319446e 100644 --- a/src/SJZY.Track.Application.Contract/Events/TrackChangeEto.cs +++ b/src/SJZY.Track.Application.Contract/Events/TrackChangeEto.cs @@ -132,5 +132,5 @@ public class TrackChangeEto /// /// 扩展信息字段,用与轨迹推送的附加字段 /// - public Dictionary? Extra { get; set; } + public string? Extra { get; set; } } diff --git a/src/SJZY.Track.Application.Contract/Events/TrackPushCompletedEvent.cs b/src/SJZY.Track.Application.Contract/Events/TrackPushCompletedEvent.cs index 1befad13..6e3d3987 100644 --- a/src/SJZY.Track.Application.Contract/Events/TrackPushCompletedEvent.cs +++ b/src/SJZY.Track.Application.Contract/Events/TrackPushCompletedEvent.cs @@ -83,5 +83,5 @@ public class TrackPushCompletedEvent /// /// 轨迹的额外新 /// - public Dictionary? Extra { get; set; } + public string? Extra { get; set; } } diff --git a/src/SJZY.Track.Application.Contract/Events/TrackPushEvent.cs b/src/SJZY.Track.Application.Contract/Events/TrackPushEvent.cs index 760ba4b6..9be77fbc 100644 --- a/src/SJZY.Track.Application.Contract/Events/TrackPushEvent.cs +++ b/src/SJZY.Track.Application.Contract/Events/TrackPushEvent.cs @@ -88,5 +88,5 @@ public struct SystemPushStruct /// /// 扩展信息字段,用与轨迹推送的附加字段 /// - public Dictionary? Extra { get; set; } + public string? Extra { get; set; } } diff --git a/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs b/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs index 1f6a9f1c..fef7ab3f 100644 --- a/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs +++ b/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs @@ -154,7 +154,7 @@ public class TrackUpsertEvent /// /// 扩展信息字段,用与轨迹推送的附加字段 /// - public Dictionary? Extra { get; set; } + public string? Extra { get; set; } /// /// 是否强制推送 diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs index 808fd759..a8ff5339 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs @@ -265,7 +265,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe { "descriptionCn", config.TrackContentValue }, { "code", config.TrackContentCodeValue }, { "status", config.TrackStatusValue }, - { "extra", log.Extra } + { "extra", DeserializeForTextJson(log.Extra) } }; body.Data.Add(dict); log.PushContent = body.ToJson(); @@ -293,7 +293,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe { "descriptionCn", config.TrackContentValue }, { "code", config.TrackContentCodeValue }, { "status", config.TrackStatusValue }, - { "extra", log.Extra } + { "extra", DeserializeForTextJson(log.Extra) } }; body.Data.Add(cur); @@ -380,4 +380,11 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe { return string.IsNullOrWhiteSpace(json) ? default : System.Text.Json.JsonSerializer.Deserialize(json); } + + private Dictionary? GetExtraDictForTextJson(string? extraStr) + { + return string.IsNullOrWhiteSpace(extraStr) + ? null + : System.Text.Json.JsonSerializer.Deserialize>(extraStr); + } } diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs index b59e3f96..0f68fcda 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs @@ -1,4 +1,5 @@ using DotNetCore.CAP; +using NetTaste; using SJZY.Expand.ABP.Core.Logger; using SJZY.Expand.ABP.Core.PublicMethords; using SJZY.Track.Application.Contract.Events; @@ -234,7 +235,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe // todo:条件命名写反了 // important:轨迹code相同,时间、发生地不同的,可能存在多条!! - var tracks = await _trackDetailsEsRepository.GetListAsync(orderIds, @event.TrackCode, false); + var tracks = await _trackDetailsEsRepository.GetListAsync(orderIds, @event.TrackCode, true); var insertTracks = new List(); var updateTracks = new List(); @@ -249,6 +250,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe { updateTracks.Add(BuiltUpdateTrack(@event, trackById, order, trackContent)); } + continue; } @@ -260,8 +262,10 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe } else { + var extraDict = GetExtraDictForTextJson(@event.Extra); if (@event.Extra == null || - @event.Extra.TryGetValue(@event.CompareFields, out var compareValue) == false) + extraDict == null + || extraDict.TryGetValue(@event.CompareFields, out var compareValue) == false) { throw new BusinessException(message: "轨迹比较字段不存在,请检查拓展字段"); } @@ -269,7 +273,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe existTracks = existTracks.Where(x => { // tips:注意兼容性,历史轨迹的字段可能为空 - if (x.Extra == null || !x.Extra.TryGetValue(@event.CompareFields, out var oldValue)) + if (x.Extra == null || !extraDict.TryGetValue(@event.CompareFields, out var oldValue)) { return false; } @@ -441,4 +445,11 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe return track; } + + private Dictionary? GetExtraDictForTextJson(string? extraStr) + { + return string.IsNullOrWhiteSpace(extraStr) + ? null + : System.Text.Json.JsonSerializer.Deserialize>(extraStr); + } } diff --git a/src/SJZY.Track.Application/Rabbit/TrackPushCompletedEventHandler.cs b/src/SJZY.Track.Application/Rabbit/TrackPushCompletedEventHandler.cs index 3895fb7a..11be63aa 100644 --- a/src/SJZY.Track.Application/Rabbit/TrackPushCompletedEventHandler.cs +++ b/src/SJZY.Track.Application/Rabbit/TrackPushCompletedEventHandler.cs @@ -4,7 +4,6 @@ using BSI.Stack.Rabbit.Handler; using Newtonsoft.Json; using RabbitMQ.Client.Events; using SJZY.Expand.ABP.Core.Logger; -using SJZY.Expand.ABP.Core.PublicMethords; using SJZY.InterfaceRelay.Application.Contracts; using SJZY.Track.Application.Contract.Dtos.TrackPush; using SJZY.Track.Application.Contract.Services; diff --git a/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/TrackDetailsIndex.cs b/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/TrackDetailsIndex.cs index 60eed6a3..02cb6b51 100644 --- a/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/TrackDetailsIndex.cs +++ b/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/TrackDetailsIndex.cs @@ -190,5 +190,5 @@ public class TrackDetailsIndex : IdBaseIndex /// /// 扩展信息字段,用与轨迹推送的附加字段 /// - public Dictionary? Extra { get; set; } + public string? Extra { get; set; } } diff --git a/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/TrackPushRecordIndex.cs b/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/TrackPushRecordIndex.cs index 8b2132bd..d127b5c4 100644 --- a/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/TrackPushRecordIndex.cs +++ b/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/TrackPushRecordIndex.cs @@ -96,5 +96,5 @@ public class TrackPushRecordIndex : IdBaseIndex /// /// 轨迹额外信息 /// - public Dictionary? Extra { get; set; } + public string? Extra { get; set; } } diff --git a/src/SJZY.Track.Repository/Repositories/TrackDetailsEsRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackDetailsEsRepository.cs index 6d03a1b1..b9bf22af 100644 --- a/src/SJZY.Track.Repository/Repositories/TrackDetailsEsRepository.cs +++ b/src/SJZY.Track.Repository/Repositories/TrackDetailsEsRepository.cs @@ -19,7 +19,7 @@ public class TrackDetailsEsRepository : ElasticSearchContextAbstract> GetListAsync(int[] orderIds, string trackCode, bool forUpsert = false) { - var r = !forUpsert + var r = forUpsert ? await Context.SearchAsync(s => s .Index(GlobalConst.TrackDetailsIndex) .Source()