Merge remote-tracking branch 'origin/S04轨迹预警' into S04轨迹预警
# Conflicts: # src/SJZY.Track.Application/CAP/EventHandlers/TrackChangeAfterUpdateOrderEventHandler.cs
This commit is contained in:
commit
228312ad6f
@ -30,7 +30,7 @@ public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICa
|
||||
[CapSubscribe(GlobalConst.TrackChangeAfterUpdateOrderSubscribe)]
|
||||
public async Task ConsumerAsync(TrackChangeAfterUpdateOrderEvent @event)
|
||||
{
|
||||
var orders = await _orderRepository.GetListAsync(x => @event.OrderIds.Contains(x.Id), x => MapOrderSummary(x));
|
||||
var orders = await GetOrdersAsync(@event.OrderIds);
|
||||
|
||||
if (orders.Count == 0) return;
|
||||
|
||||
@ -79,7 +79,34 @@ public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICa
|
||||
});
|
||||
|
||||
// 预警计算
|
||||
await _forewarningNotifyService.WarningCalculateAsync( BuiltWarningDto(orders, @event));
|
||||
await _forewarningNotifyService.WarningCalculateAsync(BuiltWarningDto(orders, @event));
|
||||
}
|
||||
|
||||
private async Task<List<OrderEntity>> GetOrdersAsync(int[] orderIds)
|
||||
{
|
||||
return await _orderRepository.GetListAsync(order => orderIds.Contains(order.Id), order => new OrderEntity
|
||||
{
|
||||
Id = order.Id,
|
||||
|
||||
// 轨迹
|
||||
IsCompleted = order.IsCompleted,
|
||||
LatestTrackContent = order.LatestTrackContent,
|
||||
LatestTrackEnContent = order.LatestTrackEnContent,
|
||||
LatestTrackPlace = order.LatestTrackPlace,
|
||||
LatestTrackTime = order.LatestTrackTime,
|
||||
LatestTrackTimeZone = order.LatestTrackTimeZone,
|
||||
|
||||
// 因素
|
||||
CargoType = order.CargoType,
|
||||
CreateTime = order.CreateTime,
|
||||
ArrivalCountry = order.ArrivalCountry,
|
||||
ArrivalProvince = order.ArrivalProvince,
|
||||
ArrivalCity = order.ArrivalCity,
|
||||
ArrivalPostCode = order.ArrivalPostCode,
|
||||
IsTransit = order.IsTransit,
|
||||
LeavePort = order.LeavePort,
|
||||
ProductCode = order.ProductCode
|
||||
});
|
||||
}
|
||||
|
||||
private WarningDto BuiltWarningDto(List<OrderEntity> orders, TrackChangeAfterUpdateOrderEvent @event)
|
||||
@ -106,33 +133,6 @@ public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICa
|
||||
}).ToList()
|
||||
};
|
||||
}
|
||||
|
||||
private OrderEntity MapOrderSummary(OrderEntity order)
|
||||
{
|
||||
return new OrderEntity
|
||||
{
|
||||
Id = order.Id,
|
||||
|
||||
// 轨迹
|
||||
IsCompleted = order.IsCompleted,
|
||||
LatestTrackContent = order.LatestTrackContent,
|
||||
LatestTrackEnContent = order.LatestTrackEnContent,
|
||||
LatestTrackPlace = order.LatestTrackPlace,
|
||||
LatestTrackTime = order.LatestTrackTime,
|
||||
LatestTrackTimeZone = order.LatestTrackTimeZone,
|
||||
|
||||
// 因素
|
||||
CargoType = order.CargoType,
|
||||
CreateTime = order.CreateTime,
|
||||
ArrivalCountry = order.ArrivalCountry,
|
||||
ArrivalProvince = order.ArrivalProvince,
|
||||
ArrivalCity = order.ArrivalCity,
|
||||
ArrivalPostCode = order.ArrivalPostCode,
|
||||
IsTransit = order.IsTransit,
|
||||
LeavePort = order.LeavePort,
|
||||
ProductCode = order.ProductCode
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取服务商字典
|
||||
|
||||
@ -51,10 +51,10 @@ public class ForewarningNotifyService : IForewarningNotifyService, ITransientDep
|
||||
order
|
||||
);
|
||||
|
||||
foreach (var rule in endingRules)
|
||||
foreach (var member in endingRules.Select(rule =>
|
||||
new WarningNotifyCacheEntry(rule.Id, order.Id).ToString())
|
||||
)
|
||||
{
|
||||
var entry = new WarningNotifyCacheEntry(rule.Id, order.Id);
|
||||
var member = entry.ToString();
|
||||
// todo: pipeline optimize?
|
||||
var score = await RedisHelper.Client.ZScoreAsync(GlobalConst.ForewarningNotifyKey, member);
|
||||
// tips: score is null 说明发生ending时,没有匹配到规则,所以没有add到set,不需要删除
|
||||
|
||||
Loading…
Reference in New Issue
Block a user