refactor:重构优化消除警告

This commit is contained in:
hardstylewyl 2025-03-24 11:30:40 +08:00
parent b93386d19c
commit d2dd8e6eb1
4 changed files with 30 additions and 29 deletions

View File

@ -84,7 +84,7 @@ public class TrackOrderService : ApplicationService
{ {
var order = await _orderRepository.GetFirstAsync(x => x.Id == input.OrderId); var order = await _orderRepository.GetFirstAsync(x => x.Id == input.OrderId);
if (order == default) throw new BusinessException(message: "订单不存在"); if (order == null) throw new BusinessException(message: "订单不存在");
var oldIsCompleted = order.IsCompleted; var oldIsCompleted = order.IsCompleted;
if (oldIsCompleted == input.IsCompleted) if (oldIsCompleted == input.IsCompleted)
@ -334,7 +334,7 @@ public class TrackOrderService : ApplicationService
{ {
_ = Task.Run(async () => _ = Task.Run(async () =>
{ {
var scope = _serviceProvider.CreateScope(); var scope = _serviceProvider.CreateAsyncScope();
try try
{ {
var handler = scope.ServiceProvider.GetRequiredService<IOrderWarningHandler>(); var handler = scope.ServiceProvider.GetRequiredService<IOrderWarningHandler>();
@ -342,7 +342,7 @@ public class TrackOrderService : ApplicationService
} }
finally finally
{ {
scope.Dispose(); await scope.DisposeAsync();
} }
}); });
} }

View File

@ -57,7 +57,7 @@ public sealed class CompleteWarningHandler : ICompleteWarningHandler, ITransient
.ToDictionary(x => x.Key, .ToDictionary(x => x.Key,
y => y.Value y => y.Value
.GroupBy(x => x.TrackStatusId) .GroupBy(x => x.TrackStatusId)
.ToDictionary(a => a.Key, b => true) .ToDictionary(a => a.Key, _ => true)
); );
// 3.查出预警明细(待处理) // 3.查出预警明细(待处理)
@ -80,7 +80,7 @@ public sealed class CompleteWarningHandler : ICompleteWarningHandler, ITransient
// todo:需要处理要求轨迹完整的情况? // todo:需要处理要求轨迹完整的情况?
} }
if (closeDetailIds.Count == 0) ; if (closeDetailIds.Count == 0) return;
// 5.预警信息状态修改为【已关闭】 // 5.预警信息状态修改为【已关闭】
await _warningDetailsEsRepository.BulkCloseCompleteWarningDetailsAsync(new BulkCloseCompleteWarningDetailsVO await _warningDetailsEsRepository.BulkCloseCompleteWarningDetailsAsync(new BulkCloseCompleteWarningDetailsVO
@ -256,14 +256,14 @@ public sealed class CompleteWarningHandler : ICompleteWarningHandler, ITransient
// 1.1之前的配置数量为0,做只新增处理 // 1.1之前的配置数量为0,做只新增处理
if (oldRuleItems.Count == 0) if (oldRuleItems.Count == 0)
{ {
if (addRuleItems.Count != 0) if (addRuleItems.Count > 0)
await OnlyAddHandleAsync(rule, addRuleItems); await OnlyAddHandleAsync(rule, addRuleItems);
return; return;
} }
// 1.2之前的配置数量不为0,提交的数量为0,做只删除处理 // 1.2之前的配置数量不为0,提交的数量为0,做只删除处理
if (oldRuleItems.Count != 0 && postRuleItems.Count == 0) if (oldRuleItems.Count > 0 && postRuleItems.Count == 0)
{ {
await OnlyDeleteHandleAsync(rule, oldRuleItems); await OnlyDeleteHandleAsync(rule, oldRuleItems);
return; return;
@ -334,20 +334,20 @@ public sealed class CompleteWarningHandler : ICompleteWarningHandler, ITransient
{ {
var ruleItemIds = new HashSet<int>(updateRuleItems.Count + deleteRuleItems.Count); var ruleItemIds = new HashSet<int>(updateRuleItems.Count + deleteRuleItems.Count);
// 新增/修改/删除 实体,稍后做处理 // 新增/修改/删除 实体,稍后做处理
if (addRuleItems.Count != 0) if (addRuleItems.Count > 0)
{ {
var addEntities = CompleteWarningRuleItemBO.ToEntities(addRuleItems); var addEntities = CompleteWarningRuleItemBO.ToEntities(addRuleItems);
await _warningRuleRepository.BulkInsertCompleteRuleItemsAsync(addEntities); await _warningRuleRepository.BulkInsertCompleteRuleItemsAsync(addEntities);
} }
if (updateRuleItems.Count != 0) if (updateRuleItems.Count > 0)
{ {
var updateEntities = CompleteWarningRuleItemBO.ToEntities(updateRuleItems); var updateEntities = CompleteWarningRuleItemBO.ToEntities(updateRuleItems);
await _warningRuleRepository.BulkUpdateCompleteRuleItemsAsync(updateEntities); await _warningRuleRepository.BulkUpdateCompleteRuleItemsAsync(updateEntities);
ruleItemIds.UnionWith(updateEntities.Select(x => x.Id)); ruleItemIds.UnionWith(updateEntities.Select(x => x.Id));
} }
if (deleteRuleItems.Count != 0) if (deleteRuleItems.Count > 0)
{ {
var deleteRuleItemIds = deleteRuleItems.Select(x => x.Id).ToHashSet(); var deleteRuleItemIds = deleteRuleItems.Select(x => x.Id).ToHashSet();
await _warningRuleRepository.DeleteCompleteRuleItemsAsync(deleteRuleItemIds); await _warningRuleRepository.DeleteCompleteRuleItemsAsync(deleteRuleItemIds);
@ -363,7 +363,7 @@ public sealed class CompleteWarningHandler : ICompleteWarningHandler, ITransient
await CloseWarningRuleLinkAsync(ruleItemIds); await CloseWarningRuleLinkAsync(ruleItemIds);
} }
private bool CanNeedFollow(CompleteWarningRuleItemBO oldRule, CompleteWarningRuleItemBO postRule) private static bool CanNeedFollow(CompleteWarningRuleItemBO oldRule, CompleteWarningRuleItemBO postRule)
{ {
// 关注的订单类型减少 // 关注的订单类型减少
var oldTypes = oldRule.OrderTypes; var oldTypes = oldRule.OrderTypes;

View File

@ -99,7 +99,7 @@ public sealed class ReturnWarningHandler : IReturnWarningHandler, ITransientDepe
if (rule != null) if (rule != null)
{ {
var ruleItemEntities = await _warningRuleRepository.GetReturnRuleItemsAsync(rule.Id); var ruleItemEntities = await _warningRuleRepository.GetReturnRuleItemsAsync(rule.Id);
if (ruleItemEntities.Count != 0) if (ruleItemEntities.Count > 0)
ruleItem = ruleItemEntities.FirstOrDefault(x => x.CanHitRule(recordFirst.TrackStatusId)); ruleItem = ruleItemEntities.FirstOrDefault(x => x.CanHitRule(recordFirst.TrackStatusId));
} }
@ -232,7 +232,7 @@ public sealed class ReturnWarningHandler : IReturnWarningHandler, ITransientDepe
await _warningDetailsEsRepository.BulkUpdateReturnWarningDetailsAsync(followDetails); await _warningDetailsEsRepository.BulkUpdateReturnWarningDetailsAsync(followDetails);
await _warningDetailsEsRepository.InsertReturnMessageRecordAsync(BuildReturnMessageRecord(followDetails, recordFirst)); await _warningDetailsEsRepository.InsertReturnMessageRecordAsync(BuildReturnMessageRecord(followDetails, recordFirst));
if (addNotifyTasks.Count != 0) if (addNotifyTasks.Count > 0)
await _warningTaskRepository.BulkInsertWarningNotifyTaskAsync(addNotifyTasks); await _warningTaskRepository.BulkInsertWarningNotifyTaskAsync(addNotifyTasks);
@ -263,7 +263,7 @@ public sealed class ReturnWarningHandler : IReturnWarningHandler, ITransientDepe
private (Dictionary<string, Dictionary<string, long>> OrderNoTrackIdVersionDict, Dictionary<string, long> AllTrackIdVersionDict) private (Dictionary<string, Dictionary<string, long>> OrderNoTrackIdVersionDict, Dictionary<string, long> AllTrackIdVersionDict)
ExtractOrderNoTrackIdVersionDict(List<TrackPushInput> pushInputs, List<TrackUpdateInput> updateInputs) ExtractOrderNoTrackIdVersionDict(List<TrackPushInput> pushInputs, List<TrackUpdateInput> updateInputs)
{ {
var inputs = (pushInputs.Count != 0 var inputs = (pushInputs.Count > 0
? pushInputs.Select(x => new ? pushInputs.Select(x => new
{ {
x.OrderNo, x.OrderNo,
@ -490,14 +490,14 @@ public sealed class ReturnWarningHandler : IReturnWarningHandler, ITransientDepe
// 1.1之前的配置数量为0,做只新增处理 // 1.1之前的配置数量为0,做只新增处理
if (oldRuleItems.Count == 0) if (oldRuleItems.Count == 0)
{ {
if (addRuleItems.Count != 0) if (addRuleItems.Count > 0)
await OnlyAddHandleAsync(rule, addRuleItems); await OnlyAddHandleAsync(rule, addRuleItems);
return; return;
} }
// 1.2之前的配置数量不为0,提交的数量为0,做只删除处理 // 1.2之前的配置数量不为0,提交的数量为0,做只删除处理
if (oldRuleItems.Count != 0 && postRuleItems.Count == 0) if (oldRuleItems.Count > 0 && postRuleItems.Count == 0)
{ {
await OnlyDeleteHandleAsync(rule, oldRuleItems); await OnlyDeleteHandleAsync(rule, oldRuleItems);
return; return;
@ -511,7 +511,7 @@ public sealed class ReturnWarningHandler : IReturnWarningHandler, ITransientDepe
// 构建配置id字段 // 构建配置id字段
var oldDict = oldRuleItems.ToDictionary(x => x.Id); var oldDict = oldRuleItems.ToDictionary(x => x.Id);
var postDict = postRuleItems var postDict = postRuleItems
.Where(x => x.Id != 0) //tips:忽略新增的规则条目 .Where(x => x.Id > 0) //tips:忽略新增的规则条目
.ToDictionary(x => x.Id); .ToDictionary(x => x.Id);
var ruleItemIds = oldDict.Keys.Concat(postDict.Keys).ToHashSet(); var ruleItemIds = oldDict.Keys.Concat(postDict.Keys).ToHashSet();
foreach (var ruleItemId in ruleItemIds) foreach (var ruleItemId in ruleItemIds)
@ -563,20 +563,20 @@ public sealed class ReturnWarningHandler : IReturnWarningHandler, ITransientDepe
{ {
var ruleItemIds = new HashSet<int>(updateRuleItems.Count + deleteRuleItems.Count); var ruleItemIds = new HashSet<int>(updateRuleItems.Count + deleteRuleItems.Count);
// 1.新增/修改/删除规则,稍后做处理 // 1.新增/修改/删除规则,稍后做处理
if (addRuleItems.Count != 0) if (addRuleItems.Count > 0)
{ {
var addEntities = ReturnWarningRuleItemBO.ToEntities(addRuleItems); var addEntities = ReturnWarningRuleItemBO.ToEntities(addRuleItems);
await _warningRuleRepository.BulkInsertReturnRuleItemsAsync(addEntities); await _warningRuleRepository.BulkInsertReturnRuleItemsAsync(addEntities);
} }
if (updateRuleItems.Count != 0) if (updateRuleItems.Count > 0)
{ {
var updateEntities = ReturnWarningRuleItemBO.ToEntities(updateRuleItems); var updateEntities = ReturnWarningRuleItemBO.ToEntities(updateRuleItems);
await _warningRuleRepository.BulkUpdateReturnRuleItemsAsync(updateEntities); await _warningRuleRepository.BulkUpdateReturnRuleItemsAsync(updateEntities);
ruleItemIds.UnionWith(updateEntities.Select(x => x.Id)); ruleItemIds.UnionWith(updateEntities.Select(x => x.Id));
} }
if (deleteRuleItems.Count != 0) if (deleteRuleItems.Count > 0)
{ {
var deleteRuleItemIds = deleteRuleItems.Select(x => x.Id).ToHashSet(); var deleteRuleItemIds = deleteRuleItems.Select(x => x.Id).ToHashSet();
await _warningRuleRepository.DeleteReturnRuleItemsAsync(deleteRuleItemIds); await _warningRuleRepository.DeleteReturnRuleItemsAsync(deleteRuleItemIds);

View File

@ -288,7 +288,7 @@ public class TransportWarningHandler : ITransportWarningHandler, ITransientDepen
}); });
// 处理【通知阶段】的预警明细 // 处理【通知阶段】的预警明细
if (warningDetails.Count != 0) if (warningDetails.Count > 0)
{ {
var (needUpdateDetails, needCloseNotifyDetailsIds) = HandleExistsDetails(warningDetails, ruleItemBoDict, trackStatusTrackDict); var (needUpdateDetails, needCloseNotifyDetailsIds) = HandleExistsDetails(warningDetails, ruleItemBoDict, trackStatusTrackDict);
updateDetails.AddRange(needUpdateDetails); updateDetails.AddRange(needUpdateDetails);
@ -309,7 +309,7 @@ public class TransportWarningHandler : ITransportWarningHandler, ITransientDepen
} }
// 4.批量操作 // 4.批量操作
if (closeNotifyDetailsIds.Count != 0) if (closeNotifyDetailsIds.Count > 0)
{ {
await _warningTaskRepository.CloseWarningNotifyTaskAsync(x => await _warningTaskRepository.CloseWarningNotifyTaskAsync(x =>
!x.IsClosed !x.IsClosed
@ -318,11 +318,11 @@ public class TransportWarningHandler : ITransportWarningHandler, ITransientDepen
); );
} }
if (updateDetails.Count != 0) if (updateDetails.Count > 0)
await _warningDetailsEsRepository.BulkUpdateTransportWarningDetailsAsync(updateDetails); await _warningDetailsEsRepository.BulkUpdateTransportWarningDetailsAsync(updateDetails);
if (addDetailGenerateTasks.Count != 0) if (addDetailGenerateTasks.Count > 0)
await _warningTaskRepository.BulkInsertTransportWarningDetailsGenerateTaskAsync(addDetailGenerateTasks); await _warningTaskRepository.BulkInsertTransportWarningDetailsGenerateTaskAsync(addDetailGenerateTasks);
if (updateDetailGenerateTasks.Count != 0) if (updateDetailGenerateTasks.Count > 0)
await _warningTaskRepository.BulkUpdateTransportWarningDetailsGenerateTaskAsync(updateDetailGenerateTasks); await _warningTaskRepository.BulkUpdateTransportWarningDetailsGenerateTaskAsync(updateDetailGenerateTasks);
} }
@ -580,7 +580,7 @@ public class TransportWarningHandler : ITransportWarningHandler, ITransientDepen
// 4.仍然命中场景的订单需要修改明细中的内容(预警名称,预警规则描述) // 4.仍然命中场景的订单需要修改明细中的内容(预警名称,预警规则描述)
var needUpdateDetails = new List<TransportWarningDetailsIndex>(); var needUpdateDetails = new List<TransportWarningDetailsIndex>();
if (reHitSceneOrderIds.Count != 0) if (reHitSceneOrderIds.Count > 0)
{ {
// 明细->规则 // 明细->规则
var updateDetails = warningDetails.Where(x => reHitSceneOrderIds.Contains(x.OrderId)).ToList(); var updateDetails = warningDetails.Where(x => reHitSceneOrderIds.Contains(x.OrderId)).ToList();
@ -689,13 +689,13 @@ public class TransportWarningHandler : ITransportWarningHandler, ITransientDepen
// 1.1之前的配置数量为0,做只新增处理 // 1.1之前的配置数量为0,做只新增处理
if (oldRuleItems.Count == 0) if (oldRuleItems.Count == 0)
{ {
if (addRuleItems.Count != 0) if (addRuleItems.Count > 0)
await OnlyAddHandleAsync(rule, scene, addRuleItems); await OnlyAddHandleAsync(rule, scene, addRuleItems);
return; return;
} }
// 1.2之前的配置数量不为0,提交的数量为0,做只删除处理 // 1.2之前的配置数量不为0,提交的数量为0,做只删除处理
if (oldRuleItems.Count != 0 && postRuleItems.Count == 0) if (oldRuleItems.Count > 0 && postRuleItems.Count == 0)
{ {
await OnlyDeleteHandleAsync(rule, scene, oldRuleItems); await OnlyDeleteHandleAsync(rule, scene, oldRuleItems);
return; return;
@ -737,6 +737,7 @@ public class TransportWarningHandler : ITransportWarningHandler, ITransientDepen
private async Task OnlyAddHandleAsync(WarningRuleEntity rule, TransportWarningSceneBO scene, List<TransportWarningSceneRuleItemBO> bos) private async Task OnlyAddHandleAsync(WarningRuleEntity rule, TransportWarningSceneBO scene, List<TransportWarningSceneRuleItemBO> bos)
{ {
if (bos.Count == 0) return;
var entities = TransportWarningSceneRuleItemBO.ToEntities(bos); var entities = TransportWarningSceneRuleItemBO.ToEntities(bos);
await _warningRuleRepository.BulkInsertTransportSceneRuleItemsAsync(entities); await _warningRuleRepository.BulkInsertTransportSceneRuleItemsAsync(entities);
// 更新规则主体版本号 // 更新规则主体版本号
@ -751,7 +752,7 @@ public class TransportWarningHandler : ITransportWarningHandler, ITransientDepen
// 更新规则主体版本号 // 更新规则主体版本号
await _warningRuleRepository.UpdateVersionAsync(rule); await _warningRuleRepository.UpdateVersionAsync(rule);
// 处理轨迹删除 // 处理规则删除
await HandleDeleteAsync(ruleItemIds); await HandleDeleteAsync(ruleItemIds);
} }