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; }
///
/// 订单号