|
@@ -131,7 +131,7 @@ namespace Hotline.Api.Controllers
|
|
|
Id = x.Id,
|
|
|
TemplateName = x.TemplateName,
|
|
|
TemplateContent = x.TemplateContent,
|
|
|
- //CallOutTaskCount = x.CallOutTasks != null ? x.CallOutTasks.Count() : 0,
|
|
|
+ CallOutTaskCount = x.CallOutTasks.Count(),
|
|
|
CreationTime = x.CreationTime,
|
|
|
IsEnable = x.IsEnable,
|
|
|
CreatorName = x.CreatorName,
|
|
@@ -255,9 +255,9 @@ namespace Hotline.Api.Controllers
|
|
|
[HttpGet("callout/list-basedata")]
|
|
|
public async Task<object> AiCallOuttListBaseData()
|
|
|
{
|
|
|
- var aiCallOutTaskState = EnumExts.GetDescriptions<EAiCallOutTaskState>();
|
|
|
return new {
|
|
|
- AiCallOutTaskState = aiCallOutTaskState
|
|
|
+ AiCallOutTaskState = EnumExts.GetDescriptions<EAiCallOutTaskState>(),
|
|
|
+ AiCallOutState = EnumExts.GetDescriptions<EAiCallOutState>()
|
|
|
};
|
|
|
}
|
|
|
|
|
@@ -271,6 +271,9 @@ namespace Hotline.Api.Controllers
|
|
|
{
|
|
|
var (total, items) = await _callOutTaskDetailRepository.Queryable()
|
|
|
.Where(x => x.CallOutTaskId == dto.Id)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.OuterNo),x=>x.OuterNo.Contains(dto.OuterNo))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Name),x=>x.Name.Contains(dto.Name))
|
|
|
+ .WhereIF(dto.AiCallOutState!=null,x=>x.AiCallOutState== dto.AiCallOutState)
|
|
|
.OrderByDescending(x => x.CreationTime)
|
|
|
.ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
|
return new PagedDto<AiCallOutDetailListRep>(total,_mapper.Map<IReadOnlyList<AiCallOutDetailListRep>>(items));
|
|
@@ -291,7 +294,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 +337,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 +605,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 +727,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 +831,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;
|