|
@@ -16,6 +16,8 @@ using XF.Domain.Dependency;
|
|
|
using XF.Domain.Exceptions;
|
|
|
using XF.Domain.Repository;
|
|
|
using System.Security.Permissions;
|
|
|
+using MediatR;
|
|
|
+using Hotline.Settings;
|
|
|
|
|
|
namespace Hotline.Application.Subscribers
|
|
|
{
|
|
@@ -42,6 +44,7 @@ namespace Hotline.Application.Subscribers
|
|
|
private readonly IRepository<OrderVisitDetail> _orderVisitedDetailRepository;
|
|
|
private readonly IOrderScreenRepository _orderScreenRepository;
|
|
|
private readonly IRepository<OrderExtension> _orderExtensionRepository;
|
|
|
+ private readonly IRepository<SystemDicData> _systemDicDataRepository;
|
|
|
|
|
|
public DataSharingSubscriber(
|
|
|
IRepository<OrderVisit> orderVisitRepository,
|
|
@@ -60,7 +63,8 @@ namespace Hotline.Application.Subscribers
|
|
|
IRepository<OrderVisitDetail> orderVisitedDetailRepository,
|
|
|
IOrderScreenRepository orderScreenRepository,
|
|
|
IRepository<OrderExtension> orderExtensionRepository,
|
|
|
- IFileRepository fileRepository)
|
|
|
+ IFileRepository fileRepository,
|
|
|
+ IRepository<SystemDicData> systemDicDataRepository)
|
|
|
{
|
|
|
_orderSendBackRepository = orderSendBackRepository;
|
|
|
_workflowApplication = workflowApplication;
|
|
@@ -78,6 +82,7 @@ namespace Hotline.Application.Subscribers
|
|
|
_mapper = mapper;
|
|
|
_capPublisher = capPublisher;
|
|
|
_orderDelayRepository = orderDelayRepository;
|
|
|
+ _systemDicDataRepository = systemDicDataRepository;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -196,6 +201,96 @@ namespace Hotline.Application.Subscribers
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 省下行回访
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <param name="cancellationToken"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [CapSubscribe(Hotline.Share.Mq.EventNames.SharingOrderEvlResult)]
|
|
|
+ public async Task OrderVisitProvince(ProvinceOrderVisitDto dto, CancellationToken cancellationToken)
|
|
|
+ {
|
|
|
+ var orderVisit = await _orderVisitRepository.Queryable()
|
|
|
+ .Includes(x => x.Order)
|
|
|
+ .Includes(x => x.OrderVisitDetails)
|
|
|
+ .Where(x => x.Order.ProvinceNo == dto.ProvinceNo &&
|
|
|
+ x.VisitState != Share.Enums.Order.EVisitState.None).FirstAsync(cancellationToken);
|
|
|
+
|
|
|
+ if (orderVisit != null)
|
|
|
+ {
|
|
|
+ //处理评价结果
|
|
|
+ var processingResult = dto.OrgProcessingResults;
|
|
|
+ Kv orgProcessingResults = null;
|
|
|
+ if (!string.IsNullOrEmpty(processingResult))
|
|
|
+ {
|
|
|
+ var dicData = await _systemDicDataRepository.GetAsync(x => x.DicTypeCode == SysDicTypeConsts.VisitSatisfaction && x.DicDataValue == processingResult, cancellationToken);
|
|
|
+ if (dicData != null)
|
|
|
+ {
|
|
|
+ orgProcessingResults = new Kv();
|
|
|
+ orgProcessingResults.Key = dicData.DicDataValue;
|
|
|
+ orgProcessingResults.Value = dicData.DicDataName;
|
|
|
+ }
|
|
|
+ if (orgProcessingResults != null)
|
|
|
+ {
|
|
|
+ //主表
|
|
|
+ orderVisit.VisitState = Share.Enums.Order.EVisitState.Visited;
|
|
|
+ orderVisit.VisitTime = dto.VisitTime;
|
|
|
+ orderVisit.VisitType = dto.VisitType;
|
|
|
+ orderVisit.IsCanHandle = false;
|
|
|
+ orderVisit.IsCanAiVisit = false;
|
|
|
+ orderVisit.NowEvaluate = orgProcessingResults;
|
|
|
+ await _orderVisitRepository.UpdateAsync(orderVisit, cancellationToken);
|
|
|
+ //子表
|
|
|
+ for (int i = 0; i < orderVisit.OrderVisitDetails.Count; i++)
|
|
|
+ {
|
|
|
+ if (orderVisit.OrderVisitDetails[i].VisitTarget == EVisitTarget.Seat)
|
|
|
+ {
|
|
|
+ orderVisit.OrderVisitDetails[i].VoiceEvaluate = (EVoiceEvaluate)int.Parse(orgProcessingResults.Key);
|
|
|
+ orderVisit.OrderVisitDetails[i].SeatEvaluate = (ESeatEvaluate)int.Parse(orgProcessingResults.Key);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ orderVisit.OrderVisitDetails[i].OrgProcessingResults = orgProcessingResults;
|
|
|
+ }
|
|
|
+ orderVisit.OrderVisitDetails[i].VisitContent = dto.VisitContent;
|
|
|
+ }
|
|
|
+ await _orderVisitedDetailRepository.UpdateRangeAsync(orderVisit.OrderVisitDetails, cancellationToken);
|
|
|
+ //工单
|
|
|
+ orderVisit.Order.Visited(orgProcessingResults.Key, orgProcessingResults.Value);
|
|
|
+ await _orderRepository.UpdateAsync(orderVisit.Order);
|
|
|
+
|
|
|
+ ////处理网站通知差评数据
|
|
|
+ //if (orderVisit.Order.Source == ESource.Hotline && orderVisit.OrderVisitDetails.Any(x => x.OrgHandledAttitude?.Key == "1" || x.OrgHandledAttitude?.Key == "2" || x.OrgProcessingResults?.Key == "1" || x.OrgProcessingResults?.Key == "2"))
|
|
|
+ //{
|
|
|
+ // //包含不满意数据,重新生成新的回访
|
|
|
+ // var newOrderVisit = _mapper.Map<OrderVisit>(orderVisit);
|
|
|
+ // newOrderVisit.InitId();
|
|
|
+ // newOrderVisit.VisitState = EVisitState.NoSatisfiedWaitForVisit;
|
|
|
+ // newOrderVisit.VisitTime = null;
|
|
|
+ // newOrderVisit.IsCanHandle = false;
|
|
|
+ // newOrderVisit.IsCanAiVisit = false;
|
|
|
+ // newOrderVisit.AiVisitCount = 0;
|
|
|
+ // await _orderVisitRepository.AddAsync(newOrderVisit, cancellationToken);
|
|
|
+ // var list = _mapper.Map<List<OrderVisitDetail>>(orderVisit.OrderVisitDetails);
|
|
|
+ // list.ForEach(x =>
|
|
|
+ // {
|
|
|
+ // x.VisitId = newOrderVisit.Id;
|
|
|
+ // x.VoiceEvaluate = null;
|
|
|
+ // x.VoiceEvaluate = null;
|
|
|
+ // x.OrgHandledAttitude = null;
|
|
|
+ // x.OrgNoSatisfiedReason = null;
|
|
|
+ // x.OrgProcessingResults = null;
|
|
|
+ // x.VisitContent = "";
|
|
|
+ // });
|
|
|
+ // await _orderVisitedDetailRepository.AddRangeAsync(list, cancellationToken);
|
|
|
+ //}
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 工单回访
|
|
|
/// </summary>
|
|
@@ -314,17 +409,7 @@ namespace Hotline.Application.Subscribers
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 省下行回访
|
|
|
- /// </summary>
|
|
|
- /// <param name="dto"></param>
|
|
|
- /// <param name="cancellationToken"></param>
|
|
|
- /// <returns></returns>
|
|
|
- [CapSubscribe(Hotline.Share.Mq.EventNames.SharingOrderEvlResult)]
|
|
|
- public async Task OrderVisitProvince(OrderVisitProvinceDto dto,CancellationToken cancellationToken)
|
|
|
- {
|
|
|
-
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
|
|
|
/// <summary>
|