diff --git a/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushContentConfigDto.cs b/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushContentConfigDto.cs index 7e4464ed..345bec99 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushContentConfigDto.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushContentConfigDto.cs @@ -70,6 +70,7 @@ public class TrackPushContentConfigDto /// /// 扩展字段参数值 /// + [Obsolete("废弃属性,调整为从轨迹明细扩展中获取扩展值填入")] public string? ExpandFieldsValue { get; set; } /// diff --git a/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushInput.cs b/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushInput.cs index e650d04a..1111637f 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushInput.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushInput.cs @@ -5,7 +5,7 @@ public class TrackPushInput public string OrderNo { get; set; } = null!; //原TrackItem,为了扩展字段入参变更为字典 - public List> Data { get; set; } = new(); + public List> Data { get; set; } = new(); public string Log { get; set; } } @@ -15,7 +15,7 @@ public class TrackUpdateInput public string OrderNo { get; set; } = null!; //原TrackItem,为了扩展字段入参变更为字典 - public List> Data { get; set; } = new(); + public List> Data { get; set; } = new(); public string Log { get; set; } } diff --git a/src/SJZY.Track.Application.Contract/SJZY.Track.Application.Contract.csproj b/src/SJZY.Track.Application.Contract/SJZY.Track.Application.Contract.csproj index 4782626f..7645500b 100644 --- a/src/SJZY.Track.Application.Contract/SJZY.Track.Application.Contract.csproj +++ b/src/SJZY.Track.Application.Contract/SJZY.Track.Application.Contract.csproj @@ -5,7 +5,7 @@ net7.0 True - 7.0.7 + 7.0.8 True diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs index e407d2ff..d2669e14 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs @@ -97,7 +97,6 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe var items = new List(); TrackPushContentConfigDto? config; var isSystemPush = @event.OperationMan == null; - var trackPushInputDict = new Dictionary(); if (isSystemPush) { foreach (var order in _orders) @@ -128,7 +127,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe TrackTimeZone = @event.SystemPushInfo.TrackTimeZone, CreateUser = GlobalConst.SystemUser, }; - var item = await BuiltPushItem(config, log); + var item = await BuiltPushItem(config, log, @event.SystemPushInfo.Extra); item.Log = JsonConvert.SerializeObject(log); items.Add(item); } @@ -174,9 +173,8 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe TrackTimeZone = track.TrackTimeZone, CreateUser = @event.OperationMan, }; - var item = await BuiltPushItem(config, log); + var item = await BuiltPushItem(config, log, track.Extra); item.Log = JsonConvert.SerializeObject(log); - trackPushInputDict.Add(item, track); items.Add(item); } } @@ -184,18 +182,18 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe if (items.Count == 0) return; //获取参数结构名称 - var paramNames = await GetExtraParamNamesAsync(@event.SubSystemCode); - - //如果为系统推送,则从事件中取出轨迹扩展内容填充 - foreach (var item in items) - { - //根据事件中轨迹扩展内容填充 - if (isSystemPush) - item.Data.ForEach(dict => FillExtraParam(@event.SystemPushInfo.Extra, dict, paramNames)); - //根据查出的轨迹中扩展内容填充 - else - item.Data.ForEach(dict => FillExtraParam(trackPushInputDict[item].Extra, dict, paramNames)); - } + // var paramNames = await GetExtraParamNamesAsync(@event.SubSystemCode); + // + // //如果为系统推送,则从事件中取出轨迹扩展内容填充 + // foreach (var item in items) + // { + // //根据事件中轨迹扩展内容填充 + // if (isSystemPush) + // item.Data.ForEach(dict => FillExtraParam(@event.SystemPushInfo.Extra, dict, paramNames)); + // //根据查出的轨迹中扩展内容填充 + // else + // item.Data.ForEach(dict => FillExtraParam(trackPushInputDict[item].Extra, dict, paramNames)); + // } using (Track2InterfaceRelaySubSystemContext.Use( new Track2InterfaceRelaySubSystemContext(@event.SubSystemCode))) @@ -237,19 +235,19 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe TrackTimeZone = @event.SystemPushInfo.TrackTimeZone, CreateUser = GlobalConst.SystemUser, }; - var item = BuiltUpdateItem(config, log); + var item = BuiltUpdateItem(config, log, @event.SystemPushInfo.Extra); item.Log = JsonConvert.SerializeObject(log); items.Add(item); } if (items.Count == 0) return; - //获取参数结构名称 - var paramNames = await GetExtraParamNamesAsync(@event.SubSystemCode); - - //根据事件中轨迹扩展内容填充请求 - foreach (var item in items) - item.Data.ForEach(dict => FillExtraParam(@event.SystemPushInfo.Extra, dict, paramNames)); + // //获取参数结构名称 + // var paramNames = await GetExtraParamNamesAsync(@event.SubSystemCode); + // + // //根据事件中轨迹扩展内容填充请求 + // foreach (var item in items) + // item.Data.ForEach(dict => FillExtraParam(@event.SystemPushInfo.Extra, dict, paramNames)); using (Track2InterfaceRelaySubSystemContext.Use( new Track2InterfaceRelaySubSystemContext(@event.SubSystemCode))) @@ -267,16 +265,16 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe } } - private TrackUpdateInput BuiltUpdateItem(TrackPushContentConfigDto config, TrackPushRecordIndex log) + private TrackUpdateInput BuiltUpdateItem(TrackPushContentConfigDto config, TrackPushRecordIndex log, string? extraJson) { var trackDatetime = log.TrackTime.AddHours(config.TrackTimeZone ?? log.TrackTimeZone - log.TrackTimeZone); var trackDateStr = DateTimeFormat(trackDatetime, config.TrackTimeZone ?? log.TrackTimeZone, config); var body = new TrackUpdateInput { - OrderNo = log.OrderNo, + OrderNo = log.OrderNo }; - var dict = new Dictionary() + var dict = new Dictionary() { //推真实的发生地和发生时间(时间是计算后的) { "location", log.TrackPlace }, @@ -286,7 +284,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe { "descriptionCn", config.TrackContentValue }, { "code", config.TrackContentCodeValue }, { "status", config.TrackStatusValue }, - { "extra", config.ExpandFieldsValue } + { "extra", DeserializeForTextJson(extraJson) } }; body.Data.Add(dict); log.PushContent = body.ToJson(); @@ -294,7 +292,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe return body; } - private async Task BuiltPushItem(TrackPushContentConfigDto config, TrackPushRecordIndex log) + private async Task BuiltPushItem(TrackPushContentConfigDto config, TrackPushRecordIndex log, string? extraJson) { var trackDatetime = log.TrackTime.AddHours(config.TrackTimeZone ?? log.TrackTimeZone - log.TrackTimeZone); var trackDateStr = DateTimeFormat(trackDatetime, config.TrackTimeZone ?? log.TrackTimeZone, config); @@ -303,7 +301,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe { OrderNo = log.OrderNo, }; - var dict = new Dictionary() + var dict = new Dictionary() { // 推真实的发生地和发生时间(时间是计算后的) { "location", log.TrackPlace }, @@ -313,7 +311,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe { "descriptionCn", config.TrackContentValue }, { "code", config.TrackContentCodeValue }, { "status", config.TrackStatusValue }, - { "extra", config.ExpandFieldsValue } + { "extra", DeserializeForTextJson(extraJson) } }; body.Data.Add(dict); @@ -322,12 +320,12 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe var history = await _trackPushRecordEsRepository.GetLatestTrackPushRecordAsync(log.OrderId); if (history != default) { - body = JsonConvert.DeserializeObject(history.PushContent); + body = DeserializeForTextJson(history.PushContent); body!.Data.Add(dict); } } - log.PushContent = body.ToJson(); + log.PushContent = SerializeForTextJson(body); return body; } @@ -381,6 +379,15 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe return dateTime.ToString("yyyy-MM-ddTHH:mm:ss.fffK"); } + private string SerializeForTextJson(object? obj) + { + return obj == null ? string.Empty : System.Text.Json.JsonSerializer.Serialize(obj); + } + private T? DeserializeForTextJson(string? json) + { + return string.IsNullOrWhiteSpace(json) ? default : System.Text.Json.JsonSerializer.Deserialize(json); + } + /// /// 获取来源系统接口的参数名 /// @@ -430,7 +437,6 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe } } - private Dictionary ExtractTrackExtraDict(string trackExtraStr) { var dict = new Dictionary();