Merge branch 'refs/heads/S06' into test
This commit is contained in:
commit
af963036b2
@ -357,8 +357,8 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
|
|||||||
//来源轨迹内容,第一次新增的时候使用轨迹内容表提供的
|
//来源轨迹内容,第一次新增的时候使用轨迹内容表提供的
|
||||||
TrackStatus = trackContent.TrackStatus,
|
TrackStatus = trackContent.TrackStatus,
|
||||||
TrackStatusCode = trackContent.TrackStatusCode,
|
TrackStatusCode = trackContent.TrackStatusCode,
|
||||||
TrackContent = trackContent.TrackContent,
|
TrackContent = @event.Content?? trackContent.TrackContent,
|
||||||
TrackEnContent = trackContent.TrackEnContent,
|
TrackEnContent = @event.EnStatus?? trackContent.TrackEnContent,
|
||||||
//S06新增轨迹明细字段
|
//S06新增轨迹明细字段
|
||||||
IsVisibility = @event.IsVisibility,
|
IsVisibility = @event.IsVisibility,
|
||||||
Source = @event.Source,
|
Source = @event.Source,
|
||||||
|
|||||||
@ -41,10 +41,10 @@ public class TrackRefreshEventHandler : ITransientDependency, IRabbitHandler
|
|||||||
|
|
||||||
public ConsumeOptions Options()
|
public ConsumeOptions Options()
|
||||||
{
|
{
|
||||||
return new ConsumeOptions()
|
return new ConsumeOptions()
|
||||||
{
|
{
|
||||||
Queue = GlobalConst.TrackRefreshSubscribe,
|
Queue = GlobalConst.TrackRefreshSubscribe,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task Handle(IServiceProvider sp, BasicDeliverEventArgs args, ConsumeOptions options)
|
public async Task Handle(IServiceProvider sp, BasicDeliverEventArgs args, ConsumeOptions options)
|
||||||
@ -110,18 +110,18 @@ public class TrackRefreshEventHandler : ITransientDependency, IRabbitHandler
|
|||||||
var trackToken = orderToken.SelectToken(paramConfig.TrackDetailsPath);
|
var trackToken = orderToken.SelectToken(paramConfig.TrackDetailsPath);
|
||||||
if (trackToken is null) return;
|
if (trackToken is null) return;
|
||||||
|
|
||||||
var order = await _orderRepository.GetFirstAsync(x =>
|
//回传单号可能是主单也可能是外部单号
|
||||||
x.SubSystemId == attach.SubSystemId && x.OrderType == attach.OrderType && x.OrderNo == orderNo,
|
//通过平台code和(外部单号/主单号)查询主单
|
||||||
x => new
|
var order = await _orderRepository.GetTrackOrderByProviderAndOrderNo(attach.ServiceProviderCode, orderNo!);
|
||||||
{
|
if (order == default)
|
||||||
x.Id,
|
{
|
||||||
x.CustomId
|
_logger.LogError($"请求id: {attach.ToJson()},轨迹消费失败,找不到主单,平台code:{attach.ServiceProviderCode},单号:{orderNo}");
|
||||||
});
|
return;
|
||||||
if (order == default) return;
|
}
|
||||||
|
|
||||||
var context = new TrackRefreshContext
|
var context = new TrackRefreshContext
|
||||||
{
|
{
|
||||||
OrderId = order.Id,
|
OrderId = order.MainOrderId,
|
||||||
OrderType = attach.OrderType,
|
OrderType = attach.OrderType,
|
||||||
OrderNo = orderNo!,
|
OrderNo = orderNo!,
|
||||||
ServiceProviderCode = attach.ServiceProviderCode,
|
ServiceProviderCode = attach.ServiceProviderCode,
|
||||||
|
|||||||
@ -175,7 +175,7 @@ public class TrackOrderService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input"></param>
|
/// <param name="input"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost("GetDetailTimeline")]
|
[HttpPost("GetDetailTimeline")]
|
||||||
public async Task<UnifyResultDto<List<GetDetailTimelineOutput>>> GetDetailTimeline(GetDetailTimelineInput input)
|
public async Task<UnifyResultDto<List<GetDetailTimelineOutput>>> GetDetailTimeline(GetDetailTimelineInput input)
|
||||||
{
|
{
|
||||||
var res = new UnifyResultDto<List<GetDetailTimelineOutput>>(true);
|
var res = new UnifyResultDto<List<GetDetailTimelineOutput>>(true);
|
||||||
@ -242,18 +242,15 @@ public class TrackOrderService : ApplicationService
|
|||||||
{
|
{
|
||||||
var eddUnixTimestamp = order.EstimatedDeliveryDate.HasValue ? ToUnixTimestamp(DateTime.Parse(order.EstimatedDeliveryDate.ToString()!)) : 0;
|
var eddUnixTimestamp = order.EstimatedDeliveryDate.HasValue ? ToUnixTimestamp(DateTime.Parse(order.EstimatedDeliveryDate.ToString()!)) : 0;
|
||||||
|
|
||||||
//订单没有预计签收时间,或者订单上有预计签收事件,且预计到达时间大于时间轴上所有轨迹内容的发生时间,则显示签收节点
|
var isShowTime = eddUnixTimestamp > 0 && res.Data != null && res.Data.All(m => m.TrackTime < eddUnixTimestamp);
|
||||||
if (eddUnixTimestamp == 0 || (eddUnixTimestamp > 0 && res.Data != null && res.Data.All(m => m.TrackTime < eddUnixTimestamp)))
|
res.Data.Add(new GetDetailTimelineOutput()
|
||||||
{
|
{
|
||||||
res.Data.Add(new GetDetailTimelineOutput()
|
Content = "签收",
|
||||||
{
|
IsHighlight = false,
|
||||||
Content = "签收",
|
TrackTimeZone = isShowTime ? $"GMT{(order.DestinationTimeZone >= 0 ? "+" : "-")}{order.DestinationTimeZone}" : "",
|
||||||
IsHighlight = false,
|
TrackTime = isShowTime ? eddUnixTimestamp : 0,
|
||||||
TrackTimeZone = order.EstimatedDeliveryDate.HasValue ? $"GMT{(order.DestinationTimeZone >= 0 ? "+" : "-")}{order.DestinationTimeZone}" : "",
|
TrackTimePrefix = isShowTime ? "预计签收时间:" : "",
|
||||||
TrackTime = eddUnixTimestamp,
|
});
|
||||||
TrackTimePrefix = order.EstimatedDeliveryDate.HasValue ? "预计签收时间:" : "",
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
|
|||||||
@ -12,6 +12,14 @@ public interface IOrderRepository : IBasicRepository<OrderEntity>
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<UnifyPageResultDto<TrackOrderVO>> GetTrackOrderPagedList(GetPageTrackOrderInputVO input);
|
Task<UnifyPageResultDto<TrackOrderVO>> GetTrackOrderPagedList(GetPageTrackOrderInputVO input);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 通过三方平台和三方单号查询订单
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="serviceProvidrCode">三方平台</param>
|
||||||
|
/// <param name="orderNo">三方平台单号</param>
|
||||||
|
/// <returns>(主单号id,客户id)</returns>
|
||||||
|
Task<(int MainOrderId, int CustomId)> GetTrackOrderByProviderAndOrderNo(string serviceProvidrCode, string orderNo);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 创建订单
|
/// 创建订单
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@ -58,6 +58,34 @@ public class OrderRepository : BasicRepository<OrderEntity>, IOrderRepository, I
|
|||||||
return pageList;
|
return pageList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<(int MainOrderId, int CustomId)> GetTrackOrderByProviderAndOrderNo(string serviceProvidrCode, string orderNo)
|
||||||
|
{
|
||||||
|
var orderList = await Context.Queryable<OrderEntity>()
|
||||||
|
.LeftJoin<OrderPlatformNumberEntity>((a, b) => a.Id == b.OrderId && b.IsDeleted)
|
||||||
|
.Where((a, b) => a.OrderNo == orderNo
|
||||||
|
|| (b.Platform == serviceProvidrCode && b.OrderNumber == orderNo))
|
||||||
|
.Select((a, b) => new
|
||||||
|
{
|
||||||
|
a.Id,
|
||||||
|
a.CustomId,
|
||||||
|
b.Platform,
|
||||||
|
b.OrderNumber
|
||||||
|
})
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
|
if (orderList.Count == 0)
|
||||||
|
{
|
||||||
|
return default;
|
||||||
|
}
|
||||||
|
|
||||||
|
var order = orderList.First();
|
||||||
|
//当出现了多条记录匹配,优先使用外部单匹配提升精确度
|
||||||
|
var matchOrder = orderList.FirstOrDefault(x => x.Platform == serviceProvidrCode && x.OrderNumber == orderNo);
|
||||||
|
return matchOrder != null
|
||||||
|
? (matchOrder.Id, matchOrder.CustomId)
|
||||||
|
: (order.Id, order.CustomId);
|
||||||
|
}
|
||||||
|
|
||||||
public async Task<int> CreateOrderAsync(OrderEntity order)
|
public async Task<int> CreateOrderAsync(OrderEntity order)
|
||||||
{
|
{
|
||||||
using var tran = TransactionHelper.GetReadCommitted();
|
using var tran = TransactionHelper.GetReadCommitted();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user