Browse Source

aiordervisit

Dun.Jason 11 months ago
parent
commit
9a4f9a0088
2 changed files with 143 additions and 143 deletions
  1. 141 143
      src/Hotline.Api/Controllers/AiController.cs
  2. 2 0
      src/Hotline/Orders/OrderVisit.cs

+ 141 - 143
src/Hotline.Api/Controllers/AiController.cs

@@ -125,179 +125,177 @@ namespace Hotline.Api.Controllers
                     var aiOrderVisitDetail = aiOrderVisit.AiOrderVisitDetails.FirstOrDefault(x => x.TaskUid == dto.TaskUid);
                     var aiOrderVisitDetail = aiOrderVisit.AiOrderVisitDetails.FirstOrDefault(x => x.TaskUid == dto.TaskUid);
                     if (aiOrderVisitDetail != null)
                     if (aiOrderVisitDetail != null)
                     {
                     {
-                        var list = dto.CallRecordList.OrderBy(x => x.CallStartTime);
+                        var callRecord = dto.CallRecordList.OrderBy(x => x.CallStartTime).LastOrDefault();
                         // 回访结果(ReturnVisit)[1成功、0不涉及、-1失败]
                         // 回访结果(ReturnVisit)[1成功、0不涉及、-1失败]
-                        foreach (var callRecord in list)
+                       
+                        if (callRecord != null) //有结果的任务
                         {
                         {
-                            if (callRecord != null) //有结果的任务
+                            aiOrderVisitDetail.AiOrderVisitState = Share.Enums.Ai.EAiOrderVisitState.Ended; //更新AI子表
+                            aiOrderVisitDetail.AiVisitTime = DateTime.Now;
+                            aiOrderVisit.VisitedCount++;
+                            //处理结果
+                            var visitDetail = _orderVisitDetailRepository.Queryable().Where(x => x.VisitId == aiOrderVisitDetail.OrderVisit.Id);
+                            //先处理子表
+
+                            //处理部门
+                            var orgDetail = visitDetail.Where(x => x.VisitTarget == Share.Enums.Order.EVisitTarget.Org).ToList();
+                            //过滤结果
+                            var orgProcessingResults = new Kv();
+                            var orgHandledAttitude = new Kv();
+                            ESeatEvaluate? seatEvaluate = null;
+                            var visitContent = "";
+                            var seatVisitContent = "";
+                            var volveConent = "";
+                            foreach (var item in callRecord.QuestionnaireResult)
                             {
                             {
-                                aiOrderVisitDetail.AiOrderVisitState = Share.Enums.Ai.EAiOrderVisitState.Ended; //更新AI子表
-                                aiOrderVisitDetail.AiVisitTime = DateTime.Now;
-                                aiOrderVisit.VisitedCount++;
-                                //处理结果
-                                var visitDetail = _orderVisitDetailRepository.Queryable().Where(x => x.VisitId == aiOrderVisitDetail.OrderVisit.Id);
-                                //先处理子表
-
-                                //处理部门
-                                var orgDetail = visitDetail.Where(x => x.VisitTarget == Share.Enums.Order.EVisitTarget.Org).ToList();
-                                //过滤结果
-                                var orgProcessingResults = new Kv();
-                                var orgHandledAttitude = new Kv();
-                                ESeatEvaluate? seatEvaluate = null;
-                                var visitContent = "";
-                                var seatVisitContent = "";
-                                var volveConent = "";
-                                foreach (var item in callRecord.QuestionnaireResult)
+                                ////服务过程满意度
+                                //if (item.QuestionId == _options.Value.QuestionIdOne)
+                                //{
+                                //    if (item.QuestionResult == "满意")
+                                //    {
+                                //        orgHandledAttitude = new Kv() { Key="4", Value="满意" };
+                                //    }
+                                //    else
+                                //    {
+                                //        orgHandledAttitude = new Kv() { Key = "2", Value = "不满意" };
+
+                                //    }
+                                //}
+                                //通话录音
+
+                                //是否解决
+                                if (item.QuestionId == _options.Value.QuestionIdOne)
                                 {
                                 {
-                                    ////服务过程满意度
-                                    //if (item.QuestionId == _options.Value.QuestionIdOne)
-                                    //{
-                                    //    if (item.QuestionResult == "满意")
-                                    //    {
-                                    //        orgHandledAttitude = new Kv() { Key="4", Value="满意" };
-                                    //    }
-                                    //    else
-                                    //    {
-                                    //        orgHandledAttitude = new Kv() { Key = "2", Value = "不满意" };
-
-                                    //    }
-                                    //}
-                                    //通话录音
-
-                                    //是否解决
-                                    if (item.QuestionId == _options.Value.QuestionIdOne)
+                                    if (item.QuestionResult == "")
                                     {
                                     {
-                                        if (item.QuestionResult == "")
-                                        {
-
-                                        }
-                                        else
-                                        {
-                                            volveConent = callRecord.SceneVariable[_options.Value.VisitContentIdThree];
-                                        }
+
                                     }
                                     }
-                                    //办件结果满意度
-                                    if (item.QuestionId == _options.Value.QuestionIdTwo)
+                                    else
                                     {
                                     {
-                                        if (item.QuestionResult == "满意")
-                                        {
-                                            orgProcessingResults = new Kv() { Key = "4", Value = "满意" };
-                                        }
-                                        else
-                                        {
-                                            orgProcessingResults = new Kv() { Key = "2", Value = "不满意" };
-                                            visitContent = callRecord.SceneVariable[_options.Value.VisitContentIdOne];
-                                        }
+                                        volveConent = callRecord.SceneVariable[_options.Value.VisitContentIdThree];
                                     }
                                     }
-                                    else
+                                }
+                                //办件结果满意度
+                                if (item.QuestionId == _options.Value.QuestionIdTwo)
+                                {
+                                    if (item.QuestionResult == "满意")
                                     {
                                     {
-                                        aiOrderVisitDetail.OrderVisit.VisitState = Share.Enums.Order.EVisitState.WaitForVisit;
+                                        orgProcessingResults = new Kv() { Key = "4", Value = "满意" };
                                     }
                                     }
-
-                                    //坐席是否满意
-                                    if (item.QuestionId == _options.Value.QuestionIdThree)
+                                    else
                                     {
                                     {
-                                        if (item.QuestionResult == "满意")
-                                        {
-                                            seatEvaluate = ESeatEvaluate.Satisfied;
-                                        }
-                                        else
-                                        {
-                                            seatVisitContent = callRecord.SceneVariable[_options.Value.VisitContentIdTwo];
-                                        }
+                                        orgProcessingResults = new Kv() { Key = "2", Value = "不满意" };
+                                        visitContent = callRecord.SceneVariable[_options.Value.VisitContentIdOne];
                                     }
                                     }
                                 }
                                 }
-
-                                //先处理坐席(因没有坐席回访,所以默认满意)
-                                var seatDetail = visitDetail.First(x => x.VisitTarget == Share.Enums.Order.EVisitTarget.Seat);
-                                if (seatDetail != null)
+                                else
                                 {
                                 {
-                                    seatDetail.VoiceEvaluate = Share.Enums.Order.EVoiceEvaluate.Satisfied;
-                                    seatDetail.SeatEvaluate = seatEvaluate;
+                                    aiOrderVisitDetail.OrderVisit.VisitState = Share.Enums.Order.EVisitState.WaitForVisit;
                                 }
                                 }
-                                await _orderVisitDetailRepository.UpdateAsync(seatDetail, HttpContext.RequestAborted);
 
 
-                                //处理结果
-                                orgDetail.ForEach(x =>
+                                //坐席是否满意
+                                if (item.QuestionId == _options.Value.QuestionIdThree)
                                 {
                                 {
-                                    x.OrgHandledAttitude = orgHandledAttitude;
-                                    x.OrgProcessingResults = orgProcessingResults;
-                                    x.VisitContent = visitContent;
-                                    if (orgProcessingResults.Value == "不满意")
+                                    if (item.QuestionResult == "满意")
                                     {
                                     {
-                                        //x.OrgNoSatisfiedReason = new List<Kv>() { new Kv() { Key = "7", Value = "未回复" } };
-                                        //TODO 记录不满意原因到内容中供人工回访甄别选择不满意原因
-                                        aiOrderVisitDetail.OrderVisit.VisitState = Share.Enums.Order.EVisitState.WaitForVisit;
+                                        seatEvaluate = ESeatEvaluate.Satisfied;
                                     }
                                     }
                                     else
                                     else
                                     {
                                     {
-                                        aiOrderVisitDetail.OrderVisit.VisitState = Share.Enums.Order.EVisitState.Visited;
+                                        seatVisitContent = callRecord.SceneVariable[_options.Value.VisitContentIdTwo];
                                     }
                                     }
-                                });
-                                await _orderVisitDetailRepository.UpdateRangeAsync(orgDetail, HttpContext.RequestAborted);
-
-                                //var first = orgProcessingResults; //aiOrderVisitDetail.OrderVisit.OrderVisitDetails.FirstOrDefault(x => x.VisitTarget == EVisitTarget.Org);
-                                //处理主表
-                                aiOrderVisitDetail.OrderVisit.AiVisitCount++;
-                                aiOrderVisitDetail.OrderVisit.VisitTime = DateTime.Now;
-                                aiOrderVisitDetail.OrderVisit.IsPutThrough = true;
-                                aiOrderVisitDetail.OrderVisit.VisitType = Share.Enums.Order.EVisitType.ChipVoiceVisit;
-                                aiOrderVisitDetail.OrderVisit.AiVisitTime();
-                                aiOrderVisitDetail.IsSuccess = true;
-                                if (orgProcessingResults != null)
-                                {
-                                    aiOrderVisitDetail.OrderVisit.NowEvaluate = orgProcessingResults;
                                 }
                                 }
-                                await _orderVisitRepository.UpdateAsync(aiOrderVisitDetail.OrderVisit, HttpContext.RequestAborted);
+                            }
 
 
-                                //处理Order表
-                                if (orgProcessingResults != null && aiOrderVisitDetail.OrderVisit.VisitState == EVisitState.Visited)
-                                {
-                                    aiOrderVisitDetail.OrderVisit.Order.Visited(orgProcessingResults.Key, orgProcessingResults.Value);
-                                    await _orderRepository.UpdateAsync(aiOrderVisitDetail.OrderVisit.Order);
+                            //先处理坐席(因没有坐席回访,所以默认满意)
+                            var seatDetail = visitDetail.First(x => x.VisitTarget == Share.Enums.Order.EVisitTarget.Seat);
+                            if (seatDetail != null)
+                            {
+                                seatDetail.VoiceEvaluate = Share.Enums.Order.EVoiceEvaluate.Satisfied;
+                                seatDetail.SeatEvaluate = seatEvaluate;
+                            }
+                            await _orderVisitDetailRepository.UpdateAsync(seatDetail, HttpContext.RequestAborted);
 
 
-                                    //推省上
-                                    var orderDto = _mapper.Map<OrderDto>(aiOrderVisitDetail.OrderVisit.Order);
-                                    await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderVisited,
-                                    new PublishVisitDto()
-                                    {
-                                        Order = orderDto,
-                                        No = aiOrderVisitDetail.OrderVisit.No,
-                                        VisitType = aiOrderVisitDetail.OrderVisit.VisitType,
-                                        VisitName = aiOrderVisitDetail.OrderVisit.CreatorName,
-                                        VisitTime = aiOrderVisitDetail.OrderVisit.VisitTime,
-                                        VisitRemark = string.IsNullOrEmpty(visitContent) ? aiOrderVisitDetail.OrderVisit.NowEvaluate?.Value : visitContent,
-                                        AreaCode = aiOrderVisitDetail.OrderVisit.Order.AreaCode!,
-                                        SubjectResultSatifyCode = orgProcessingResults.Key,
-                                        FirstSatisfactionCode = aiOrderVisitDetail.OrderVisit.Order.FirstVisitResultCode!,
-                                        ClientGuid = ""
-                                    }, cancellationToken: HttpContext.RequestAborted);
-
-                                    //推门户
-                                    await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderVisitedWeb, new PublishVisitAllDto()
-                                    {
-                                        Id = aiOrderVisitDetail.OrderVisit.Id,
-                                        Order = orderDto,
-                                        OrderVisitDetails = _mapper.Map<List<VisitDetailDto>>(aiOrderVisitDetail.OrderVisit.OrderVisitDetails),
-                                        VisitTime = aiOrderVisitDetail.OrderVisit.VisitTime,
-                                        VisitType = aiOrderVisitDetail.OrderVisit.VisitType,
-                                        PublishTime = aiOrderVisitDetail.OrderVisit.PublishTime,
-                                    }, cancellationToken: HttpContext.RequestAborted);
+                            //处理结果
+                            orgDetail.ForEach(x =>
+                            {
+                                x.OrgHandledAttitude = orgHandledAttitude;
+                                x.OrgProcessingResults = orgProcessingResults;
+                                x.VisitContent = visitContent;
+                                if (orgProcessingResults.Value == "不满意")
+                                {
+                                    //x.OrgNoSatisfiedReason = new List<Kv>() { new Kv() { Key = "7", Value = "未回复" } };
+                                    //TODO 记录不满意原因到内容中供人工回访甄别选择不满意原因
+                                    aiOrderVisitDetail.OrderVisit.VisitState = Share.Enums.Order.EVisitState.WaitForVisit;
                                 }
                                 }
+                                else
+                                {
+                                    aiOrderVisitDetail.OrderVisit.VisitState = Share.Enums.Order.EVisitState.Visited;
+                                }
+                            });
+                            await _orderVisitDetailRepository.UpdateRangeAsync(orgDetail, HttpContext.RequestAborted);
+
+                            //var first = orgProcessingResults; //aiOrderVisitDetail.OrderVisit.OrderVisitDetails.FirstOrDefault(x => x.VisitTarget == EVisitTarget.Org);
+                            //处理主表
+                            aiOrderVisitDetail.OrderVisit.AiVisitCount++;
+                            aiOrderVisitDetail.OrderVisit.VisitTime = DateTime.Now;
+                            aiOrderVisitDetail.OrderVisit.IsPutThrough = true;
+                            aiOrderVisitDetail.OrderVisit.VisitType = Share.Enums.Order.EVisitType.ChipVoiceVisit;
+                            aiOrderVisitDetail.OrderVisit.AiVisitTime();
+                            aiOrderVisitDetail.IsSuccess = true;
+                            if (orgProcessingResults != null)
+                            {
+                                aiOrderVisitDetail.OrderVisit.NowEvaluate = orgProcessingResults;
                             }
                             }
-                            else
+                            await _orderVisitRepository.UpdateAsync(aiOrderVisitDetail.OrderVisit, HttpContext.RequestAborted);
+
+                            //处理Order表
+                            if (orgProcessingResults != null && aiOrderVisitDetail.OrderVisit.VisitState == EVisitState.Visited)
                             {
                             {
-                                aiOrderVisitDetail.AiOrderVisitState = (Share.Enums.Ai.EAiOrderVisitState)(dto.TaskStatus); //更新AI子表
-                                aiOrderVisit.VisitedFailCount++;
-                                //处理回访主表
-                                aiOrderVisitDetail.OrderVisit.AiVisitTime();
-                                aiOrderVisitDetail.OrderVisit.AiVisitCount++;
-                                aiOrderVisitDetail.OrderVisit.IsCanAiVisit = true;
-                                aiOrderVisitDetail.OrderVisit.VisitState = EVisitState.WaitForVisit;
-                                aiOrderVisitDetail.IsSuccess = false;
-                                await _orderVisitRepository.UpdateAsync(aiOrderVisitDetail.OrderVisit, HttpContext.RequestAborted);
+                                aiOrderVisitDetail.OrderVisit.Order.Visited(orgProcessingResults.Key, orgProcessingResults.Value);
+                                await _orderRepository.UpdateAsync(aiOrderVisitDetail.OrderVisit.Order);
+
+                                //推省上
+                                var orderDto = _mapper.Map<OrderDto>(aiOrderVisitDetail.OrderVisit.Order);
+                                await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderVisited,
+                                new PublishVisitDto()
+                                {
+                                    Order = orderDto,
+                                    No = aiOrderVisitDetail.OrderVisit.No,
+                                    VisitType = aiOrderVisitDetail.OrderVisit.VisitType,
+                                    VisitName = aiOrderVisitDetail.OrderVisit.CreatorName,
+                                    VisitTime = aiOrderVisitDetail.OrderVisit.VisitTime,
+                                    VisitRemark = string.IsNullOrEmpty(visitContent) ? aiOrderVisitDetail.OrderVisit.NowEvaluate?.Value : visitContent,
+                                    AreaCode = aiOrderVisitDetail.OrderVisit.Order.AreaCode!,
+                                    SubjectResultSatifyCode = orgProcessingResults.Key,
+                                    FirstSatisfactionCode = aiOrderVisitDetail.OrderVisit.Order.FirstVisitResultCode!,
+                                    ClientGuid = ""
+                                }, cancellationToken: HttpContext.RequestAborted);
+
+                                //推门户
+                                await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderVisitedWeb, new PublishVisitAllDto()
+                                {
+                                    Id = aiOrderVisitDetail.OrderVisit.Id,
+                                    Order = orderDto,
+                                    OrderVisitDetails = _mapper.Map<List<VisitDetailDto>>(aiOrderVisitDetail.OrderVisit.OrderVisitDetails),
+                                    VisitTime = aiOrderVisitDetail.OrderVisit.VisitTime,
+                                    VisitType = aiOrderVisitDetail.OrderVisit.VisitType,
+                                    PublishTime = aiOrderVisitDetail.OrderVisit.PublishTime,
+                                }, cancellationToken: HttpContext.RequestAborted);
                             }
                             }
                         }
                         }
+                        else
+                        {
+                            aiOrderVisitDetail.AiOrderVisitState = (Share.Enums.Ai.EAiOrderVisitState)(dto.TaskStatus); //更新AI子表
+                            aiOrderVisit.VisitedFailCount++;
+                            //处理回访主表
+                            aiOrderVisitDetail.OrderVisit.AiVisitTime();
+                            aiOrderVisitDetail.OrderVisit.AiVisitCount++;
+                            aiOrderVisitDetail.OrderVisit.IsCanAiVisit = true;
+                            aiOrderVisitDetail.OrderVisit.VisitState = EVisitState.WaitForVisit;
+                            aiOrderVisitDetail.IsSuccess = false;
+                            await _orderVisitRepository.UpdateAsync(aiOrderVisitDetail.OrderVisit, HttpContext.RequestAborted);
+                        }
                         //var callRecord = dto.CallRecordList.OrderByDescending(x => x.CallNo).FirstOrDefault(x => x.ReturnVisit == 1);
                         //var callRecord = dto.CallRecordList.OrderByDescending(x => x.CallNo).FirstOrDefault(x => x.ReturnVisit == 1);
                        
                        
                         
                         

+ 2 - 0
src/Hotline/Orders/OrderVisit.cs

@@ -125,6 +125,8 @@ public class OrderVisit : CreationEntity
     /// </summary>
     /// </summary>
     public string? RecordUrl { get; set; }
     public string? RecordUrl { get; set; }
 
 
+
+
     public void AiVisitTime()
     public void AiVisitTime()
     {
     {
         LastVisitTime = DateTime.Now;
         LastVisitTime = DateTime.Now;