田爽 3 місяців тому
батько
коміт
ff221dbe2b

+ 1 - 1
src/Hotline.Ai.Jths/AiQualityService.cs

@@ -21,7 +21,7 @@ namespace Hotline.Ai.Jths
             _client = new RestClient();
             _baseUrl = baseUrl;
         }
-        public async Task CreateAiOrderQualityTask(string filename, CancellationToken cancellationToken) { }
+        public async Task<string> CreateAiOrderQualityTask(string filename, CancellationToken cancellationToken) { return ""; }
 
 
 		public async Task CreateAiOrderQualityTask(

+ 4 - 12
src/Hotline.Ai.XingTang/AiQualityService.cs

@@ -30,11 +30,11 @@ namespace Hotline.Ai.XingTang
         }
 
 
-		public async Task CreateAiOrderQualityTask(string filename, CancellationToken cancellationToken)
+		public async Task<string> CreateAiOrderQualityTask(string filename, CancellationToken cancellationToken)
         {
             var url = _baseUrl + "/offlinerecog?filename=" + filename;
 			var baseUrl = new Uri(url);
-             await ExecuteAsync(baseUrl.ToString(), Method.Get, "", cancellationToken);
+            return  await ExecuteAsync(baseUrl.ToString(), Method.Get, "", cancellationToken);
         }
 
         public async Task<ApiResponse<TResponse>> ExecuteAsync<TRequest, TResponse>(string path, Method httpMethod,
@@ -62,25 +62,17 @@ namespace Hotline.Ai.XingTang
             }
         }
 
-        public async Task<ApiResponse> ExecuteAsync<TRequest>(string path, Method httpMethod, TRequest request,
+        public async Task<string> ExecuteAsync<TRequest>(string path, Method httpMethod, TRequest request,
             CancellationToken cancellationToken)
             where TRequest : class
         {
             var req = new RestRequest(path, httpMethod);
             req.Timeout = new TimeSpan(0,30,0);
-            //if (httpMethod is Method.Get)
-            //{
-            //    req.AddObject(request);
-            //}
-            //else
-            //{
-            //    req.AddJsonBody(request);
-            //}
 
             try
             {
                 var response = await _client.ExecuteAsync<ApiResponse>(req, cancellationToken);
-                return response.Data;
+                return response.Content;
             }
             catch (Exception e)
             {

+ 70 - 0
src/Hotline.Api/Controllers/OrderController.cs

@@ -2069,6 +2069,76 @@ public class OrderController : BaseController
         }
     }
 
+	/// <summary>
+	/// 工单延期修改后下一步流程
+	/// </summary>
+	[HttpPost("delay/batch_audit")]
+	[LogFilter("批量审批延期")]
+	public async Task<string> BatchAuditDelay([FromBody] BatchDelayNextFlowDto dto) {
+		var result = new StringBuilder();
+		var fail = 0;
+		var success = 0;
+		foreach (var item in dto.DelayId)
+		{
+			try
+			{
+                var workflow = dto.NextWorkflow;
+				var delay = await _orderDelayRepository.GetAsync(item, HttpContext.RequestAborted);
+				workflow.WorkflowId = delay.WorkflowId;
+				NextStepsWithOpinionDto<NextStepOption> next = null;
+
+				try
+				{
+					next = await _workflowApplication.GetNextStepsAsync(delay.WorkflowId, HttpContext.RequestAborted);
+				}
+				catch (UserFriendlyException e)
+				{
+					if (e.Message.Contains("未找到对应节点"))
+					{
+						result.Append("无权审核:" + delay.No);
+						fail++;
+					}
+					else
+					{
+						throw;
+					}
+				}
+				if (next == null) continue;
+               
+				var isBatch = next.Steps.Where(x => x.Value == workflow.NextStepName).Any();
+                if (isBatch)
+                {
+					var step = next.Steps.Where(x => x.Value == workflow.NextStepName).FirstOrDefault();
+					workflow.NextStepCode = step.Key;
+					workflow.NextStepName = step.Value;
+				}
+                else {
+					result.Append("无权审核:" + delay.No);
+					fail++;
+                    continue;
+				}
+
+				workflow.StepId = next.StepId;
+                if (workflow.ReviewResult == EReviewResult.Approval) {
+					await _workflowDomainService.NextAsync(_sessionContext, workflow,cancellationToken: HttpContext.RequestAborted);
+				}
+				else
+				{
+					var reject = workflow.Adapt<RejectDto>();
+					await _workflowApplication.RejectAsync(reject, HttpContext.RequestAborted);
+				}
+				success++;
+			}
+			catch (UserFriendlyException e)
+			{
+				result.Append(e.Message);
+				fail++;
+			}
+		}
+		return $"总共: {dto.DelayId.Length}, 成功: {success}, 失败: {fail}, 失败原因: {result.ToString()}";
+
+	}
+
     /// <summary>
     ///  延期查询流程办理下一步可选节点
     /// </summary>

+ 25 - 6
src/Hotline.Api/Controllers/QualityController.cs

@@ -611,12 +611,31 @@ namespace Hotline.Api.Controllers
             return rsp;
         }
 
-        /// <summary>
-        /// 智能质检结果返回接收 
-        /// </summary>
-        /// <param name="dto"></param>
-        /// <returns></returns>
-        [AllowAnonymous]
+		/// <summary>
+		/// 智能质检转写
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[AllowAnonymous]
+		[HttpPost("AiResult_XT")]
+		[LogFilter("智能质检转写_兴唐")]
+		public async Task AiResult([FromBody] List<AiQualityXTDto> dto)
+		{
+            foreach (var item in dto)
+            {
+                var quality = await _qualitey.GetAsync(item.Id);
+
+			}
+            
+		}
+
+
+		/// <summary>
+		/// 智能质检结果返回接收 
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[AllowAnonymous]
         [HttpPost("AiResult")]
         [LogFilter("智能质检结果返回接收")]
         public async Task AiResult([FromBody] List<AiQualityResultDto> dto)

+ 7 - 0
src/Hotline.Share/Dtos/Order/OrderStartFlowDto.cs

@@ -268,4 +268,11 @@ namespace Hotline.Share.Dtos.Order
 
         public NextWorkflowDto NextWorkflow { get; set; }
     }
+
+    public class BatchDelayNextFlowDto {
+
+        public string[] DelayId { get; set; }
+        
+		public NextWorkflowDto NextWorkflow { get; set; }
+	}
 }

+ 5 - 0
src/Hotline.Share/Dtos/Quality/QualityDto.cs

@@ -230,4 +230,9 @@ namespace Hotline.Share.Dtos.Quality
 		/// </summary>
 		public int? MinGrade { get; set; }
 	}
+
+	public class AiQualityXTDto 
+	{
+		public string Id { get; set; }
+	}
 }

+ 1 - 1
src/Hotline/Ai/Quality/IAiQualityService.cs

@@ -16,6 +16,6 @@ namespace Hotline.Ai.Quality
         //TrCallRecord? call,
 		Task CreateAiOrderQualityTask(string id, string audioFile,string fromNo,DateTime? callStartTime, string viteRecordPrefix, string ywlxString, CancellationToken cancellationToken);
 
-		Task CreateAiOrderQualityTask(string filename, CancellationToken cancellationToken);
+		Task<string> CreateAiOrderQualityTask(string filename, CancellationToken cancellationToken);
 	}
 }