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