This commit is contained in:
xiaolipro 2024-07-26 17:57:58 +08:00
parent f00805437d
commit dd8a8065cc
5 changed files with 23 additions and 37 deletions

View File

@ -13,7 +13,7 @@ public interface IForewarningNotifyService
/// </summary> /// </summary>
/// <param name="order">预警订单模型。</param> /// <param name="order">预警订单模型。</param>
/// <returns>创建操作的结果,以整数形式返回。</returns> /// <returns>创建操作的结果,以整数形式返回。</returns>
Task<int> CreateForewarningNotify(ForewarningOrderModel order); Task WarningCalculateAsync(List<ForewarningOrderModel> order);
/// <summary> /// <summary>
/// 删除预警通知。 /// 删除预警通知。

View File

@ -60,14 +60,20 @@ public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICa
}); });
// 预警计算 // 预警计算
WarningCalculationAsync(orders); var warningOrders = orders.Select(order => new ForewarningOrderModel
}
private Task WarningCalculationAsync(List<OrderEntity> orders)
{ {
var forewarningOrderModels = orders.Select(OrderToForewarningOrderModel).ToList(); Id = order.Id,
TrackStatusId = @event.TrackStatusId,
return Task.CompletedTask; SubSystemId = order.SubSystemId,
CustomerId = order.CustomId,
CargoType = order.CargoType,
Month = order.CreateTime.Month,
Area = DetermineAreaBasedOnOrderDetails(order),
IsTransit = order.IsTransit,
LeavePort = order.LeavePort,
ProductCode = order.ProductCode
}).ToList();
_forewarningNotifyService.WarningCalculateAsync(warningOrders);
} }
private OrderEntity MapOrderSummary(OrderEntity x) private OrderEntity MapOrderSummary(OrderEntity x)
@ -75,6 +81,8 @@ public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICa
return new OrderEntity return new OrderEntity
{ {
Id = x.Id, Id = x.Id,
SubSystemId = x.SubSystemId,
CustomId = x.CustomId,
// 轨迹 // 轨迹
IsCompleted = x.IsCompleted, IsCompleted = x.IsCompleted,
@ -97,23 +105,6 @@ public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICa
}; };
} }
private ForewarningOrderModel OrderToForewarningOrderModel(OrderEntity order)
{
return new ForewarningOrderModel
{
Id = order.Id,
Track = DetermineTrackBasedOnOrderDetails(order),
SystemId = order.SubSystemId,
CustomerId = order.CustomId,
CargoType = order.CargoType,
Month = order.CreateTime.Month,
Area = DetermineAreaBasedOnOrderDetails(order),
IsTransit = order.IsTransit,
LeavePort = order.LeavePort,
ProductCode = order.ProductCode
};
}
// Placeholder methods for deriving or converting values. You'll need to implement these based on your specific logic. // Placeholder methods for deriving or converting values. You'll need to implement these based on your specific logic.
private int DetermineTrackBasedOnOrderDetails(OrderEntity order) private int DetermineTrackBasedOnOrderDetails(OrderEntity order)
{ {

View File

@ -6,7 +6,6 @@ using SJZY.Track.Application.Contract.Dtos.Forewarning;
using SJZY.Track.Domain.Aggregates.ForewarningAggregate; using SJZY.Track.Domain.Aggregates.ForewarningAggregate;
using SJZY.Track.Domain.Dtos.Forewarning; using SJZY.Track.Domain.Dtos.Forewarning;
using SJZY.Track.Domain.Enums; using SJZY.Track.Domain.Enums;
using SqlSugar;
namespace SJZY.Track.Application.Helpers; namespace SJZY.Track.Application.Helpers;

View File

@ -31,13 +31,9 @@ public class ForewarningNotifyService : IForewarningNotifyService, ITransientDep
/// </summary> /// </summary>
/// <param name="order">创建预警通知需要的订单信息</param> /// <param name="order">创建预警通知需要的订单信息</param>
/// <returns>创建的通知总量,0表示没有规则</returns> /// <returns>创建的通知总量,0表示没有规则</returns>
public async Task<int> CreateForewarningNotify(ForewarningOrderModel order) public async Task WarningCalculateAsync(List<ForewarningOrderModel> order)
{ {
var rules = GetRule(order); throw new NotImplementedException();
if (rules == null || rules.Count == 0)
return 0;
return await ExecuteRule(rules, order.Id);
} }
/// <summary> /// <summary>
@ -107,7 +103,7 @@ public class ForewarningNotifyService : IForewarningNotifyService, ITransientDep
/// <returns></returns> /// <returns></returns>
private List<ForewarningRuleItem> GetRule(ForewarningOrderModel order) private List<ForewarningRuleItem> GetRule(ForewarningOrderModel order)
{ {
if (!_factorDict.TryGetValue(GetFactorKey(order.CustomerId, order.SystemId), out var factors)) if (!_factorDict.TryGetValue(GetFactorKey(order.CustomerId, order.SubSystemId), out var factors))
{ {
return null; return null;
} }
@ -120,7 +116,7 @@ public class ForewarningNotifyService : IForewarningNotifyService, ITransientDep
if (!_ruleGroupDict.TryGetValue(item, out var rules)) if (!_ruleGroupDict.TryGetValue(item, out var rules))
continue; continue;
var allRules = rules.Where(val => val.TrackStart <= order.Track && val.TrackEnd >= order.Track); var allRules = rules.Where(val => val.TrackStart <= order.TrackStatusId && val.TrackEnd >= order.TrackStatusId);
result.AddRange(allRules); result.AddRange(allRules);
} }

View File

@ -10,9 +10,9 @@ public class ForewarningOrderModel:IForewarningFactorValue
/// <summary> /// <summary>
/// 当前轨迹状态 /// 当前轨迹状态
/// </summary> /// </summary>
public int Track { get; set; } public int TrackStatusId { get; set; }
public int SystemId { get; set; } public int SubSystemId { get; set; }
public int CustomerId { get; set; } public int CustomerId { get; set; }