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 map){ List task = callService.createTask(map); // 创建外呼短信发送任务记录 createCallSmsNoticeTask(task); // 返回 return R.data(task); } /** * 创建外呼短信发送任务记录 * @param result */ private Boolean createCallSmsNoticeTask(List 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 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 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 list = listener.getDatas(); // 导入并返回 return R.data(callService.importCall(list,time)); } /** * 导出模板 */ @GetMapping("/export-template") @ApiOperation(value = "导出模板") public void exportTemplate(HttpServletResponse response) { List list = new ArrayList<>(); ExcelUtil.export(response, "智能外呼数据模板", "智能外呼数据表", list, CallExcel.class); } }