CcCallPhoneController.java 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. package com.ruoyi.aicall.controller;
  2. import java.text.ParseException;
  3. import java.util.*;
  4. import java.util.stream.Collectors;
  5. import com.ruoyi.aicall.domain.CcCallTask;
  6. import com.ruoyi.aicall.model.CallPhoneExportVo;
  7. import com.ruoyi.aicall.service.ICcCallTaskService;
  8. import com.ruoyi.common.utils.DateUtils;
  9. import com.ruoyi.common.utils.MessageUtils;
  10. import com.ruoyi.common.utils.StringUtils;
  11. import org.apache.shiro.authz.annotation.RequiresPermissions;
  12. import org.springframework.beans.BeanUtils;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.stereotype.Controller;
  15. import org.springframework.ui.ModelMap;
  16. import org.springframework.web.bind.annotation.GetMapping;
  17. import org.springframework.web.bind.annotation.PathVariable;
  18. import org.springframework.web.bind.annotation.PostMapping;
  19. import org.springframework.web.bind.annotation.RequestMapping;
  20. import org.springframework.web.bind.annotation.ResponseBody;
  21. import com.ruoyi.common.annotation.Log;
  22. import com.ruoyi.common.enums.BusinessType;
  23. import com.ruoyi.aicall.domain.CcCallPhone;
  24. import com.ruoyi.aicall.service.ICcCallPhoneService;
  25. import com.ruoyi.common.core.controller.BaseController;
  26. import com.ruoyi.common.core.domain.AjaxResult;
  27. import com.ruoyi.common.utils.poi.ExcelUtil;
  28. import com.ruoyi.common.core.page.TableDataInfo;
  29. /**
  30. * 外呼号码Controller
  31. *
  32. * @author ruoyi
  33. * @date 2025-05-29
  34. */
  35. @Controller
  36. @RequestMapping("/aicall/callPhone")
  37. public class CcCallPhoneController extends BaseController
  38. {
  39. private String prefix = "aicall/callPhone";
  40. @Autowired
  41. private ICcCallPhoneService ccCallPhoneService;
  42. @Autowired
  43. private ICcCallTaskService ccCallTaskService;
  44. @RequiresPermissions("aicall:callPhone:view")
  45. @GetMapping()
  46. public String callPhone()
  47. {
  48. return prefix + "/callPhone";
  49. }
  50. /**
  51. * 查询外呼号码列表
  52. */
  53. @RequiresPermissions("aicall:callPhone:list")
  54. @PostMapping("/list")
  55. @ResponseBody
  56. public TableDataInfo list(CcCallPhone ccCallPhone)
  57. {
  58. startPage();
  59. List<CcCallPhone> list = ccCallPhoneService.selectCcCallPhoneList(ccCallPhone);
  60. TableDataInfo tableDataInfo = getDataTable(list);
  61. List<CcCallPhone> records = (List<CcCallPhone>) tableDataInfo.getRows();
  62. Map<Long, String> batchNameMap = new HashMap<>();
  63. for (CcCallPhone data: records) {
  64. if (data.getWavfile().startsWith("/")) {
  65. data.setWavfile(data.getWavfile().substring(1));
  66. }
  67. data.setWavfile("/recordings/files?filename=" + data.getWavfile());
  68. String batchName = batchNameMap.getOrDefault(data.getBatchId(), "");
  69. if (StringUtils.isBlank(batchName)) {
  70. CcCallTask ccCallTask = ccCallTaskService.selectCcCallTaskByBatchId(data.getBatchId());
  71. if (null != ccCallTask) {
  72. batchName = ccCallTask.getBatchName();
  73. } else {
  74. batchName = "-";
  75. }
  76. batchNameMap.put(data.getBatchId(), batchName);
  77. }
  78. data.setBatchName(batchName);
  79. }
  80. tableDataInfo.setRows(records);
  81. return tableDataInfo;
  82. }
  83. /**
  84. * 导出外呼号码列表
  85. */
  86. @RequiresPermissions("aicall:callPhone:export")
  87. @Log(title = "外呼号码", businessType = BusinessType.EXPORT)
  88. @PostMapping("/export")
  89. @ResponseBody
  90. public AjaxResult export(CcCallPhone ccCallPhone)
  91. {
  92. List<CcCallPhone> list = ccCallPhoneService.selectCcCallPhoneList(ccCallPhone);
  93. Date d0 = DateUtils.dateTime( "yyyy-MM-dd", "2025-01-01");
  94. Map<Long, String> batchNameMap = new HashMap<>();
  95. List<CallPhoneExportVo> dataList = new ArrayList<>();
  96. for (CcCallPhone data: list) {
  97. String batchName = batchNameMap.getOrDefault(data.getBatchId(), "");
  98. if (StringUtils.isBlank(batchName)) {
  99. CcCallTask ccCallTask = ccCallTaskService.selectCcCallTaskByBatchId(data.getBatchId());
  100. if (null != ccCallTask) {
  101. batchName = ccCallTask.getBatchName();
  102. } else {
  103. batchName = "-";
  104. }
  105. batchNameMap.put(data.getBatchId(), batchName);
  106. }
  107. data.setBatchName(batchName);
  108. CallPhoneExportVo vo = new CallPhoneExportVo();
  109. BeanUtils.copyProperties(data, vo);
  110. vo.setCallstatusName(MessageUtils.message("callPhone.table.callstatus" + data.getCallstatus()));
  111. if (data.getCalloutTime() <= d0.getTime()) {
  112. vo.setCalloutTimeStr("-");
  113. } else {
  114. vo.setCalloutTimeStr(DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", new Date(data.getCalloutTime())));
  115. }
  116. if (data.getAnsweredTime() <= d0.getTime()) {
  117. vo.setAnsweredTimeStr("-");
  118. } else {
  119. vo.setAnsweredTimeStr(DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", new Date(data.getAnsweredTime())));
  120. }
  121. if (data.getCallEndTime() <= d0.getTime()) {
  122. vo.setCallEndTimeStr("-");
  123. } else {
  124. vo.setCallEndTimeStr(DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", new Date(data.getCallEndTime())));
  125. }
  126. Long timeLen = data.getTimeLen()/1000;
  127. vo.setTimeLenSec(timeLen/60 + "分" + timeLen%60 + "秒" );
  128. dataList.add(vo);
  129. }
  130. ExcelUtil<CallPhoneExportVo> util = new ExcelUtil<>(CallPhoneExportVo.class);
  131. return util.exportExcel(dataList, "外呼结果数据");
  132. }
  133. /**
  134. * 新增外呼号码
  135. */
  136. @GetMapping("/add")
  137. public String add()
  138. {
  139. return prefix + "/add";
  140. }
  141. /**
  142. * 新增保存外呼号码
  143. */
  144. @RequiresPermissions("aicall:callPhone:add")
  145. @Log(title = "外呼号码", businessType = BusinessType.INSERT)
  146. @PostMapping("/add")
  147. @ResponseBody
  148. public AjaxResult addSave(CcCallPhone ccCallPhone)
  149. {
  150. return toAjax(ccCallPhoneService.insertCcCallPhone(ccCallPhone));
  151. }
  152. /**
  153. * 修改外呼号码
  154. */
  155. @RequiresPermissions("aicall:callPhone:edit")
  156. @GetMapping("/edit/{id}")
  157. public String edit(@PathVariable("id") String id, ModelMap mmap)
  158. {
  159. CcCallPhone ccCallPhone = ccCallPhoneService.selectCcCallPhoneById(id);
  160. mmap.put("ccCallPhone", ccCallPhone);
  161. return prefix + "/edit";
  162. }
  163. /**
  164. * 修改保存外呼号码
  165. */
  166. @RequiresPermissions("aicall:callPhone:edit")
  167. @Log(title = "外呼号码", businessType = BusinessType.UPDATE)
  168. @PostMapping("/edit")
  169. @ResponseBody
  170. public AjaxResult editSave(CcCallPhone ccCallPhone)
  171. {
  172. return toAjax(ccCallPhoneService.updateCcCallPhone(ccCallPhone));
  173. }
  174. /**
  175. * 删除外呼号码
  176. */
  177. @RequiresPermissions("aicall:callPhone:remove")
  178. @Log(title = "外呼号码", businessType = BusinessType.DELETE)
  179. @PostMapping( "/remove")
  180. @ResponseBody
  181. public AjaxResult remove(String ids)
  182. {
  183. return toAjax(ccCallPhoneService.deleteCcCallPhoneByIds(ids));
  184. }
  185. }