package com.ruoyi.web.controller.smartor; import com.github.pagehelper.ISelect; 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.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.PreachFormEnum; import com.ruoyi.common.utils.DtoConversionUtils; import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.smartor.domain.*; import com.smartor.mapper.PatMedInhospMapper; import com.smartor.mapper.PatMedOuthospMapper; import com.smartor.service.IServiceSubtaskRecordService; import com.smartor.service.IServiceSubtaskService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Autowired; 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 */ @Slf4j @Api(description = "单一任务(随访宣教)") @RestController @RequestMapping("/smartor/serviceSubtask") public class ServiceSubtaskController extends BaseController { @Autowired private IServiceSubtaskService serviceSubtaskService; @Autowired private IServiceSubtaskRecordService serviceSubtaskRecordService; /** * 查询患者随访信息 */ @ApiOperation("查询患者随访信息") //@PreAuthorize("@ss.hasPermi('system:taskcall:list')") @PostMapping("/patItem") public TableDataInfo patItem(@RequestBody ServiceSubtaskVO serviceSubtaskVO) { List serviceSubtaskList = null; if (serviceSubtaskVO != null) { PageUtils.startPageByPost(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize()); serviceSubtaskList = serviceSubtaskService.patItem(serviceSubtaskVO); } for (ServiceSubtask serviceSubtask : serviceSubtaskList) { ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord(); serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId()); if (ObjectUtils.isNotEmpty((serviceSubtask.getTaskid()))) serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString()); serviceSubtask.setServiceSubtaskRecordList(serviceSubtaskRecordService.selectServiceSubtaskRecordList(serviceSubtaskRecord)); } Map map = serviceSubtaskService.patItemCount(serviceSubtaskVO); map.put("serviceSubtaskList", serviceSubtaskList); List> list = new ArrayList<>(); list.add(map); //获取total long total = PageUtils.count(new ISelect() { @Override public void doSelect() { serviceSubtaskVO.setPageNum(null); serviceSubtaskVO.setPageSize(null); serviceSubtaskService.patItem(serviceSubtaskVO); } }); return getDataTable2(total, list); // return getDataTable(serviceSubtaskService.patItem(ivrTaskcall)); } /** * 导出单一任务(随访宣教)列表 */ //@PreAuthorize("@ss.hasPermi('system:taskcall:export')") @Log(title = "单一任务(随访宣教)", businessType = BusinessType.EXPORT) @PostMapping("/patItemExport") public void patItemExport(HttpServletResponse response, @RequestBody ServiceSubtaskVO serviceSubtaskVO) { List serviceSubtaskList = null; if (serviceSubtaskVO != null) { if (serviceSubtaskVO.getPageNum() != null && serviceSubtaskVO.getPageSize() != null) PageUtils.startPageByPost(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize()); serviceSubtaskList = serviceSubtaskService.patItem(serviceSubtaskVO); } List serviceSubtaskExprots = null; if (!CollectionUtils.isEmpty(serviceSubtaskList)) { serviceSubtaskExprots = DtoConversionUtils.sourceToTarget(serviceSubtaskList, ServiceSubtaskExprot.class); for (ServiceSubtaskExprot serviceSubtaskExprot : serviceSubtaskExprots) { String pf = PreachFormEnum.getDescByCode(serviceSubtaskExprot.getPreachform()); serviceSubtaskExprot.setPreachform(pf); } } ExcelUtil util = new ExcelUtil(ServiceSubtaskExprot.class); util.exportExcel(response, serviceSubtaskExprots, "患者随访信息表单"); } /** * 查询患者随访信息 */ @ApiOperation("查询患者随访信息") //@PreAuthorize("@ss.hasPermi('system:taskcall:list')") @PostMapping("/patItemByCondition") public TableDataInfo patItemByCondition(@RequestBody ServiceSubtaskVO serviceSubtaskVO) { List serviceSubtaskList = null; if (serviceSubtaskVO != null) { PageUtils.startPageByPost(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize()); serviceSubtaskList = serviceSubtaskService.patItem2(serviceSubtaskVO); } for (ServiceSubtask serviceSubtask : serviceSubtaskList) { ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord(); serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId()); serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString()); serviceSubtask.setServiceSubtaskRecordList(serviceSubtaskRecordService.selectServiceSubtaskRecordList(serviceSubtaskRecord)); } Map map = serviceSubtaskService.patItemCount(serviceSubtaskVO); map.put("serviceSubtaskList", serviceSubtaskList); List> list = new ArrayList<>(); list.add(map); //获取total long total = PageUtils.count(new ISelect() { @Override public void doSelect() { serviceSubtaskVO.setPageNum(null); serviceSubtaskVO.setPageSize(null); serviceSubtaskService.patItem2(serviceSubtaskVO); } }); return getDataTable2(total, list); } /** * 导出单一任务(随访宣教)列表 */ //@PreAuthorize("@ss.hasPermi('system:taskcall:export')") @Log(title = "单一任务(随访宣教)", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, ServiceSubtask serviceSubtask) { ServiceSubtaskVO serviceSubtaskVO = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtaskVO.class); List list = serviceSubtaskService.selectServiceSubtaskList(serviceSubtaskVO); ExcelUtil util = new ExcelUtil(ServiceSubtask.class); util.exportExcel(response, list, "单一任务(随访)数据"); } /** * 获取单一任务(随访)详细信息 */ //@PreAuthorize("@ss.hasPermi('system:taskcall:query')") @GetMapping(value = "/getInfo/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { return success(serviceSubtaskService.selectServiceSubtaskById(id)); } /** * 新增或修改删除单一任务 */ @ApiOperation("新增或修改删除单一任务") //@PreAuthorize("@ss.hasPermi('system:task:add')") @Log(title = "单一任务(随访)", businessType = BusinessType.INSERT) @PostMapping("/insertOrUpdateTask") public AjaxResult insertOrUpdateHeTask(@RequestBody ServiceTaskVO ivrTaskVO) { log.error("insertOrUpdateHeTask的入参为:{}", ivrTaskVO); LoginUser loginUser = getLoginUser(); SysUser user = loginUser.getUser(); ivrTaskVO.setCreateBy(user.getNickName()); ivrTaskVO.setUpdateBy(user.getNickName()); ivrTaskVO.setOrgid(user.getOrgid()); return success(serviceSubtaskService.insertOrUpdateTask(ivrTaskVO)); } @ApiOperation("修改子任务") @PostMapping("/update") public AjaxResult update(@RequestBody ServiceSubtask serviceSubtask) { serviceSubtask.setUpdateBy(getLoginUser().getUser().getNickName()); return toAjax(serviceSubtaskService.updateServiceSubtask(serviceSubtask)); } @ApiOperation("新增子任务") @PostMapping("/addSubTask") public AjaxResult addSubTask(@RequestBody ServiceSubtask serviceSubtask) { SysUser user = getLoginUser().getUser(); if (ObjectUtils.isNotEmpty(user)) serviceSubtask.setOrgid(user.getOrgid()); return toAjax(serviceSubtaskService.insertServiceSubtask(serviceSubtask)); } @ApiOperation("患者再次随访") @PostMapping("/addSubTaskAgain") public AjaxResult addSubTaskAgain(@RequestBody ServiceSubtask serviceSubtask) { SysUser user = getLoginUser().getUser(); if (ObjectUtils.isNotEmpty(user)) serviceSubtask.setOrgid(user.getOrgid()); return success(serviceSubtaskService.addSubTaskAgain(serviceSubtask)); } /** * 根据条件查询任务信息 */ @ApiOperation("根据条件查询任务信息") @PostMapping("/queryTaskByCondition") public AjaxResult queryTaskByCondition(@RequestBody ServiceSubtaskVO ivrTaskcallVO) { //根据入参查询信息 ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(ivrTaskcallVO, ServiceSubtask.class); ServiceTaskVO ivrTaskVO = serviceSubtaskService.queryTaskByCondition(serviceSubtask); return success(ivrTaskVO); } /** * 电话回调任务(上海) */ @ApiOperation("电话回调任务") @PostMapping("/phoneCallBack") public AjaxResult phoneCallBack(@RequestBody PhoneCallBackVO phoneCallBackVO) { serviceSubtaskService.phoneCallBack(phoneCallBackVO); return success(); } @ApiOperation("电话ASR通话回调(雨绮)") @PostMapping("/phoneCallBackYQ") public PhoneCallBackYQVO phoneCallBackYQ(@RequestBody PhoneCallReqYQVO phoneCallReqYQVO) { log.error("电话ASR通话回调(雨绮) ?{}", phoneCallReqYQVO); // SysUser user = getLoginUser().getUser(); // phoneCallReqYQVO.setOrgid(user.getOrgid()); PhoneCallBackYQVO phoneCallBackYQVO = serviceSubtaskService.phoneCallBackYQ(phoneCallReqYQVO); return phoneCallBackYQVO; } /** * 电话任务拉取(雨绮) */ @ApiOperation("电话任务拉取(雨绮)") @PostMapping("/taskPull") public List taskPull() { log.error("电话任务拉取(雨绮)"); List pullTaskVOList = serviceSubtaskService.taskPull(); // List pullTaskVOList = new ArrayList<>(); log.error("电话任务拉取(雨绮):{}", pullTaskVOList); return pullTaskVOList; } /** * 患者问题结果记录 */ @ApiOperation("患者问题结果记录(电话)") @PostMapping("/saveQuestionAnswerPhone") public AjaxResult saveQuestionAnswerPhone(@RequestBody ServiceSubTaskDetailReq serviceSubTaskDetailReq) { // SysUser user = getLoginUser().getUser(); // serviceSubTaskDetailReq.setOrgid(user.getOrgid()); return toAjax(serviceSubtaskService.saveQuestionAnswerPhone(serviceSubTaskDetailReq)); } /** * 通话记录回调 */ @ApiOperation("通话记录回调(上海)") @PostMapping("/recordAcceptshanghai") public AjaxResult recordAccepshanghait(@RequestBody ServiceSubTaskDetailReq serviceSubTaskDetailReq) { return toAjax(serviceSubtaskService.saveQuestionAnswerPhone(serviceSubTaskDetailReq)); } /** * 通话记录回调 */ @ApiOperation("通话记录回调(雨绮)") @PostMapping("/recordAccept") public AjaxResult recordAccept(@RequestBody PhoneCallRecordVO phoneCallRecordVO) { log.error("通话记录回调(雨绮):{}", phoneCallRecordVO); // return toAjax(serviceSubtaskService.saveQuestionAnswerPhone(serviceSubTaskDetailReq)); // SysUser user = getLoginUser().getUser(); // phoneCallRecordVO.setOrgid(user.getOrgid()); serviceSubtaskService.recordAccept(phoneCallRecordVO); return success(); } /** * 获取每个月的随访、复诊量 */ @ApiOperation("获取每个月的随访、复诊量") @PostMapping("/getSfFzInfoEveryMonth") public TableDataInfo getSfFzInfoEveryMonth(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) { return getDataTable(serviceSubtaskService.getSfFzInfoEveryMonth(serviceSubtaskCountReq)); } /** * 获取随访统计比例 */ @ApiOperation("获取随访统计比例") @PostMapping("/getSfStatistics") public AjaxResult getSfStatistics(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) { if (CollectionUtils.isEmpty(serviceSubtaskCountReq.getServiceType())) { return error("服务类型不能为空"); } return success(serviceSubtaskService.getSfStatistics(serviceSubtaskCountReq)); } /** * 随访统计导出 */ //@PreAuthorize("@ss.hasPermi('system:taskcall:export')") @Log(title = "随访统计导出)", businessType = BusinessType.EXPORT) @PostMapping("/getSfStatisticsExport") public void export(HttpServletResponse response, ServiceSubtaskCountReq serviceSubtaskCountReq) { List sfStatistics = serviceSubtaskService.getSfStatistics(serviceSubtaskCountReq); ExcelUtil util = new ExcelUtil(ServiceSubtaskStatistic.class); util.exportExcel(response, sfStatistics, "随访统计导出"); } }