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

View File

@ -60,14 +60,20 @@ public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICa
});
// 预警计算
WarningCalculationAsync(orders);
}
private Task WarningCalculationAsync(List<OrderEntity> orders)
var warningOrders = orders.Select(order => new ForewarningOrderModel
{
var forewarningOrderModels = orders.Select(OrderToForewarningOrderModel).ToList();
return Task.CompletedTask;
Id = order.Id,
TrackStatusId = @event.TrackStatusId,
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)
@ -75,6 +81,8 @@ public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICa
return new OrderEntity
{
Id = x.Id,
SubSystemId = x.SubSystemId,
CustomId = x.CustomId,
// 轨迹
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.
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.Dtos.Forewarning;
using SJZY.Track.Domain.Enums;
using SqlSugar;
namespace SJZY.Track.Application.Helpers;

View File

@ -31,13 +31,9 @@ public class ForewarningNotifyService : IForewarningNotifyService, ITransientDep
/// </summary>
/// <param name="order">创建预警通知需要的订单信息</param>
/// <returns>创建的通知总量,0表示没有规则</returns>
public async Task<int> CreateForewarningNotify(ForewarningOrderModel order)
public async Task WarningCalculateAsync(List<ForewarningOrderModel> order)
{
var rules = GetRule(order);
if (rules == null || rules.Count == 0)
return 0;
return await ExecuteRule(rules, order.Id);
throw new NotImplementedException();
}
/// <summary>
@ -107,7 +103,7 @@ public class ForewarningNotifyService : IForewarningNotifyService, ITransientDep
/// <returns></returns>
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;
}
@ -120,7 +116,7 @@ public class ForewarningNotifyService : IForewarningNotifyService, ITransientDep
if (!_ruleGroupDict.TryGetValue(item, out var rules))
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);
}

View File

@ -10,9 +10,9 @@ public class ForewarningOrderModel:IForewarningFactorValue
/// <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; }