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; - } }