clean:清理回传预警处理单条记录回调,清理回传预警明细不必要的方法

This commit is contained in:
hardstylewyl 2025-05-06 15:49:55 +08:00
parent cab1e9a60d
commit be25b8e10d
2 changed files with 1 additions and 179 deletions

View File

@ -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<int, HashSet<int>>(1)
// {
// {
// record.OrderId, new HashSet<int>(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<int, HashSet<int>>(1)
// {
// {
// record.OrderId, new HashSet<int>(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
}

View File

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