Ver código fonte

Merge branch 'master' of http://110.188.24.182:10023/Fengwo/hotline

xf 1 ano atrás
pai
commit
ce5397850b

+ 11 - 6
src/Hotline.Ai.Jths/AiQualityService.cs

@@ -24,17 +24,21 @@ namespace Hotline.Ai.Jths
 
         public async Task CreateAiOrderQualityTask(Hotline.Quality.Quality model, TrCallRecord call, Order order, CancellationToken cancellationToken)
 		{
-			AiQualityDto  aiQuality = new AiQualityDto
+			var fileName = call.RecordingFileName.Split(".");
+			var recordForm = fileName.Any() && fileName.Length > 1 ? fileName[1] : string.Empty;
+			List<AiQualityDto> datalist = new List<AiQualityDto>();
+			AiQualityDto aiQuality = new AiQualityDto
 			{
 				RecordID = model.Id,
 				RecordPath = call.RecordingFileUrl,
-				AgentID = order.AcceptorStaffNo!,
+				AgentID = string.IsNullOrEmpty(order.AcceptorStaffNo) ? "999" : order.AcceptorStaffNo,
 				CallNumber = call.CPN,
 				CallTime = call.CreatedTime.ToString("yyyy-MM-dd HH:mm:ss"),
-				RecordForm = model.Id,
+				RecordForm = recordForm,
 				Extend = model.Source.ToString(),
 			};
-			var data =JsonConvert.SerializeObject(aiQuality);
+			datalist.Add(aiQuality);
+			var data =JsonConvert.SerializeObject(datalist);
 			await ExecuteAsync(_baseUrl+"routeinfo/api", Method.Post, data, cancellationToken);
 		}
 
@@ -71,9 +75,10 @@ namespace Hotline.Ai.Jths
 			req.AddHeader("content-type", "application/json");
 			req.AddHeader("token", "");
 			req.AddHeader("version", "1.0");
-			var appkey = MD5Encrypt(request.ToString());
-			req.AddHeader("appkey", appkey);
+			var sign = MD5Encrypt(request.ToString());
+			req.AddHeader("sign", sign);
 			req.AddHeader("signType", "md5");
+			req.AddHeader("appkey", "MTAwMDAx");
 			if (httpMethod is Method.Get)
 			{
 				req.AddObject(request);

+ 7 - 8
src/Hotline.Ai.Jths/AiVisitService.cs

@@ -44,8 +44,8 @@ namespace Hotline.Ai.Jths
                 BatchStatus = 1,
                 SceneUid = _sceneuid,
                 Priority = 1,
-                StartDate = aiOrderVisit.BeginTime.ToString("yyyy/MM/dd hh:mm:ss"),
-                EndDate = aiOrderVisit.EndTime.ToString("yyyy/MM/dd hh:mm:ss"),
+                StartDate = aiOrderVisit.BeginTime.ToString("yyyy/MM/dd HH:mm:ss"),
+                EndDate = aiOrderVisit.EndTime.ToString("yyyy/MM/dd HH:mm:ss"),
                 FestivalBan = aiOrderVisit.FestivalBan,
                 RuleType = aiOrderVisit.RuleType,
                 RuleUid = _ruleuid,
@@ -72,14 +72,13 @@ namespace Hotline.Ai.Jths
             }
             requestData.TaskDataList = taskDataList;
             var response = await ExecuteAsync<AiVisitServiceRequest, AiVisitServiceResponse>(_baseUrl + "/edas/batchTask",Method.Post, requestData,cancellationToken);
-
-            if (response.TaskInfoList!=null && !string.IsNullOrEmpty(response.BatchUid))
+            if (response.Result.TaskInfoList!=null && !string.IsNullOrEmpty(response.Result.BatchUid))
             {
                 //拼对象
-                aiOrderVisit.BatchUid = response.BatchUid;
+                aiOrderVisit.BatchUid = response.Result.BatchUid;
                 for (int i = 0; i < aiOrderVisit.AiOrderVisitDetails.Count; i++)
                 {
-                    var taskInfo = response.TaskInfoList.FirstOrDefault(x => x.CalledNumber == aiOrderVisit.AiOrderVisitDetails[i].OuterNo);
+                    var taskInfo = response.Result.TaskInfoList.FirstOrDefault(x => x.CalledNumber == aiOrderVisit.AiOrderVisitDetails[i].OuterNo);
                     if (taskInfo != null)
                     {
                         aiOrderVisit.AiOrderVisitDetails[i].AiOrderVisitState = Share.Enums.Ai.EAiOrderVisitState.InProgress;
@@ -95,7 +94,7 @@ namespace Hotline.Ai.Jths
         }
 
 
-        public async Task<TResponse> ExecuteAsync<TRequest,TResponse>(string path, Method httpMethod, TRequest request,
+        public async Task<ApiResponse<TResponse>> ExecuteAsync<TRequest,TResponse>(string path, Method httpMethod, TRequest request,
             CancellationToken cancellationToken)
             where TRequest : class
         {
@@ -114,7 +113,7 @@ namespace Hotline.Ai.Jths
             }
             try
             {
-                var response = await _client.ExecuteAsync<TResponse>(req, cancellationToken);
+                var response = await _client.ExecuteAsync<ApiResponse<TResponse>>(req, cancellationToken);
                 return response.Data;
             }
             catch (Exception e)

+ 0 - 3
src/Hotline.Ai.Jths/OrderVisits/AiVisitServiceResponse.cs

@@ -3,9 +3,6 @@ namespace Hotline.Ai.Jths.OrderVisits
 {
     public class AiVisitServiceResponse
     {
-
-
-
         public string BatchUid { get; set; }
 
         public List<TaskInfoList> TaskInfoList { get; set; }

+ 9 - 2
src/Hotline.Api/Controllers/AiController.cs

@@ -29,8 +29,9 @@ namespace Hotline.Api.Controllers
         private readonly IMapper _mapper;
         private readonly IOptionsSnapshot<AiVisitConfig> _options;
         private readonly IAiVisitService _aiVisitService;
+        private readonly ILogger<AiController> _logger;
 
-        public AiController(ISystemSettingCacheManager systemSettingCacheManager,IRepository<AiOrderVisit> aiOrderVisitRepository,IRepository<AiOrderVisitDetail>  aiOrderVisitDetailRepository,IRepository<OrderVisit> orderVisitRepository,IRepository<OrderVisitDetail> orderVisitDetailRepository,IMapper mapper, IOptionsSnapshot<AiVisitConfig> options,IAiVisitService aiVisitService)
+        public AiController(ISystemSettingCacheManager systemSettingCacheManager,IRepository<AiOrderVisit> aiOrderVisitRepository,IRepository<AiOrderVisitDetail>  aiOrderVisitDetailRepository,IRepository<OrderVisit> orderVisitRepository,IRepository<OrderVisitDetail> orderVisitDetailRepository,IMapper mapper, IOptionsSnapshot<AiVisitConfig> options,IAiVisitService aiVisitService, ILogger<AiController> logger)
         {
            _systemSettingCacheManager = systemSettingCacheManager;
             _aiOrderVisitRepository = aiOrderVisitRepository;
@@ -40,6 +41,7 @@ namespace Hotline.Api.Controllers
             _mapper = mapper;
             _options = options;
             _aiVisitService = aiVisitService;
+            _logger = logger;
         }
 
 
@@ -90,6 +92,9 @@ namespace Hotline.Api.Controllers
         [HttpPost("aivisit/aivisit-back")]
         public async Task AiVisitBack([FromBody]AiVisitBackDto dto)
         {
+            _logger.LogInformation($"收到智能外呼结果回传:{JsonConvert.SerializeObject(dto)}");
+
+
             var aiOrderVisit = await _aiOrderVisitRepository.Queryable()
                 .Includes(x => x.AiOrderVisitDetails,s=>s.OrderVisit)
                 .FirstAsync(x => x.BatchUid == dto.BatchUid);
@@ -266,7 +271,9 @@ namespace Hotline.Api.Controllers
                 .Includes(x => x.AiOrderVisitDetails, s => s.OrderVisit, q => q.OrderVisitDetails)
                 .FirstAsync(x => x.Id == id);
             
-            await _aiVisitService.CreateAiOrderVisitTask(pushModel, HttpContext.RequestAborted);
+            var newModel = await _aiVisitService.CreateAiOrderVisitTask(pushModel, HttpContext.RequestAborted);
+            await _aiOrderVisitRepository.UpdateAsync(newModel, HttpContext.RequestAborted);
+            await _aiOrderVisitDetailRepository.UpdateRangeAsync(newModel.AiOrderVisitDetails, HttpContext.RequestAborted);
         }
 
         #endregion

+ 10 - 5
src/Hotline.Api/Controllers/QualityController.cs

@@ -196,11 +196,16 @@ namespace Hotline.Api.Controllers
 			List<QualityItem> items = await _qualiteyItem.Queryable().In(x => x.Id, dto.Ids).ToListAsync();
             foreach (var item in items)
             {
-	            var detail = await _qualiteyDetail.Queryable().Where(x => x.Name == item.Name && !x.IsDeleted).AnyAsync();
-				//质检中已存在 启用状态不可以删
-				if (item.IsEnable == 0 || detail) items.Remove(item);
-}
-            if (items.Any()) await _qualiteyItem.RemoveRangeAsync(items,true, HttpContext.RequestAborted);
+	            var detail = await _qualiteyDetail.Queryable().Where(x => x.Name == item.Name).AnyAsync();
+				//质检中已存在不可以删
+				if (detail) items.Remove(item);
+			}
+			if (items.Any())
+			{
+				await _qualiteyItem.RemoveRangeAsync(items, true, HttpContext.RequestAborted);
+				var tempItems = await _qualiteyTemplateDetail.Queryable().In(x => x.ItemId, items.Select(x => x.Id)).ToListAsync(HttpContext.RequestAborted);
+				if (tempItems.Any()) await _qualiteyTemplateDetail.RemoveRangeAsync(tempItems, HttpContext.RequestAborted);			
+			}
 		}
 
 		/// <summary>

+ 1 - 1
src/Hotline.Share/Dtos/Quality/AiQualityDto.cs

@@ -11,7 +11,7 @@ namespace Hotline.Share.Dtos.Quality
 		/// <summary>
 		/// 录音来源方式:sftp,ftp,http,nas
 		/// </summary>
-		public string AudioSource { get; set; } = "ftp";
+		public string AudioSource { get; set; } = "http";
 
 		/// <summary>
 		/// 工单号:录音的唯一ID

+ 21 - 3
src/Hotline/Permissions/EPermission.cs

@@ -118,6 +118,11 @@ namespace Hotline.Permissions
         /// </summary>
         [Display(GroupName ="延期待办",Name ="延期审核",Description ="延期审核")]
         DelayOrderAudit = 100501,
+        /// <summary>
+        /// 延期退回
+        /// </summary>
+        [Display(GroupName ="延期待办",Name = "延期退回",Description ="延期退回")]
+        DelayOrderReturn = 100502,
         #endregion
 
         #region 甄别待办
@@ -129,9 +134,13 @@ namespace Hotline.Permissions
         /// <summary>
         /// 甄别审批
         /// </summary>
-        [Display(GroupName = "甄别审批",Name ="甄别审批",Description ="甄别审批")]
+        [Display(GroupName = "甄别待办", Name ="甄别审批",Description ="甄别审批")]
         ScreenOrderAudit = 100601,
-
+        /// <summary>
+        /// 甄别退回
+        /// </summary>
+        [Display(GroupName = "甄别待办",Name ="甄别退回",Description ="甄别退回")]
+        ScreenOrderReturn = 100602,
         #endregion
 
         #region 督办待办
@@ -159,7 +168,16 @@ namespace Hotline.Permissions
         #endregion
 
         #region 催办待办
-
+        /// <summary>
+        /// 催办待办
+        /// </summary>
+        [Display(GroupName = "催办待办",Name ="催办待办",Description = "催办待办")]
+        OrderUrging = 100900,
+        /// <summary>
+        /// 催办签收
+        /// </summary>
+        [Display(GroupName = "催办待办",Name ="催办签收",Description ="催办签收")]
+        OrderUrgingSign = 100902,
 
         #endregion
         #endregion