소스 검색

推送智能质检由创建质检改到录音接收

田爽 1 년 전
부모
커밋
360f9775b2
2개의 변경된 파일25개의 추가작업 그리고 21개의 파일을 삭제
  1. 25 4
      src/Hotline.Api/Controllers/IPPbxController.cs
  2. 0 17
      src/Hotline.Application/Quality/QualityApplication.cs

+ 25 - 4
src/Hotline.Api/Controllers/IPPbxController.cs

@@ -1,4 +1,5 @@
 using DotNetCore.CAP;
+using Hotline.Ai.Quality;
 using Hotline.Application.CallCenter.Calls;
 using Hotline.Application.Tels;
 using Hotline.Caching.Interfaces;
@@ -6,12 +7,14 @@ using Hotline.CallCenter.Calls;
 using Hotline.CallCenter.Tels;
 using Hotline.Orders;
 using Hotline.Permissions;
+using Hotline.Quality;
 using Hotline.Repository.SqlSugar.Extensions;
 using Hotline.Settings;
 using Hotline.Share.Dtos;
 using Hotline.Share.Dtos.Order;
 using Hotline.Share.Dtos.TrCallCenter;
 using Hotline.Share.Enums.CallCenter;
+using Hotline.Share.Enums.Quality;
 using Hotline.Users;
 using MapsterMapper;
 using Microsoft.AspNetCore.Authorization;
@@ -45,16 +48,20 @@ namespace Hotline.Api.Controllers
         private readonly ITelRestRepository _telRestRepository;
         private readonly IRepository<User> _userRepository;
         private readonly ITelApplication _telApplication;
+        private readonly IRepository<Quality.Quality> _qualiteyRepository;
+        private readonly IAiQualityService _aiQualityService;
+        private readonly IRepository<QualityTemplate> _qualityTemplate;
 
 
-        public IPPbxController(ITrClient trClient, IMapper mapper, IUserDomainService userDomainService,
+		public IPPbxController(ITrClient trClient, IMapper mapper, IUserDomainService userDomainService,
             ISessionContext sessionContext, IRepository<TrCallRecord> trCallRecordRepository,
             ITrApplication trApplication, IRepository<TrCallEvaluate> trCallRecord,
             ISystemDicDataCacheManager systemDicDataCacheManager, ILogger<IPPbxController> logger,
             IOrderRepository orderRepository, IRepository<OrderVisit> orderVisitRepository,
             IUserCacheManager userCacheManager, ICapPublisher capPublisher,
             ITelRestRepository telRestRepository, IRepository<User> userRepository,
-            ITelApplication telApplication)
+            ITelApplication telApplication, IRepository<Quality.Quality> qualiteyRepository,
+            IAiQualityService aiQualityService, IRepository<QualityTemplate> qualityTemplate)
         {
             _trClient = trClient;
             _mapper = mapper;
@@ -72,7 +79,10 @@ namespace Hotline.Api.Controllers
             _telRestRepository = telRestRepository;
             _userRepository = userRepository;
             _telApplication = telApplication;
-        }
+            _qualiteyRepository = qualiteyRepository;
+            _aiQualityService = aiQualityService;
+            _qualityTemplate = qualityTemplate; 
+		}
 
         #region 添添呼
 
@@ -298,7 +308,18 @@ namespace Hotline.Api.Controllers
             {
                 model.CallOrderType = ECallOrderType.Order;
                 model.ExternalId = order.Id;
-            }
+                // 写入智能质检
+                var teAny = await _qualityTemplate.Queryable()
+	                .LeftJoin<QualityTemplateDetail>((x, d) => x.Id == d.TemplateId)
+	                .LeftJoin<QualityItem>((x, d, i) => d.ItemId == i.Id)
+	                .Where((x, d, i) => i.IsIntelligent == 1)
+                    .Where((x, d, i) => x.Grouping == ETemplateGrouping.Accepted).AnyAsync();
+                if (teAny)
+                {
+	                var quality = await _qualiteyRepository.Queryable().Where(x => x.OrderId == order.Id && x.Source == Share.Enums.Quality.EQualitySource.Accepted).FirstAsync();
+					await _aiQualityService.CreateAiOrderQualityTask(quality, model, order, HttpContext.RequestAborted);
+				}
+			}
             else
             {
                 var orderVisit = await _orderVisitRepository.GetAsync(x => x.CallId == model.CallAccept, HttpContext.RequestAborted);

+ 0 - 17
src/Hotline.Application/Quality/QualityApplication.cs

@@ -88,23 +88,6 @@ namespace Hotline.Application.Quality
                 List<QualityDetail> details = _mapper.Map<List<QualityDetail>>(model.QualityDetails);
                 await _qualiteyDetail.AddRangeAsync(details, cancellationToken);
             }
-            //受理智能质检
-            if (model.Source == EQualitySource.Accepted) {
-                var teAny = await _qualityTemplate.Queryable()
-                    .LeftJoin<QualityTemplateDetail>((x, d) => x.Id == d.TemplateId)
-                    .LeftJoin<QualityItem>((x, d, i) => d.ItemId == i.Id)
-                    .Where((x, d, i) => i.IsIntelligent == 1).Where((x,d,i)=>x.Grouping == ETemplateGrouping.Accepted).AnyAsync();
-                if (teAny)
-                {
-					var order = await _orderRepository.GetAsync(model.OrderId);
-					if (order != null && !string.IsNullOrEmpty(order.CallId))
-					{
-                        quality.AiQuality = true;
-						var call = await _trCallRecordRepository.GetAsync(x=>x.CallAccept == order.CallId);
-						await _aiQualityService.CreateAiOrderQualityTask(quality, call, order, cancellationToken);
-					}
-				}
-            }
             await _qualityRepository.AddAsync(quality, cancellationToken);
 		}