调整推送索引字段

This commit is contained in:
李鹏军 2024-03-18 17:30:21 +08:00
parent 21c6422f23
commit 6cc32ffbad
10 changed files with 155 additions and 37 deletions

View File

@ -0,0 +1,5 @@
namespace SJZY.Track.Application.Contract.Dtos.TrackOrder;
public class TrackPushRecordItem
{
}

View File

@ -27,6 +27,21 @@ public class TrackPushEvent
/// </summary>
public int TrackContentId { get; set; }
/// <summary>
/// 轨迹状态
/// </summary>
public string TrackStatus { get; set; } = null!;
/// <summary>
/// 轨迹内容代码
/// </summary>
public string TrackCode { get; set; } = null!;
/// <summary>
/// 轨迹内容
/// </summary>
public string TrackContent { get; set; } = null!;
/// <summary>
/// 轨迹发生地
/// </summary>

View File

@ -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
});

View File

@ -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
/// <param name="track"></param>
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);
}
}

View File

@ -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),

View File

@ -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,
};
}
/// <summary>
/// 获取轨迹推送记录
/// </summary>
/// <returns></returns>
/// <param name="orderId">订单id</param>
[HttpGet]
public async Task<List<TrackPushRecordIndex>> GetTrackPushRecordsAsync(int orderId)
{
return await _trackPushRecordsRepository.GetTrackPushRecordsAsync(orderId);
}
}

View File

@ -23,8 +23,6 @@ public interface ITrackDetailsRepository
/// <returns></returns>
Task<bool> DeleteTrackAsync(int orderId, List<string> trackCodes);
Task<List<TrackDetailsIndex>?> GetListAsync(List<int> orderIds);
/// <summary>
/// 获取最近一条发生的轨迹
/// </summary>

View File

@ -8,4 +8,11 @@ public interface ITrackPushRecordsRepository
/// <param name="index"></param>
/// <returns></returns>
Task AddAsync(TrackPushRecordIndex index);
/// <summary>
/// 获取轨迹推送记录
/// </summary>
/// <param name="orderId"></param>
/// <returns></returns>
Task<List<TrackPushRecordIndex>> GetTrackPushRecordsAsync(int orderId);
}

View File

@ -12,6 +12,11 @@ public class TrackPushRecordIndex : IdBaseIndex
/// </summary>
public string IndexName { get; set; } = null!;
/// <summary>
/// 订单Id
/// </summary>
public int OrderId { get; set; }
/// <summary>
/// 接口通请求Id
/// </summary>
@ -28,9 +33,19 @@ public class TrackPushRecordIndex : IdBaseIndex
public string OptionType { get; set; } = null!;
/// <summary>
/// 是否自动推送
/// 轨迹状态
/// </summary>
public bool IsAuto { get; set; }
public string TrackStatus { get; set; } = null!;
/// <summary>
/// 轨迹内容代码
/// </summary>
public string TrackCode { get; set; } = null!;
/// <summary>
/// 轨迹内容
/// </summary>
public string TrackContent { get; set; } = null!;
/// <summary>
/// 轨迹发生地
@ -52,6 +67,31 @@ public class TrackPushRecordIndex : IdBaseIndex
/// </summary>
public bool IsSuccess { get; set; }
/// <summary>
/// 轨迹代码参数值
/// </summary>
public string? TrackContentCodeValue { get; set; }
/// <summary>
/// 轨迹内容参数值
/// </summary>
public string? TrackContentValue { get; set; }
/// <summary>
/// 轨迹内容英文参数值
/// </summary>
public string? TrackEnContentValue { get; set; }
/// <summary>
/// 轨迹状态参数值
/// </summary>
public string? TrackStatusValue { get; set; }
/// <summary>
/// 扩展字段参数值
/// </summary>
public string? ExpandFieldsValue { get; set; }
/// <summary>创建人</summary>
public string? CreateUser { get; set; }

View File

@ -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<TrackDeta
LogHelper.Error($"轨迹推送记录写入es失败,原因:{r.DebugInformation}。");
}
}
public async Task<List<TrackPushRecordIndex>> GetTrackPushRecordsAsync(int orderId)
{
var data = await Context.SearchAsync<TrackPushRecordIndex>(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();
}
}