package cn.gistack.sm.intelligentCall.controller;
|
|
import cn.gistack.sm.intelligentCall.entity.CallTaskResult;
|
import cn.gistack.sm.intelligentCall.entity.Scene;
|
import cn.gistack.sm.intelligentCall.excel.CallExcel;
|
import cn.gistack.sm.intelligentCall.listener.ExcelListener;
|
import cn.gistack.sm.intelligentCall.service.CallService;
|
import cn.gistack.sm.intelligentCall.service.ICallSmsNoticeTaskService;
|
import cn.gistack.sm.intelligentCall.vo.CallTaskResultVO;
|
import cn.gistack.sm.intelligentCall.vo.CallTaskStatistic;
|
import com.alibaba.excel.EasyExcel;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import lombok.AllArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springblade.core.excel.util.ExcelUtil;
|
import org.springblade.core.mp.support.Condition;
|
import org.springblade.core.mp.support.Query;
|
import org.springblade.core.tool.api.R;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.IOException;
|
import java.util.*;
|
|
/**
|
* 智能呼叫控制层
|
* @author zhongrj
|
* @date 2023-04-21
|
*/
|
@Slf4j
|
@Api(tags = "智能呼叫")
|
@RestController
|
@RequestMapping("/call/call")
|
@AllArgsConstructor
|
public class CallController {
|
|
private final CallService callService;
|
|
private final ICallSmsNoticeTaskService callSmsNoticeTaskService;
|
|
/**
|
* 创建任务
|
* @return
|
*/
|
@PostMapping("/createCall")
|
public R createCall(@RequestBody Map<String,Object> map){
|
List<String> task = callService.createTask(map);
|
// 创建外呼短信发送任务记录
|
createCallSmsNoticeTask(task);
|
// 返回
|
return R.data(task);
|
}
|
|
/**
|
* 创建外呼短信发送任务记录
|
* @param result
|
*/
|
private Boolean createCallSmsNoticeTask(List<String> result) {
|
Boolean flag = false;
|
if (null != result && result.size() > 0) {
|
if (result.get(2).equals("true")) {
|
// 获取任务id
|
String taskId = result.get(1);
|
flag = callSmsNoticeTaskService.createCallSmsNoticeTask(taskId);
|
}
|
}
|
return flag;
|
}
|
|
/**
|
* 获取通话详情
|
* @return
|
*/
|
@GetMapping("/getCallDetail")
|
public R getCallDetail(String taskId,String calleeNumber){
|
// 返回
|
return R.data(callService.getCallDetail(taskId,calleeNumber));
|
}
|
|
|
/**
|
* 查询呼叫列表信息
|
* @param callTask
|
* @param query
|
* @return
|
*/
|
@GetMapping("/getCallListPage")
|
public R getCallListPage(CallTaskStatistic callTask, Query query){
|
// 返回
|
return R.data(callService.getCallListPage(Condition.getPage(query),callTask));
|
}
|
|
|
/**
|
* 查询呼叫详情列表信息
|
* @param callTaskResult
|
* @param query
|
* @return
|
*/
|
@GetMapping("/getCallTaskResultListPage")
|
public R getCallTaskResultListPage(CallTaskResultVO callTaskResult, Query query){
|
// 返回
|
return R.data(callService.getCallTaskResultListPage(Condition.getPage(query),callTaskResult));
|
}
|
|
/**
|
* 导出呼叫详情列表信息
|
* @param callTaskResult
|
* @return
|
*/
|
@GetMapping("/getCallTaskResultList")
|
public R getCallTaskResultList(CallTaskResultVO callTaskResult){
|
// 返回
|
return R.data(callService.getCallTaskResultList(callTaskResult));
|
}
|
|
/**
|
* 查询智能外呼统计数据-按日期-行政区统计
|
* @param callTaskStatistic
|
* @param query
|
* @return
|
*/
|
@GetMapping("/getOutgoingStatisticList")
|
public R getOutgoingStatisticList(CallTaskStatistic callTaskStatistic, Query query){
|
// 返回
|
return R.data(callService.getOutgoingStatisticList(Condition.getPage(query),callTaskStatistic));
|
}
|
|
/**
|
* 查询智能外呼统计数据-行政区统计
|
* @param callTaskStatistic
|
* @return
|
*/
|
@GetMapping("/getOutgoingStatisticByArea")
|
public R getOutgoingStatisticByArea(CallTaskStatistic callTaskStatistic){
|
// 返回
|
return R.data(callService.getOutgoingStatisticByArea(callTaskStatistic));
|
}
|
|
/**
|
* 根据条件自动创建外呼任务
|
* @param params
|
* @return
|
*/
|
@PostMapping("/createCallTaskByParams")
|
public R createCallTaskByParam(@RequestBody Map<String, Object> params){
|
// 返回
|
return R.data(callService.createCallTaskByParam(params));
|
}
|
|
/**
|
* 查询未接通,拒接的呼叫结果详情列表信息
|
* @param callTaskStatistic
|
* @param query
|
* @return
|
*/
|
@GetMapping("/getCallNotConnectResultList")
|
public R getCallNotConnectResultList(CallTaskStatistic callTaskStatistic, Query query){
|
// 返回
|
return R.data(callService.getCallNotConnectResultList(Condition.getPage(query),callTaskStatistic));
|
}
|
|
/**
|
* 按日期行政区呼叫结果详情列表信息
|
* @param callTaskStatistic
|
* @param query
|
* @return
|
*/
|
@GetMapping("/getCallResultList")
|
public R getCallResultList(CallTaskStatistic callTaskStatistic, Query query){
|
// 返回
|
return R.data(callService.getCallResultList(Condition.getPage(query),callTaskStatistic));
|
}
|
|
/**
|
* 详情导出临时接口
|
* @param callTaskResult
|
* @param query
|
* @return
|
*/
|
@GetMapping("/getCallResultListTemp")
|
public R getCallResultListTemp(CallTaskResultVO callTaskResult, Query query){
|
// 返回
|
return R.data(callService.getCallResultListTemp(Condition.getPage(query),callTaskResult));
|
}
|
|
|
/**
|
* 导入表格发送智能外呼
|
* @param file excel文件
|
* @param time 呼叫时间(空的话默认选择当前时间)
|
* @return
|
*/
|
@PostMapping("/import-call")
|
public R importCall(MultipartFile file,String time){
|
ExcelListener<CallExcel> listener = new ExcelListener<>();
|
//headRowNumber(1)从第2行开始读取,使用getDatas()方法取出数据
|
try {
|
EasyExcel.read(file.getInputStream(), CallExcel.class, listener).headRowNumber(1).sheet(0).doRead();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
List<CallExcel> list = listener.getDatas();
|
// 导入并返回
|
return R.data(callService.importCall(list,time));
|
}
|
|
/**
|
* 导出模板
|
*/
|
@GetMapping("/export-template")
|
@ApiOperation(value = "导出模板")
|
public void exportTemplate(HttpServletResponse response) {
|
List<CallExcel> list = new ArrayList<>();
|
ExcelUtil.export(response, "智能外呼数据模板", "智能外呼数据表", list, CallExcel.class);
|
}
|
}
|