From be25b8e10d63aec3d0b2d88ea06fa3c3ce53c0c2 Mon Sep 17 00:00:00 2001 From: hardstylewyl <827778732@qq.com> Date: Tue, 6 May 2025 15:49:55 +0800 Subject: [PATCH 1/3] =?UTF-8?q?clean:=E6=B8=85=E7=90=86=E5=9B=9E=E4=BC=A0?= =?UTF-8?q?=E9=A2=84=E8=AD=A6=E5=A4=84=E7=90=86=E5=8D=95=E6=9D=A1=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E5=9B=9E=E8=B0=83=EF=BC=8C=E6=B8=85=E7=90=86=E5=9B=9E?= =?UTF-8?q?=E4=BC=A0=E9=A2=84=E8=AD=A6=E6=98=8E=E7=BB=86=E4=B8=8D=E5=BF=85?= =?UTF-8?q?=E8=A6=81=E7=9A=84=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Warning/Handlers/ReturnWarningHandler.cs | 155 ------------------ .../Return/ReturnWarningDetailsIndex.cs | 25 +-- 2 files changed, 1 insertion(+), 179 deletions(-) diff --git a/src/SJZY.Track.Application/Services/Warning/Handlers/ReturnWarningHandler.cs b/src/SJZY.Track.Application/Services/Warning/Handlers/ReturnWarningHandler.cs index bc9486d1..53a88be9 100644 --- a/src/SJZY.Track.Application/Services/Warning/Handlers/ReturnWarningHandler.cs +++ b/src/SJZY.Track.Application/Services/Warning/Handlers/ReturnWarningHandler.cs @@ -652,159 +652,4 @@ public sealed class ReturnWarningHandler : IReturnWarningHandler, ITransientDepe && x.WarningType == WarningRuleType.回传时效预警.GetHashCode() ); } - - - #region 弃用,收到轨迹推送记录(接口通回调,只考虑了单条) - - // public async Task ReceiveTrackPushRecordHandleAsync(TrackPushRecordIndex record) - // { - // if (!record.IsSuccess) - // { - // await HandleReceivedFailed(record); - // return; - // } - // - // // 1.获取预警机明细 - // var warningDetails = await _warningDetailsEsRepository.GetReturnWarningDetailsAsync(new GetReturnWarningDetailsVO - // { - // OrderIdTrackContentIdsDict = new Dictionary>(1) - // { - // { - // record.OrderId, new HashSet(1) - // { - // record.TrackContentId - // } - // } - // } - // }); - // - // // 匹配预警明细,如果有比较字段则使用比较字段,否则使用时间 - // warningDetails = string.IsNullOrWhiteSpace(record.CompareFields) - // ? warningDetails.Where(x => x.MatchTrackTime(record.TrackTime, record.TrackTimeZone)).ToList() - // : warningDetails.Where(x => x.MatchExtra(record.CompareFields, record.Extra)).ToList(); - // - // if (warningDetails.Count == 0) - // return; - // - // var detail = warningDetails.First(); - // // 2.移除(关闭)预警通知任务 - // await _warningTaskRepository.CloseWarningNotifyTaskAsync(x => - // !x.IsClosed - // && x.WarningDetailsId == detail.Id - // && x.WarningType == WarningRuleType.回传时效预警.GetHashCode()); - // - // // 3.修改预警明细状态为【推送完成】,补充回传时间 - // detail.Status = ReturnWarningStatus.推送完成.GetHashCode(); - // detail.TrackReturnTime = DateTime.Now; - // await _warningDetailsEsRepository.UpdateReturnWarningDetailsAsync(detail); - // } - // - // private async Task HandleReceivedFailed(TrackPushRecordIndex record) - // { - // // 1.查找订单(完结订单也得考虑) - // var order = await _orderRepository.GetFirstAsync(x => - // x.Id == record.OrderId - // ); - // - // if (order == null) return; - // - // // 2.匹配规则项目(至多只有一个) - // ReturnWarningRuleItemEntity? ruleItem = null; - // var rule = await _warningRuleRepository.GetWarningRuleForEnabledAsync(order.SubSystemId, order.CustomId, WarningRuleType.回传时效预警); - // if (rule != null) - // { - // var ruleItemEntities = await _warningRuleRepository.GetReturnRuleItemsAsync(rule.Id); - // if (ruleItemEntities.Count != 0) - // ruleItem = ruleItemEntities.FirstOrDefault(x => x.CanHitRule(record.TrackStatusId)); - // } - // - // // 3.查询订单+轨迹 关联的推送映射配置(tips:一定存在,如果不存在则推送都进行不了) - // var pushConfigs = await _trackPushCacheService.GetPushContentConfigsAsync(order.SubSystemId, order.CustomId); - // var pushContentConfig = pushConfigs?.FirstOrDefault(x => x.TrackContentId == record.TrackContentId); - // if (pushContentConfig == null) return; - // - // // 4.获取/创建回传预警明细 - // var warningDetails = await _warningDetailsEsRepository.GetReturnWarningDetailsAsync(new GetReturnWarningDetailsVO - // { - // OrderIdTrackContentIdsDict = new Dictionary>(1) - // { - // { - // record.OrderId, new HashSet(1) - // { - // record.TrackContentId - // } - // } - // } - // }); - // - // // 匹配预警明细,如果有比较字段则使用比较字段,否则使用时间 - // warningDetails = string.IsNullOrWhiteSpace(record.CompareFields) - // ? warningDetails.Where(x => x.MatchTrackTime(record.TrackTime, record.TrackTimeZone)).ToList() - // : warningDetails.Where(x => x.MatchExtra(record.CompareFields, record.Extra)).ToList(); - // - // // 一个预警明细都没有?则需要创建 - // var isCreate = warningDetails.Count == 0; - // var detail = warningDetails.FirstOrDefault(BuildReturnWarningDetails(rule?.Version, ruleItem, order, record, pushContentConfig)); - // - // // 5.第一次回传失败,创建【预警明细】和添加【回传报文记录】,添加一次性【回传重试任务】 - // if (isCreate) - // { - // await _warningDetailsEsRepository.InsertReturnWarningDetailsAsync(detail); - // await _warningDetailsEsRepository.InsertReturnMessageRecordAsync(BuildReturnMessageRecord(detail.Id, record)); - // await _warningTaskRepository.AddReturnWarningRetryPushTaskAsync(BuildRetryPushTask(record, detail)); - // return; - // } - // - // // 6.重试次数小于X次,添加【回传报文记录】,添加一次性【回传重试任务】继续重试 (todo:重试次数动态配置) - // if (detail.RetryCount < 3) - // { - // await _warningDetailsEsRepository.InsertReturnMessageRecordAsync(BuildReturnMessageRecord(detail.Id, record)); - // await _warningTaskRepository.AddReturnWarningRetryPushTaskAsync(BuildRetryPushTask(record, detail)); - // return; - // } - // - // // 7.重试大于等于X次,并且仍处于重试状态的预警和明细 - // if (detail.Status == ReturnWarningStatus.重试中.GetHashCode()) - // { - // detail.Status = detail.IsExistsKpi - // ? ReturnWarningStatus.人工介入.GetHashCode() - // : ReturnWarningStatus.已关闭.GetHashCode(); - // } - // - // // 8.更新预警明细,添加回传报文记录 - // await _warningDetailsEsRepository.UpdateReturnWarningDetailsAsync(detail); - // await _warningDetailsEsRepository.InsertReturnMessageRecordAsync(BuildReturnMessageRecord(detail.Id, record)); - // - // // 9.存在kpi考核则添加预警通知任务 - // if (detail.IsExistsKpi) - // await _warningTaskRepository.AddWarningNotifyTaskAsync(BuildWarningNotifyTask(detail)); - // } - // - // private static ReturnWarningRetryPushTaskEntity BuildRetryPushTask(TrackPushRecordIndex record, ReturnWarningDetailsIndex detail) - // { - // return new ReturnWarningRetryPushTaskEntity - // { - // Id = 0, - // OrderIds = detail.OrderId.ToString(), - // WarningDetailIds = detail.Id, - // OptionType = record.OptionType, - // SubSystemCode = record.SubSystemCode, - // ServiceProviderCode = record.ServiceProviderCode, - // RequestParams = record.PushContent, //这次推送的请求体json,根据OptionType来确定是TrackPushInput/TrackUpdateInput - // - // CreateTime = DateTime.Now, - // }; - // } - // private static ReturnMessageRecordIndex BuildReturnMessageRecord(string detailId, TrackPushRecordIndex record) - // { - // return new ReturnMessageRecordIndex - // { - // WarningDetailsIds = detailId, - // IsSuccess = record.IsSuccess, - // Message = record.Message, - // CreateTime = DateTime.Now - // }; - // } - - #endregion } diff --git a/src/SJZY.Track.Domain/Aggregates/WarningAggregate/Return/ReturnWarningDetailsIndex.cs b/src/SJZY.Track.Domain/Aggregates/WarningAggregate/Return/ReturnWarningDetailsIndex.cs index 2c1029f7..90ba2f81 100644 --- a/src/SJZY.Track.Domain/Aggregates/WarningAggregate/Return/ReturnWarningDetailsIndex.cs +++ b/src/SJZY.Track.Domain/Aggregates/WarningAggregate/Return/ReturnWarningDetailsIndex.cs @@ -80,34 +80,11 @@ public class ReturnWarningDetailsIndex : IdBaseIndex SystemReturnTimeSpan = (long?) (TrackReturnTime.Value - TrackCreateTime).TotalMilliseconds; } + // 是否超时 public bool HasTimeout() { if (ActualReturnTimeSpan.HasValue && ReturnTimeSpan.HasValue) return TimeSpan.FromMilliseconds(ActualReturnTimeSpan.Value) > TimeSpan.FromHours(ReturnTimeSpan.Value); return false; } - - // 匹配比较字段,todo:考虑直接使用TrackEsId来匹配 - public bool MatchExtra(string? compareFields, string? extra) - { - // 匹配字段为空,明细明细字段为空 - if (string.IsNullOrWhiteSpace(compareFields)) - return string.IsNullOrWhiteSpace(CompareFields); - - if (string.IsNullOrWhiteSpace(CompareFields)) - return false; - - if (!string.Equals(CompareFields, compareFields)) //todo:当比较字段存放到轨迹明细中,后面修改了比较字段后会发生什么? - return false; - - if (string.IsNullOrEmpty(extra) || string.IsNullOrEmpty(Extra)) - return false; - - return TextJsonHelper.EqJsonStringField(extra, Extra, compareFields); - } - - public bool MatchTrackTime(DateTime trackTime, float trackTimeZone) - { - return TrackTime == trackTime && Math.Abs(TrackTimeZone - trackTimeZone) < 0.01f; - } } From c163a3bcc7067771a1280c3258f01984cef670e8 Mon Sep 17 00:00:00 2001 From: hardstylewyl <827778732@qq.com> Date: Tue, 6 May 2025 15:50:05 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E5=9B=A0=E4=BD=BF?= =?UTF-8?q?=E7=94=A8Task.Run=E4=B8=A2=E5=A4=B1=E7=9A=84=E9=A2=84=E8=AD=A6?= =?UTF-8?q?=E5=A4=84=E7=90=86=E5=BC=82=E5=B8=B8=E4=B8=8A=E6=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TrackChangeAfterUpdateOrderEventHandler.cs | 4 ++++ .../CAP/EventHandlers/TrackDeleteEventHandler.cs | 4 ++++ .../CAP/EventHandlers/TrackUpsertEventHandler.cs | 8 ++++++++ .../Services/ProvideServices/OrderService.cs | 5 +++++ .../Services/TrackOrders/TrackOrderService.cs | 5 +++++ .../Services/TrackPush/TrackPushService.cs | 6 +++++- 6 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackChangeAfterUpdateOrderEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackChangeAfterUpdateOrderEventHandler.cs index ac87654b..050bc057 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackChangeAfterUpdateOrderEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackChangeAfterUpdateOrderEventHandler.cs @@ -129,6 +129,10 @@ public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICa var handler = scope.ServiceProvider.GetRequiredService(); await handler.HandleOrderDeletedOrCompletedAsync(order); } + catch (Exception ex) + { + LogHelper.Error(ex); + } finally { scope.Dispose(); diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs index 83c5bf61..d07a72d4 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs @@ -383,6 +383,10 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe await handler2.TrackDeletedHandleAsync(signals); await handler3.TrackUpdatedOrDeletedHandleAsync(signals); } + catch (Exception ex) + { + LogHelper.Error(ex); + } finally { await scope.DisposeAsync(); diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs index 0ee94b21..1892b3c2 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs @@ -525,6 +525,10 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe await handler.TrackAddedHandleAsync(signals); await handler2.TrackAddedOrUpdatedHandleAsync(signals); } + catch (Exception ex) + { + LogHelper.Error(ex); + } finally { await scope.DisposeAsync(); @@ -549,6 +553,10 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe await handler.TrackAddedOrUpdatedHandleAsync(signals); await handler2.TrackUpdatedOrDeletedHandleAsync(signals); } + catch (Exception ex) + { + LogHelper.Error(ex); + } finally { await scope.DisposeAsync(); diff --git a/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs b/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs index 5c2f4da7..6634f8d4 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs @@ -1,4 +1,5 @@ using DotNetCore.CAP; +using SJZY.Expand.ABP.Core.Logger; using SJZY.Expand.ABP.Core.PublicMethords; using SJZY.Track.Application.Contract.Dtos.ProvideServices; using SJZY.Track.Application.Contract.Services.ProvideServices; @@ -206,6 +207,10 @@ public partial class OrderService : ApplicationService, IOrderService var handler = scope.ServiceProvider.GetRequiredService(); await handler.HandleOrderDeletedOrCompletedAsync(order); } + catch (Exception ex) + { + LogHelper.Error(ex); + } finally { await scope.DisposeAsync(); diff --git a/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs b/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs index 86a44c4b..2c1c5f59 100644 --- a/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs +++ b/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs @@ -1,4 +1,5 @@ using System.Linq.Expressions; +using SJZY.Expand.ABP.Core.Logger; using SJZY.Expand.AliyunOSS; using SJZY.Track.Application.Contract.Dtos.ProvideServices; using SJZY.Track.Application.Contract.Dtos.TrackOrder; @@ -365,6 +366,10 @@ public class TrackOrderService : ApplicationService var handler = scope.ServiceProvider.GetRequiredService(); await handler.HandleOrderDeletedOrCompletedAsync(order); } + catch (Exception ex) + { + LogHelper.Error(ex); + } finally { await scope.DisposeAsync(); diff --git a/src/SJZY.Track.Application/Services/TrackPush/TrackPushService.cs b/src/SJZY.Track.Application/Services/TrackPush/TrackPushService.cs index 792e156a..8bb19fca 100644 --- a/src/SJZY.Track.Application/Services/TrackPush/TrackPushService.cs +++ b/src/SJZY.Track.Application/Services/TrackPush/TrackPushService.cs @@ -1,6 +1,7 @@ using System.Linq.Expressions; using Microsoft.Extensions.Localization; using SJZY.Expand.ABP.Core.Localization; +using SJZY.Expand.ABP.Core.Logger; using SJZY.Expand.ABP.Core.PublicMethords; using SJZY.Track.Application.Contract.Dtos.TrackPush; using SJZY.Track.Application.Contract.Services; @@ -8,7 +9,6 @@ using SJZY.Track.Application.Localization; using SJZY.Track.Application.Services.Warning.Handlers; using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Aggregates.TrackPushAggregate; -using SJZY.Track.Domain.Aggregates.WarningAggregate.Signals; using SJZY.Track.Domain.Dtos.Common; using SJZY.Track.Domain.Dtos.TrackPush; using Volo.Abp.DependencyInjection; @@ -331,6 +331,10 @@ public class TrackPushService : ApplicationService, ISingletonDependency var handler = scope.ServiceProvider.GetRequiredService(); await handler.PushConfigChangedHandleAsync(pushConfig, contentConfigEntity); } + catch (Exception ex) + { + LogHelper.Error(ex); + } finally { scope.Dispose(); From d0c1ee8bc57aa184f33ea3e06dd0ce20fdf52439 Mon Sep 17 00:00:00 2001 From: hardstylewyl <827778732@qq.com> Date: Wed, 7 May 2025 09:51:02 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E8=BD=A8=E8=BF=B9=E6=8E=A8=E9=80=81=E9=85=8D=E7=BD=AE=E5=90=8E?= =?UTF-8?q?=E5=BC=95=E5=8F=91=E7=9A=84=E9=A2=84=E8=AD=A6=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E5=A4=84=E4=BA=8E=E4=BA=8B=E5=8A=A1=E4=B9=8B?= =?UTF-8?q?=E5=90=8E=E8=BF=9B=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Broadcasting/BroadcastingService.cs | 2 +- .../Services/TrackPush/TrackPushService.cs | 19 ++++++++++++------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/SJZY.Track.Application/Services/Broadcasting/BroadcastingService.cs b/src/SJZY.Track.Application/Services/Broadcasting/BroadcastingService.cs index 0b772567..7af7e83b 100644 --- a/src/SJZY.Track.Application/Services/Broadcasting/BroadcastingService.cs +++ b/src/SJZY.Track.Application/Services/Broadcasting/BroadcastingService.cs @@ -90,7 +90,7 @@ public class BroadcastingService : IBroadcastingService OperationMan = log.OperationMan, PushTime = log.PushTime, OptionType = log.OptionType, - IsManualPush = log.IsManualPush, //操作人不为系统用户,则认为是仍推送 + IsManualPush = log.IsManualPush, //操作人不为系统用户,则认为是人推送 PushContent = log.PushContent, OrderNo = log.OrderNo, TrackStatus = log.TrackStatus, diff --git a/src/SJZY.Track.Application/Services/TrackPush/TrackPushService.cs b/src/SJZY.Track.Application/Services/TrackPush/TrackPushService.cs index 8bb19fca..646da5e2 100644 --- a/src/SJZY.Track.Application/Services/TrackPush/TrackPushService.cs +++ b/src/SJZY.Track.Application/Services/TrackPush/TrackPushService.cs @@ -270,10 +270,11 @@ public class TrackPushService : ApplicationService, ISingletonDependency await _trackPushCacheService.SetPushContentConfigsAsync(pushConfig.SubSystemId, pushConfig.CustomId); } - // 引发预警计算 - await WarningCalc_PushContentConfigChanged(pushConfig, oldContentConfig, postContentConfig); ts.Complete(); + // 引发预警计算 + WarningCalc_PushContentConfigChanged(pushConfig, oldContentConfig, postContentConfig); + return true; } @@ -285,7 +286,7 @@ public class TrackPushService : ApplicationService, ISingletonDependency [HttpPost("SortContent")] public async Task SortContentAsync([FromBody] SortTrackPushContentInput input) { - List ids = input.SortInfo.Select(x => int.Parse(x.Key)).ToList(); + var ids = input.SortInfo.Select(x => int.Parse(x.Key)).ToList(); var trackPushContentEntities = await _trackPushConfigRepository.GetContentListAsync(x => ids.Contains(x.Id)); @@ -297,9 +298,13 @@ public class TrackPushService : ApplicationService, ISingletonDependency await _trackPushConfigRepository.UpdateContentRangeAsync(trackPushContentEntities); - var pushConfig = - await _trackPushConfigRepository.GetFirstAsync(x => - x.Id == trackPushContentEntities[0].TrackPushConfigId); + var pushConfig = await _trackPushConfigRepository.GetFirstAsync( + x => x.Id == trackPushContentEntities[0].TrackPushConfigId, + y => new + { + y.SubSystemId, + y.CustomId + }); if (pushConfig != null) { await _trackPushCacheService.SetPushContentConfigsAsync(pushConfig.SubSystemId, pushConfig.CustomId); @@ -312,7 +317,7 @@ public class TrackPushService : ApplicationService, ISingletonDependency } - private async Task WarningCalc_PushContentConfigChanged(TrackPushConfigEntity? pushConfig, TrackPushContentConfigEntity? oldContentConfig, TrackPushContentConfigEntity? postContentConfig) + private void WarningCalc_PushContentConfigChanged(TrackPushConfigEntity? pushConfig, TrackPushContentConfigEntity? oldContentConfig, TrackPushContentConfigEntity? postContentConfig) { // 推送配置主体不存在? if (pushConfig == null) return;