Dun.Jason 10 kuukautta sitten
vanhempi
commit
a2df9d8add

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

@@ -291,7 +291,7 @@ namespace Hotline.Api.Controllers
             }
             var model = _mapper.Map<CallOutTask>(dto);
             var detaillist = _mapper.Map<List<CallOutTaskDetail>>(dto.AddAiCallOutTaskDetailDtos);
-            model.AiCallOutTaskState = EAiCallOutTaskState.InProgress;
+            model.AiCallOutTaskState = EAiCallOutTaskState.NoStarted;
             model.HasVisitCount = dto.AddAiCallOutTaskDetailDtos.Count;
             model.VisitedCount = 0;
             model.VisitedFailCount = 0;
@@ -334,6 +334,26 @@ namespace Hotline.Api.Controllers
             return _mapper.Map<List<CanUseCallOutTemplateListRep>>(list);
         }
 
+        /// <summary>
+        /// 终止外呼任务
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost("callout/closecallouttask")]
+        public async Task CloseCalloutTask([FromBody] CloseCalloutTaskReq request)
+        {
+            var callOut = await _callOutTaskRepository.Queryable()
+                    .Includes(x => x.CallOutTaskDetails)
+                    .FirstAsync(x => x.BatchUid == request.Id);
+
+            if (callOut!=null)
+            {
+                if (callOut.AiCallOutTaskState != EAiCallOutTaskState.NoStarted)
+                    throw UserFriendlyException.SameMessage("当前状态不能终止");
+                
+
+            }
+        }
 
 
         #endregion
@@ -582,6 +602,10 @@ namespace Hotline.Api.Controllers
                             {
                                 aiOrderVisit.TaskState = Share.Enums.Ai.EAiOrderVisitTaskState.Ended;
                             }
+                            else
+                            {
+                                aiOrderVisit.TaskState = EAiOrderVisitTaskState.InProgress;
+                            }
                             await _aiOrderVisitRepository.UpdateAsync(aiOrderVisit, HttpContext.RequestAborted);
                             #region 注释
                             //处理不满意结果(如果差评没有不满意原因则不能视为回访完成)   --(不满意设置为失效,生成新的人工回访记录)
@@ -700,6 +724,14 @@ namespace Hotline.Api.Controllers
                             aicallOutDetail.CallOutTime = DateTime.Now;
                             callOut.VisitedFailCount++;
                         }
+                        if ((callOut.VisitedFailCount + callOut.VisitedCount) == callOut.HasVisitCount)
+                        {
+                            callOut.AiCallOutTaskState = EAiCallOutTaskState.Ended;
+                        }
+                        else
+                        {
+                            callOut.AiCallOutTaskState = EAiCallOutTaskState.InProgress;
+                        }
                         await _callOutTaskRepository.UpdateAsync(callOut,HttpContext.RequestAborted);
                         await _callOutTaskDetailRepository.UpdateAsync(aicallOutDetail,HttpContext.RequestAborted);
                     }
@@ -796,7 +828,7 @@ namespace Hotline.Api.Controllers
 
             var detaillist = _mapper.Map<List<AiOrderVisitDetail>>(dto.AiOrderVisitDetails);
 
-            model.TaskState = Share.Enums.Ai.EAiOrderVisitTaskState.InProgress;
+            model.TaskState = Share.Enums.Ai.EAiOrderVisitTaskState.NoStarted;
             model.RuleType = 2;
             model.HasVisitCount = dto.AiOrderVisitDetails.Count;
             model.VisitedCount = 0;

+ 7 - 1
src/Hotline.Share/Dtos/Ai/AiDto.cs

@@ -373,9 +373,15 @@ namespace Hotline.Share.Dtos.Ai
         public List<AddAiOrderVisitDetailDto> AiOrderVisitDetails { get; set; }
     }
 
+    public class CloseCalloutTaskReq
+    {
+        public string Id { get; set; }
+    }
+
+
     public class AddAiCallOutRequest
     {
-        public string Name { get; set; }
+        public string TaskName { get; set; }
 
         public DateTime BeginTime { get; set; }
 

+ 3 - 0
src/Hotline.Share/Enums/Ai/EAiCallOutTaskState.cs

@@ -17,5 +17,8 @@ namespace Hotline.Share.Enums.Ai
 
         [Description("已结束")]
         Ended = 3,
+
+        [Description("已终止")]
+        Close = 4,
     }
 }