diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetOrderDetailsInput.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetOrderDetailsInput.cs index 3920f5c1..9ec96ba5 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetOrderDetailsInput.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetOrderDetailsInput.cs @@ -32,6 +32,16 @@ namespace SJZY.Track.Application.Contract.Dtos.ProvideServices /// public int OrderId { set; get; } + /// + /// 订单类型(主数据枚举TrackOrderType) + /// + public int OrderType { get; set; } + + /// + /// 订单号 + /// + public string OrderNo { get; set; } = null!; + /// /// 轨迹代码 /// diff --git a/src/SJZY.Track.Application.Contract/Dtos/TrackPull/TrackPullParamConfigDto.cs b/src/SJZY.Track.Application.Contract/Dtos/TrackPull/TrackPullParamConfigDto.cs index b8f22ac1..79af5185 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/TrackPull/TrackPullParamConfigDto.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/TrackPull/TrackPullParamConfigDto.cs @@ -10,32 +10,32 @@ public class TrackPullParamConfigDto /// /// 轨迹时区参数名 /// - public string TrackTimeZoneName { get; set; } = null!; + public string? TrackTimeZoneName { get; set; } /// /// 轨迹代码参数名 /// - public string TrackContentCodeName { get; set; } = null!; + public string? TrackContentCodeName { get; set; } /// /// 轨迹内容参数名 /// - public string TrackContentName { get; set; } = null!; + public string? TrackContentName { get; set; } /// /// 轨迹发生地参数名 /// - public string TrackPlaceName { get; set; } = null!; + public string? TrackPlaceName { get; set; } /// /// 轨迹状态参数名 /// - public string TrackStatusName { get; set; } = null!; + public string? TrackStatusName { get; set; } /// /// 轨迹发生时间参数名 /// - public string TrackTimeName { get; set; } = null!; + public string? TrackTimeName { get; set; } /// /// 订单数组路径 diff --git a/src/SJZY.Track.Application/EventHandlers/TrackRefreshEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackRefreshEventHandler.cs index e898fcf7..f708877e 100644 --- a/src/SJZY.Track.Application/EventHandlers/TrackRefreshEventHandler.cs +++ b/src/SJZY.Track.Application/EventHandlers/TrackRefreshEventHandler.cs @@ -29,14 +29,14 @@ public class TrackRefreshEventHandler : ITransientDependency, ICapSubscribe } [CapSubscribe(GlobalConst.TrackRefreshSubscribe)] - public async Task ConsumerAsync(InterfaceRelayTrackRefreshEvent @event) + public async Task ConsumerAsync(InterfaceRelayForwardReplayEvent @event) { // tips:attach返回的是服务商id,必有 var attach = JsonConvert.DeserializeObject(@event.Attach); if (attach is null) return; - var config = await _trackPullCacheService.GetPullConfigAsync(attach.ServiceProviderId, attach.SubSystemId); + var config = await _trackPullCacheService.GetPullConfigAsync(attach.SubSystemId, attach.ServiceProviderId); - var data = JObject.FromObject(@event.Data); + var data = JObject.Parse(@event.Data.ToString()!); var orderToken = data[config.ParamConfig.OrderPath]; if (orderToken is JArray orderTokens) { @@ -98,30 +98,31 @@ public class TrackRefreshEventHandler : ITransientDependency, ICapSubscribe TrackPullContentConfigDto? matchedContentConfig = null; // 1、匹配轨迹代码 - var trackCode = trackToken[paramConfig.TrackContentCodeName]?.Value(); - if (!trackCode.IsNullOrWhiteSpace()) + if (paramConfig.TrackContentCodeName != null) { - matchedContentConfig = contentConfigs.FirstOrDefault(x => x.TrackContentCodeValue == trackCode); + var trackCode = trackToken[paramConfig.TrackContentCodeName]?.Value(); + if (!trackCode.IsNullOrWhiteSpace()) + { + matchedContentConfig = contentConfigs.FirstOrDefault(x => x.TrackContentCodeValue == trackCode); + } } - // 2、匹配轨迹状态 - if (matchedContentConfig is null) + else if (paramConfig.TrackStatusName != null) { var trackStatus = trackToken[paramConfig.TrackStatusName]?.Value(); if (!trackStatus.IsNullOrWhiteSpace()) { - matchedContentConfig = contentConfigs.FirstOrDefault(x => x.TrackStatusValue == trackCode); + matchedContentConfig = contentConfigs.FirstOrDefault(x => x.TrackStatusValue == trackStatus); } } - // 3、匹配轨迹内容 - if (matchedContentConfig is null) + else if (paramConfig.TrackContentName != null) { var trackContent = trackToken[paramConfig.TrackContentName]?.Value(); if (!trackContent.IsNullOrWhiteSpace()) { Debug.Assert(trackContent != null, nameof(trackContent) + " != null"); - matchedContentConfig = contentConfigs.FirstOrDefault(x => x.TrackContentValue == trackCode); + matchedContentConfig = contentConfigs.FirstOrDefault(x => x.TrackContentValue == trackContent); // 按关键字分析轨迹内容 if (matchedContentConfig is null) @@ -155,7 +156,10 @@ public class TrackRefreshEventHandler : ITransientDependency, ICapSubscribe if (matchedContentConfig is null) return; - var trackPlace = trackToken[paramConfig.TrackPlaceName]?.Value(); + // 轨迹发生地 + var trackPlace = paramConfig.TrackPlaceName == null + ? null + : trackToken[paramConfig.TrackPlaceName]?.Value(); if (trackPlace.IsNullOrWhiteSpace()) { Expression> resultExpression = @@ -173,12 +177,20 @@ public class TrackRefreshEventHandler : ITransientDependency, ICapSubscribe x.Id == trackUpsertEvent.OrderId, resultExpression); } + // 轨迹发生时间 + var trackTime = paramConfig.TrackTimeName == null + ? null + : trackToken[paramConfig.TrackTimeName]?.Value(); + // 轨迹发生时区 + var trackTimeZone = paramConfig.TrackTimeZoneName == null + ? null + : trackToken[paramConfig.TrackTimeZoneName]?.Value(); + // 新增/更新轨迹 trackUpsertEvent.TrackCode = matchedContentConfig.TrackContentCode; trackUpsertEvent.TrackPlace = trackPlace ?? "CN"; - trackUpsertEvent.TrackTime = trackToken[paramConfig.TrackTimeName]?.Value() ?? DateTime.Now; - trackUpsertEvent.TrackTimeZone = trackToken[paramConfig.TrackTimeZoneName]?.Value() ?? - matchedContentConfig.TrackTimeZoneValue ?? 8; + trackUpsertEvent.TrackTime = trackTime ?? DateTime.Now; + trackUpsertEvent.TrackTimeZone = trackTimeZone ?? matchedContentConfig.TrackTimeZoneValue ?? 8; await _capPublisher.PublishAsync(GlobalConst.TrackUpsertSubscribe, trackUpsertEvent); } } \ No newline at end of file diff --git a/src/SJZY.Track.Application/SJZY.Track.Application.csproj b/src/SJZY.Track.Application/SJZY.Track.Application.csproj index 160ca752..fc1c5423 100644 --- a/src/SJZY.Track.Application/SJZY.Track.Application.csproj +++ b/src/SJZY.Track.Application/SJZY.Track.Application.csproj @@ -8,7 +8,7 @@ - + diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackPushPullService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackPushPullService.cs index 2e1dd08b..1401b5b8 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/TrackPushPullService.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackPushPullService.cs @@ -50,7 +50,7 @@ public class TrackPushPullService : ApplicationService }).ToList(); // 批量获取轨迹 - await _httpClientProxy.Service.BatchForwardThenPushToQueueAsync( + var requestId = await _httpClientProxy.Service.BatchForwardThenPushToQueueAsync( "A012", group.Key.ServiceProviderCode, data, GlobalConst.TrackRefreshSubscribe, JsonConvert.SerializeObject(group.Key)); } diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs index fbd0fd99..4c3d1a45 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs @@ -120,7 +120,7 @@ public partial class TrackService : ApplicationService, ITrackService throw new BusinessException(message: $"订单:{input.OrderNo}不存在"); } - var codes = await _provideQueries.GetCanDeleteTrackCodesAsync(new List(order.Id), input.TrackCodes); + var codes = await _provideQueries.GetCanDeleteTrackCodesAsync(new List { order.Id }, input.TrackCodes); if (codes.Count == 0) { @@ -149,7 +149,7 @@ public partial class TrackService : ApplicationService, ITrackService public async Task BatchDeleteTrackAsync(BatchDeleteTrackInput input) { var orders = await _orderRepository.GetListAsync(x => - x.OrderType == input.OrderType && input.OrderNos.Contains(x.OrderNo) && !x.IsPushCompleted + x.OrderType == input.OrderType && input.OrderNos.Contains(x.OrderNo) , x => new { x.Id, x.SubSystemId diff --git a/src/SJZY.Track.Application/Services/TrackPull/TrackPullCacheService.cs b/src/SJZY.Track.Application/Services/TrackPull/TrackPullCacheService.cs index 168dae3a..f54f366a 100644 --- a/src/SJZY.Track.Application/Services/TrackPull/TrackPullCacheService.cs +++ b/src/SJZY.Track.Application/Services/TrackPull/TrackPullCacheService.cs @@ -34,8 +34,10 @@ public class TrackPullCacheService : ApplicationService, ITrackPullCacheService, { var data = new TrackPullConfigDto(); - Expression> exp = x => - (!id.HasValue || x.Id == id) && (id.HasValue || (x.SubSystemId == subSystemId && x.ServiceProviderId == serviceProviderId)); + Expression> exp = x => true; + if (id.HasValue) exp = x => x.Id == id; + else if (subSystemId.HasValue && serviceProviderId.HasValue) + exp = x => x.SubSystemId == subSystemId && x.ServiceProviderId == serviceProviderId; var trackPullConfigEntity = await _trackPullConfigRepository.GetFirstAsync(exp); if (trackPullConfigEntity == null) return data; diff --git a/src/SJZY.Track.Domain/Dtos/Order/GetPageTrackOrderInputVO.cs b/src/SJZY.Track.Domain/Dtos/Order/GetPageTrackOrderInputVO.cs index 8407e59b..dd560b60 100644 --- a/src/SJZY.Track.Domain/Dtos/Order/GetPageTrackOrderInputVO.cs +++ b/src/SJZY.Track.Domain/Dtos/Order/GetPageTrackOrderInputVO.cs @@ -70,9 +70,9 @@ namespace SJZY.Track.Domain.Dtos.Order public int OrderType { get; set; } /// - /// 订单名称 + /// 订单类型名称 /// - public string OrderTypeName { get; set; } + public string? OrderTypeName { get; set; } /// /// 订单号