package com.ruoyi.web.controller.smartor; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DtoConversionUtils; import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.smartor.domain.*; import com.smartor.service.IIvrTaskcallService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * 单一任务(随访)Controller * * @author ruoyi * @date 2024-02-02 */ @Api(description = "单一任务(随访宣教)") @RestController @RequestMapping("/smartor/taskcall") public class IvrTaskcallController extends BaseController { @Autowired private IIvrTaskcallService ivrTaskcallService; /** * 查询单一任务(随访)列表 */ @ApiOperation("查询单一任务(随访宣教)列表") @PreAuthorize("@ss.hasPermi('system:taskcall:list')") @PostMapping("/list") public TableDataInfo list(@RequestBody IvrTaskcall ivrTaskcall) { PageUtils.startPageByPost(ivrTaskcall.getPageNum(), ivrTaskcall.getPageSize()); List list = ivrTaskcallService.selectIvrTaskcallList(ivrTaskcall); return getDataTable(list); } /** * 导出单一任务(随访宣教)列表 */ @PreAuthorize("@ss.hasPermi('system:taskcall:export')") @Log(title = "单一任务(随访宣教)", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, IvrTaskcall ivrTaskcall) { List list = ivrTaskcallService.selectIvrTaskcallList(ivrTaskcall); ExcelUtil util = new ExcelUtil(IvrTaskcall.class); util.exportExcel(response, list, "单一任务(随访)数据"); } /** * 获取单一任务(随访)详细信息 */ @PreAuthorize("@ss.hasPermi('system:taskcall:query')") @GetMapping(value = "/getInfo/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { return success(ivrTaskcallService.selectIvrTaskcallById(id)); } /** * 新增或修改删除单一任务 */ @ApiOperation("新增或修改删除单一任务") @PreAuthorize("@ss.hasPermi('system:task:add')") @Log(title = "单一任务(随访)", businessType = BusinessType.INSERT) @PostMapping("/insertOrUpdateTask") public AjaxResult insertOrUpdateHeTask(@RequestBody IvrTaskcallVO ivrTaskcallVO) { return toAjax(ivrTaskcallService.insertOrUpdateTask(ivrTaskcallVO)); } /** * 根据条件查询任务信息 */ @ApiOperation("根据条件查询任务信息") @PostMapping("/queryTaskByCondition") public AjaxResult queryTaskByCondition(@RequestBody IvrTaskcallVO ivrTaskcallVO) { //根据入参查询信息 IvrTaskcall ivrTaskcall = DtoConversionUtils.sourceToTarget(ivrTaskcallVO, IvrTaskcall.class); List list = ivrTaskcallService.selectIvrTaskcallList(ivrTaskcall); //定义患者与单一任务关联表集合 List patTaskRelevances = new ArrayList<>(); //将查出来的数据倒入IvrTaskcallVO中 IvrTaskcallVO ivrTaskcallVO2 = DtoConversionUtils.sourceToTarget(list.get(0), IvrTaskcallVO.class); String sendTimeSlot = list.get(0).getSendTimeSlot(); ObjectMapper objectMapper = new ObjectMapper(); try { //获取到发送时间的集合 if (StringUtils.isNotEmpty(sendTimeSlot)) { List taskSendTimeVOList = objectMapper.readValue(sendTimeSlot, List.class); ivrTaskcallVO2.setSendTimeslot(taskSendTimeVOList); } //文本变量参数 if (StringUtils.isNotEmpty(list.get(0).getTextParam())) { Map> textParam = objectMapper.readValue(list.get(0).getTextParam(), Map.class); ivrTaskcallVO2.setTextParam(textParam); } } catch (JsonProcessingException e) { e.printStackTrace(); } for (IvrTaskcall ivrTaskcall1 : list) { PatTaskRelevance patTaskRelevance = new PatTaskRelevance(); //获取到患者信息,并放入到集合中 patTaskRelevance.setName(ivrTaskcall1.getSendname()); patTaskRelevance.setAge(ivrTaskcall1.getAge()); patTaskRelevance.setSfzh(ivrTaskcall1.getSfzh()); patTaskRelevance.setPhone(ivrTaskcall1.getPhone()); patTaskRelevance.setAddr(ivrTaskcall1.getAddr()); patTaskRelevances.add(patTaskRelevance); } ivrTaskcallVO2.setPatTaskRelevances(patTaskRelevances); return success(ivrTaskcallVO2); } /** * 任务发送执行 */ @ApiOperation("任务发送执行") @PostMapping("/heTaskSend") public AjaxResult heTaskSend(@RequestBody IvrTaskcallVO ivrTaskcallVO) { return toAjax(ivrTaskcallService.heTaskSend(ivrTaskcallVO)); } /** * 电话回调任务 */ @ApiOperation("电话回调任务") @PostMapping("/phoneCallBack") public AjaxResult phoneCallBack(@RequestBody PhoneCallBackVO phoneCallBackVO) { //如果uuid在redis中找不到,那就直接报异常 return success(ivrTaskcallService.phoneCallBack(phoneCallBackVO)); } }