|
@@ -71,6 +71,8 @@ public class OrderDomainService : IOrderDomainService, IScopeDependency
|
|
|
private readonly ISystemLogRepository _systemLogRepository;
|
|
|
private readonly IOrderSnapshotRepository _orderSnapshotRepository;
|
|
|
private readonly ICalcExpireTime _expireTime;
|
|
|
+ private readonly ICallDomainService _callDomainService;
|
|
|
+ private readonly IOrderVisitDomainService _orderVisitDomainService;
|
|
|
|
|
|
public OrderDomainService(
|
|
|
IOrderRepository orderRepository,
|
|
@@ -98,7 +100,9 @@ public class OrderDomainService : IOrderDomainService, IScopeDependency
|
|
|
ISystemLogRepository systemLogRepository,
|
|
|
IOptionsSnapshot<AppConfiguration> appOptions,
|
|
|
IOrderSnapshotRepository orderSnapshotRepository,
|
|
|
- ICalcExpireTime expireTime)
|
|
|
+ ICalcExpireTime expireTime,
|
|
|
+ ICallDomainService callDomainService,
|
|
|
+ IOrderVisitDomainService orderVisitDomainService)
|
|
|
{
|
|
|
_orderRepository = orderRepository;
|
|
|
_orderRedoRepository = orderRedoRepository;
|
|
@@ -125,7 +129,8 @@ public class OrderDomainService : IOrderDomainService, IScopeDependency
|
|
|
_appOptions = appOptions;
|
|
|
_orderSnapshotRepository = orderSnapshotRepository;
|
|
|
_expireTime = expireTime;
|
|
|
-
|
|
|
+ _callDomainService = callDomainService;
|
|
|
+ _orderVisitDomainService = orderVisitDomainService;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -236,64 +241,81 @@ public class OrderDomainService : IOrderDomainService, IScopeDependency
|
|
|
orderVisit.EmployeeId = _sessionContext.RequiredUserId;
|
|
|
}
|
|
|
|
|
|
+ var isReturn = false;
|
|
|
if (_appOptions.Value.IsZiGong)
|
|
|
{
|
|
|
orderVisit.EmployeeId = string.Empty;
|
|
|
+
|
|
|
+ //自贡任务 348 语音评价不满意的工单需回访
|
|
|
+ var callNative = await GetReplyVoiceOrDefaultByOrderIdAsync(orderVisit.OrderId);
|
|
|
+ if (callNative == EVoiceEvaluate.NoSatisfied || callNative == EVoiceEvaluate.VeryNoSatisfied)
|
|
|
+ isReturn = true;
|
|
|
}
|
|
|
|
|
|
- if (order is { FileOrgIsCenter: true, CounterSignType: null } && !order.IsProvince)
|
|
|
+ if (isReturn == false)
|
|
|
{
|
|
|
- orderVisit.VisitState = EVisitState.Visited;
|
|
|
- orderVisit.VisitTime = DateTime.Now;
|
|
|
- orderVisit.VisitType = EVisitType.OtherVisit;
|
|
|
- orderVisit.NowEvaluate = new Kv() { Key = "4", Value = "满意" };
|
|
|
- if (_appOptions.Value.IsZiGong)
|
|
|
+ if (order is { FileOrgIsCenter: true, CounterSignType: null } && !order.IsProvince)
|
|
|
{
|
|
|
- // 根据禅道 自贡需求 Id_361, 第一条, 3小条需求;
|
|
|
- // 直办件归档后自动回访量需统计在“胡玲”的默认回访量中;
|
|
|
- orderVisit.EmployeeId = _systemSettingCacheManager.DefaultVisitEmployeeId;
|
|
|
+ orderVisit.VisitState = EVisitState.Visited;
|
|
|
+ orderVisit.VisitTime = DateTime.Now;
|
|
|
+ orderVisit.VisitType = EVisitType.OtherVisit;
|
|
|
+ orderVisit.NowEvaluate = new Kv() { Key = "4", Value = "满意" };
|
|
|
+ if (_appOptions.Value.IsZiGong)
|
|
|
+ {
|
|
|
+ // 根据禅道 自贡需求 Id_361, 第一条, 3小条需求;
|
|
|
+ // 直办件归档后自动回访量需统计在“胡玲”的默认回访量中;
|
|
|
+ orderVisit.EmployeeId = _systemSettingCacheManager.DefaultVisitEmployeeId;
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- if (order.CounterSignType != ECounterSignType.Center)
|
|
|
- {
|
|
|
- orderVisit.IsCanAiVisit = true;
|
|
|
+ if (order.CounterSignType != ECounterSignType.Center)
|
|
|
+ {
|
|
|
+ orderVisit.IsCanAiVisit = true;
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
string visitId = await _orderVisitRepository.AddAsync(orderVisit);
|
|
|
|
|
|
//新增回访信息
|
|
|
var visitedDetail = new List<OrderVisitDetail>();
|
|
|
|
|
|
- var seatDetail = new OrderVisitDetail();
|
|
|
- seatDetail.VisitId = visitId;
|
|
|
- seatDetail.VisitTarget = EVisitTarget.Seat;
|
|
|
-
|
|
|
-
|
|
|
- var orgDetail = new OrderVisitDetail();
|
|
|
- orgDetail.VisitId = visitId;
|
|
|
- orgDetail.VisitOrgCode = order.ActualHandleOrgCode;
|
|
|
- orgDetail.VisitOrgName = order.ActualHandleOrgName;
|
|
|
- orgDetail.VisitTarget = EVisitTarget.Org;
|
|
|
- if (order is { FileOrgIsCenter: true, CounterSignType: null, IsProvince: false })
|
|
|
+ //坐席回访明细
|
|
|
+ var seatDetail = new OrderVisitDetail
|
|
|
{
|
|
|
- var satisfy = new Kv() { Key = "4", Value = "满意" };
|
|
|
- orgDetail.OrgProcessingResults = satisfy;
|
|
|
- //orgDetail.OrgHandledAttitude = satisfy;
|
|
|
- }
|
|
|
+ VisitId = visitId,
|
|
|
+ VisitTarget = EVisitTarget.Seat
|
|
|
+ };
|
|
|
|
|
|
- visitedDetail.Add(orgDetail);
|
|
|
+ //部门回访明细
|
|
|
+ var orgDetail = new OrderVisitDetail
|
|
|
+ {
|
|
|
+ VisitId = visitId,
|
|
|
+ VisitOrgCode = order.ActualHandleOrgCode,
|
|
|
+ VisitOrgName = order.ActualHandleOrgName,
|
|
|
+ VisitTarget = EVisitTarget.Org
|
|
|
+ };
|
|
|
|
|
|
- if (order is { FileOrgIsCenter: true, CounterSignType: null })
|
|
|
+ if (isReturn == false)
|
|
|
{
|
|
|
- seatDetail.VoiceEvaluate = EVoiceEvaluate.Satisfied;
|
|
|
- seatDetail.SeatEvaluate = ESeatEvaluate.Satisfied;
|
|
|
- order.Visited("4", "满意");
|
|
|
- order.Status = EOrderStatus.Visited;
|
|
|
- await _orderRepository.UpdateAsync(order, cancellationToken);
|
|
|
+ if (order is { FileOrgIsCenter: true, CounterSignType: null, IsProvince: false })
|
|
|
+ {
|
|
|
+ var satisfy = new Kv() { Key = "4", Value = "满意" };
|
|
|
+ orgDetail.OrgProcessingResults = satisfy;
|
|
|
+ //orgDetail.OrgHandledAttitude = satisfy;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (order is { FileOrgIsCenter: true, CounterSignType: null })
|
|
|
+ {
|
|
|
+ seatDetail.VoiceEvaluate = EVoiceEvaluate.Satisfied;
|
|
|
+ seatDetail.SeatEvaluate = ESeatEvaluate.Satisfied;
|
|
|
+ order.Visited("4", "满意");
|
|
|
+ order.Status = EOrderStatus.Visited;
|
|
|
+ await _orderRepository.UpdateAsync(order, cancellationToken);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
+ visitedDetail.Add(orgDetail);
|
|
|
visitedDetail.Add(seatDetail);
|
|
|
+
|
|
|
await _orderVisitDetailRepository.AddRangeAsync(visitedDetail, cancellationToken);
|
|
|
await _publisher.PublishAsync(new ContingencyManagementNotify(order, order.Title, order.Content, order.ActualOpinion),
|
|
|
PublishStrategy.ParallelWhenAll, cancellationToken);
|
|
@@ -934,7 +956,28 @@ public class OrderDomainService : IOrderDomainService, IScopeDependency
|
|
|
return $"{today:yyyyMMdd}{count:000000}";
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 根据 OrderId 返回用户电话评价枚举
|
|
|
+ /// 默认返回 默认满意
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="orderId"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ private async Task<EVoiceEvaluate> GetReplyVoiceOrDefaultByOrderIdAsync(string orderId)
|
|
|
+ {
|
|
|
+ var callNative = await _callDomainService.GetByOrderIdAsync(orderId);
|
|
|
+ if (callNative is null || callNative.ReplyTxt.IsNullOrEmpty())
|
|
|
+ return EVoiceEvaluate.DefaultSatisfied;
|
|
|
|
|
|
+ try
|
|
|
+ {
|
|
|
+ var smsReply = _orderVisitDomainService.GetVisitEvaluateByReplyTxt(callNative.ReplyTxt!.Trim());
|
|
|
+ return smsReply!.VoiceEvaluate!.Value;
|
|
|
+ }
|
|
|
+ catch (UserFriendlyException)
|
|
|
+ {
|
|
|
+ return EVoiceEvaluate.DefaultSatisfied;
|
|
|
+ }
|
|
|
+ }
|
|
|
#endregion
|
|
|
}
|
|
|
|