refactor:重构优化消除警告
This commit is contained in:
parent
b93386d19c
commit
d2dd8e6eb1
@ -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();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user