diff --git a/src/SJZY.Track.Application.Contract/Dtos/TrackOrder/TrackPushRecordItem.cs b/src/SJZY.Track.Application.Contract/Dtos/TrackOrder/TrackPushRecordItem.cs
new file mode 100644
index 00000000..f01d9869
--- /dev/null
+++ b/src/SJZY.Track.Application.Contract/Dtos/TrackOrder/TrackPushRecordItem.cs
@@ -0,0 +1,5 @@
+namespace SJZY.Track.Application.Contract.Dtos.TrackOrder;
+
+public class TrackPushRecordItem
+{
+}
\ No newline at end of file
diff --git a/src/SJZY.Track.Application.Contract/Events/TrackPushEvent.cs b/src/SJZY.Track.Application.Contract/Events/TrackPushEvent.cs
index b74281a9..8434072e 100644
--- a/src/SJZY.Track.Application.Contract/Events/TrackPushEvent.cs
+++ b/src/SJZY.Track.Application.Contract/Events/TrackPushEvent.cs
@@ -27,6 +27,21 @@ public class TrackPushEvent
///
public int TrackContentId { get; set; }
+ ///
+ /// 轨迹状态
+ ///
+ public string TrackStatus { get; set; } = null!;
+
+ ///
+ /// 轨迹内容代码
+ ///
+ public string TrackCode { get; set; } = null!;
+
+ ///
+ /// 轨迹内容
+ ///
+ public string TrackContent { get; set; } = null!;
+
///
/// 轨迹发生地
///
diff --git a/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs
index 5aa94802..c1ca1b19 100644
--- a/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs
+++ b/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs
@@ -51,11 +51,18 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
RequestId = res.RequestId,
Message = res.Msg,
OptionType = @event.OptionType.ToString(),
+ TrackStatus = @event.TrackStatus,
+ TrackCode = @event.TrackCode,
+ TrackContent = @event.TrackContent,
TrackPlace = @event.TrackPlace,
TrackTime = @event.TrackTime,
TrackTimeZone = @event.TrackTimeZone,
+ TrackContentCodeValue = @event.TrackContentCodeValue,
+ TrackContentValue = @event.TrackContentValue,
+ TrackEnContentValue = @event.TrackEnContentValue,
+ TrackStatusValue = @event.TrackStatusValue,
+ ExpandFieldsValue = @event.ExpandFieldsValue,
IsSuccess = isSuccess,
- IsAuto = @event.OperationMan == null,
CreateUser = @event.OperationMan ?? "系统",
CreateTime = DateTime.Now
});
diff --git a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
index a0733812..9d375716 100644
--- a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
+++ b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
@@ -2,6 +2,7 @@
using DotNetCore.CAP;
using SJZY.Expand.ABP.Core.Logger;
using SJZY.Expand.ABP.Core.PublicMethords;
+using SJZY.Track.Application.Contract.Dtos.ProvideServices;
using SJZY.Track.Application.Contract.Events;
using SJZY.Track.Application.Contract.Services;
using SJZY.Track.Domain.Aggregates.OrderAggregate;
@@ -155,37 +156,50 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
///
private async Task HandleTrackPushAsync(TrackUpsertEvent @event, TrackDetailsIndex track)
{
- var config = await _trackPushCacheService.InferNextPushContentOrNullAsync(
- @event.SubSystemId, @event.CustomId, @event.LatestPushTrackContentId);
-
- if (config == null || !config.IsAutoPush) return;
-
- // 当前发生的轨迹就是要推送的
- if (config.TrackContentId == track.TrackContentId && config.OrderType == @event.OrderType)
+ TrackPushContentConfigDto? config;
+ OptionType optionType = OptionType.修改;
+ // 推送更新
+ if (!track.Id.IsNullOrWhiteSpace())
{
- var trackPushEvent = new TrackPushEvent
- {
- ServiceProviderCode = config.ServiceProviderCode,
- OrderNo = track.OrderNo,
- TrackContentId = config.TrackContentId,
- TrackPlace = track.TrackPlace,
- TrackTime = track.TrackTime.AddHours(config.TrackTimeZone ?? track.TrackTimeZone - track.TrackTimeZone),
- TrackTimeZone = (float)(config.TrackTimeZone ?? track.TrackTimeZone),
- TrackContentCodeValue = config.TrackContentCodeValue,
- TrackContentValue = config.TrackContentValue,
- TrackEnContentValue = config.TrackEnContentValue,
- TrackStatusValue = config.TrackStatusValue,
- ExpandFieldsValue = config.ExpandFieldsValue
- };
-
- // 推送更新
- if (!track.Id.IsNullOrWhiteSpace())
- {
- trackPushEvent.OptionType = OptionType.修改;
- if (!config.IsCanUpdate) return;
- }
-
- await _capPublisher.PublishAsync(GlobalConst.TrackPushSubscribe, trackPushEvent);
+ config = await _trackPushCacheService.GetPushContentConfigAsync(
+ @event.SubSystemId, @event.CustomId, track.TrackContentId);
+ if (!config.IsCanUpdate) return;
}
+ else
+ {
+ // 推送新增,需要根据上一次的推送 推断 本次推送 是否可行
+ config = await _trackPushCacheService.InferNextPushContentOrNullAsync(
+ @event.SubSystemId, @event.CustomId, @event.LatestPushTrackContentId);
+
+ if (config == null || !config.IsAutoPush) return;
+
+ // 当前发生的轨迹就是要推送的
+ if (config.TrackContentId != track.TrackContentId) return;
+
+ optionType = OptionType.新增;
+ }
+
+ if (config.OrderType != @event.OrderType) return;
+
+ var trackPushEvent = new TrackPushEvent
+ {
+ OptionType = optionType,
+ ServiceProviderCode = config.ServiceProviderCode,
+ OrderNo = track.OrderNo,
+ TrackContentId = config.TrackContentId,
+ TrackStatus = track.TrackStatus,
+ TrackCode = track.TrackCode,
+ TrackContent = track.TrackContent,
+ TrackPlace = track.TrackPlace,
+ TrackTime = track.TrackTime.AddHours(config.TrackTimeZone ?? track.TrackTimeZone - track.TrackTimeZone),
+ TrackTimeZone = (float)(config.TrackTimeZone ?? track.TrackTimeZone),
+ TrackContentCodeValue = config.TrackContentCodeValue,
+ TrackContentValue = config.TrackContentValue,
+ TrackEnContentValue = config.TrackEnContentValue,
+ TrackStatusValue = config.TrackStatusValue,
+ ExpandFieldsValue = config.ExpandFieldsValue
+ };
+
+ await _capPublisher.PublishAsync(GlobalConst.TrackPushSubscribe, trackPushEvent);
}
}
\ No newline at end of file
diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs
index 6ce154dd..2fee5408 100644
--- a/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs
+++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs
@@ -78,6 +78,10 @@ public class TrackPushService : ApplicationService
{
ServiceProviderCode = config.ServiceProviderCode,
OrderNo = order.OrderNo,
+ TrackContentId = config.TrackContentId,
+ TrackStatus = track.TrackStatus,
+ TrackCode = track.TrackCode,
+ TrackContent = track.TrackContent,
TrackPlace = track.TrackPlace,
TrackTime = track.TrackTime.AddHours(config.TrackTimeZone ??
track.TrackTimeZone - track.TrackTimeZone),
diff --git a/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs b/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs
index 4ca4b245..f25aad89 100644
--- a/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs
+++ b/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs
@@ -3,6 +3,7 @@ using SJZY.Track.Application.Contract.Dtos.ProvideServices;
using SJZY.Track.Application.Contract.Dtos.TrackOrder;
using SJZY.Track.Domain.Aggregates.TrackContentAggregate;
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
+using SJZY.Track.Domain.Aggregates.TrackPushAggregate;
using SJZY.Track.Domain.Dtos.Order;
using SJZY.Track.Domain.Dtos.TrackTemplate;
using SJZY.Track.Domain.Enums;
@@ -17,16 +18,19 @@ public class TrackOrderService : ApplicationService
private readonly ITrackOrderQueries _trackOrderQueries;
private readonly ITrackDetailsRepository _trackDetailsRepository;
private readonly ITrackContentRepository _trackContentRepository;
+ private readonly ITrackPushRecordsRepository _trackPushRecordsRepository;
public TrackOrderService(
ITrackOrderQueries trackOrderQueries,
ITrackDetailsRepository trackDetailsRepository,
- ITrackContentRepository trackContentRepository
+ ITrackContentRepository trackContentRepository,
+ ITrackPushRecordsRepository trackPushRecordsRepository
)
{
_trackOrderQueries = trackOrderQueries;
_trackDetailsRepository = trackDetailsRepository;
_trackContentRepository = trackContentRepository;
+ _trackPushRecordsRepository = trackPushRecordsRepository;
}
#region 轨迹订单明细
@@ -136,4 +140,15 @@ public class TrackOrderService : ApplicationService
WarnCount = counts.FirstOrDefault(x => x.ProblemType == (int)TrackProblemType.Warn)?.Count ?? 0,
};
}
+
+ ///
+ /// 获取轨迹推送记录
+ ///
+ ///
+ /// 订单id
+ [HttpGet]
+ public async Task> GetTrackPushRecordsAsync(int orderId)
+ {
+ return await _trackPushRecordsRepository.GetTrackPushRecordsAsync(orderId);
+ }
}
\ No newline at end of file
diff --git a/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/ITrackDetailsRepository.cs b/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/ITrackDetailsRepository.cs
index b0a1cf21..acd0ed4e 100644
--- a/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/ITrackDetailsRepository.cs
+++ b/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/ITrackDetailsRepository.cs
@@ -23,8 +23,6 @@ public interface ITrackDetailsRepository
///
Task DeleteTrackAsync(int orderId, List trackCodes);
- Task?> GetListAsync(List orderIds);
-
///
/// 获取最近一条发生的轨迹
///
diff --git a/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/ITrackPushRecordsRepository.cs b/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/ITrackPushRecordsRepository.cs
index c7ae38be..e8115b13 100644
--- a/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/ITrackPushRecordsRepository.cs
+++ b/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/ITrackPushRecordsRepository.cs
@@ -8,4 +8,11 @@ public interface ITrackPushRecordsRepository
///
///
Task AddAsync(TrackPushRecordIndex index);
+
+ ///
+ /// 获取轨迹推送记录
+ ///
+ ///
+ ///
+ Task> GetTrackPushRecordsAsync(int orderId);
}
\ No newline at end of file
diff --git a/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/TrackPushRecordIndex.cs b/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/TrackPushRecordIndex.cs
index ef9dfb74..0d178b45 100644
--- a/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/TrackPushRecordIndex.cs
+++ b/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/TrackPushRecordIndex.cs
@@ -12,6 +12,11 @@ public class TrackPushRecordIndex : IdBaseIndex
///
public string IndexName { get; set; } = null!;
+ ///
+ /// 订单Id
+ ///
+ public int OrderId { get; set; }
+
///
/// 接口通请求Id
///
@@ -28,9 +33,19 @@ public class TrackPushRecordIndex : IdBaseIndex
public string OptionType { get; set; } = null!;
///
- /// 是否自动推送
+ /// 轨迹状态
///
- public bool IsAuto { get; set; }
+ public string TrackStatus { get; set; } = null!;
+
+ ///
+ /// 轨迹内容代码
+ ///
+ public string TrackCode { get; set; } = null!;
+
+ ///
+ /// 轨迹内容
+ ///
+ public string TrackContent { get; set; } = null!;
///
/// 轨迹发生地
@@ -52,6 +67,31 @@ public class TrackPushRecordIndex : IdBaseIndex
///
public bool IsSuccess { get; set; }
+ ///
+ /// 轨迹代码参数值
+ ///
+ public string? TrackContentCodeValue { get; set; }
+
+ ///
+ /// 轨迹内容参数值
+ ///
+ public string? TrackContentValue { get; set; }
+
+ ///
+ /// 轨迹内容英文参数值
+ ///
+ public string? TrackEnContentValue { get; set; }
+
+ ///
+ /// 轨迹状态参数值
+ ///
+ public string? TrackStatusValue { get; set; }
+
+ ///
+ /// 扩展字段参数值
+ ///
+ public string? ExpandFieldsValue { get; set; }
+
/// 创建人
public string? CreateUser { get; set; }
diff --git a/src/SJZY.Track.Repository/Repositories/TrackPushRecordsRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackPushRecordsRepository.cs
index 31adf93d..c1bb968f 100644
--- a/src/SJZY.Track.Repository/Repositories/TrackPushRecordsRepository.cs
+++ b/src/SJZY.Track.Repository/Repositories/TrackPushRecordsRepository.cs
@@ -1,4 +1,5 @@
-using SJZY.Expand.ABP.Core.Logger;
+using Nest;
+using SJZY.Expand.ABP.Core.Logger;
using SJZY.Expand.ElasticSearch.Services;
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
using SJZY.Track.Domain.Aggregates.TrackPushAggregate;
@@ -25,4 +26,16 @@ public class TrackPushRecordsRepository : ElasticSearchContextAbstract> GetTrackPushRecordsAsync(int orderId)
+ {
+ var data = await Context.SearchAsync(x => x
+ .Query(q =>
+ q.Term(t => t.OrderId, orderId)
+ )
+ .Size(1000)
+ .Sort(s => s.Field(f => f.CreateTime, SortOrder.Descending)));
+
+ return data.Documents.ToList();
+ }
}
\ No newline at end of file