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.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.DtoConversionUtils; import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.utils.RSAPublicKeyExample; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.smartor.common.SendService; import com.smartor.domain.*; import com.smartor.service.IServiceSubtaskService; import com.smartor.service.IServiceTaskService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.util.List; import java.util.stream.Collectors; /** * 随访任务Controller * * @author smartor * @date 2023-03-24 */ @Slf4j @Api(description = "随访任务") @RestController @RequestMapping("/smartor/servicetask") public class ServiceTaskController extends BaseController { @Autowired private IServiceTaskService serviceTaskService; @Autowired private IServiceSubtaskService iServiceTaskCallService; @Value("${pub_key}") private String pub_key; @Value("${pri_key}") private String pri_key; @Autowired private RSAPublicKeyExample rsaPublicKeyExample; @Autowired private SendService sendService; @PostMapping("/test") public TableDataInfo test(@RequestBody SendMagParam sendMagParam) { try { Boolean aBoolean = sendService.sendMsg(sendMagParam); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 查询语音任务列表 */ @ApiOperation("查询任务列表") //@PreAuthorize("@ss.hasPermi('smartor:ServiceTask:list')") @PostMapping("/list") public TableDataInfo list(@RequestBody ServiceTask serviceTask) { PageUtils.startPageByPost(serviceTask.getPageNum(), serviceTask.getPageSize()); // List list = serviceTaskService.selectServiceTaskList(serviceTask); List list = serviceTaskService.selectServiceTaskAndtaskDeptList(serviceTask); List serviceTaskVOS = DtoConversionUtils.sourceToTarget(list, ServiceTaskVO.class); if (CollectionUtils.isNotEmpty(serviceTaskVOS)) { for (ServiceTaskVO ServiceTaskVO : serviceTaskVOS) { ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO(); serviceSubtaskVO.setTaskid(ServiceTaskVO.getTaskid()); serviceSubtaskVO.setStartOutHospTime(serviceTask.getStartOutHospTime()); serviceSubtaskVO.setEndOutHospTime(serviceTask.getEndOutHospTime()); List ServiceTaskcalls = iServiceTaskCallService.selectServiceSubtaskList(serviceSubtaskVO); if (CollectionUtils.isNotEmpty(ServiceTaskcalls)) { //已发送 long yfs = ServiceTaskcalls.stream().filter(serviceTaskcall1 -> serviceTaskcall1.getSendstate() != null && serviceTaskcall1.getSendstate() == 3L).collect(Collectors.toList()).stream().count(); //未发送 long wfs = ServiceTaskcalls.stream().filter(serviceTaskcall1 -> serviceTaskcall1.getSendstate() != null && serviceTaskcall1.getSendstate() == 2L).collect(Collectors.toList()).stream().count(); ServiceTaskVO.setYfs(yfs); ServiceTaskVO.setWfs(wfs); } } //获取total long total = PageUtils.count(new ISelect() { @Override public void doSelect() { serviceTask.setPageNum(null); serviceTask.setPageSize(null); serviceTaskService.selectServiceTaskList(serviceTask); } }); return getDataTable2(total, serviceTaskVOS); } return getDataTable2(0, serviceTaskVOS); } /** * 导出任务列表 */ @ApiOperation("导出任务列表") //@PreAuthorize("@ss.hasPermi('smartor:ServiceTask:export')") @Log(title = "语音任务", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, ServiceTask ServiceTask) { List list = serviceTaskService.selectServiceTaskList(ServiceTask); ExcelUtil util = new ExcelUtil(ServiceTask.class); util.exportExcel(response, list, "语音任务数据"); } /** * 获取任务详细信息 */ @ApiOperation("获取任务详细信息") //@PreAuthorize("@ss.hasPermi('smartor:ServiceTask:query')") @GetMapping(value = "/{taskid}") public AjaxResult getInfo(@PathVariable("taskid") Long taskid) { return success(serviceTaskService.selectServiceTaskByTaskid(taskid)); } /** * 新增任务 */ @ApiOperation("新增任务") //@PreAuthorize("@ss.hasPermi('smartor:ServiceTask:add')") @Log(title = "语音任务", businessType = BusinessType.INSERT) @PostMapping("/add") public AjaxResult add(@RequestBody ServiceTask ServiceTask) { SysUser user = getLoginUser().getUser(); ServiceTask.setOrgid(user.getOrgid()); return toAjax(serviceTaskService.insertServiceTask(ServiceTask)); } /** * 修改语音任务 */ @ApiOperation("修改任务") //@PreAuthorize("@ss.hasPermi('smartor:ServiceTask:edit')") @Log(title = "任务", businessType = BusinessType.UPDATE) @PostMapping("/edit") public AjaxResult edit(@RequestBody ServiceTask ServiceTask) { return toAjax(serviceTaskService.updateServiceTask(ServiceTask)); } // /** // * 删除语音任务 // */ // @ApiOperation("删除任务") // //@PreAuthorize("@ss.hasPermi('smartor:ServiceTask:remove')") // @Log(title = "语音任务", businessType = BusinessType.DELETE) // @GetMapping("/remove/{taskids}") // public AjaxResult remove(@PathVariable Long[] taskids) { // return toAjax(ServiceTaskService.deleteServiceTaskByTaskids(taskids)); // } // /** * 删除任务(包括它对应的患者信息) */ @ApiOperation("删除任务(包括它对应的患者信息)") //@PreAuthorize("@ss.hasPermi('smartor:ServiceTask:remove')") @Log(title = "语音任务", businessType = BusinessType.DELETE) @GetMapping("/remove/{taskId}") public AjaxResult removeTask(@PathVariable("taskId") String taskId) { if (StringUtils.isEmpty(taskId)) { AjaxResult.error("入参不能为空"); } Long tid = Long.valueOf(taskId); return toAjax(serviceTaskService.deleteServiceTaskByTaskid(tid)); } /** * 通过任务ID和患者ID获取单个人的题目信息 * * @return */ @ApiOperation("通过任务ID和患者ID获取单个人的题目信息") @PostMapping("/getScriptInfoByCondition") public AjaxResult getScriptInfoByCondition(@RequestBody ServiceTaskScriptQues serviceTaskScriptQues) { Long tid = null; Long pid = null; log.error("getScriptInfoByCondition入参为:{}", serviceTaskScriptQues); try { tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceTaskScriptQues.getParam1(), pri_key)); pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceTaskScriptQues.getParam2(), pri_key)); } catch (Exception e) { log.error("getScriptInfoByCondition报错了:{}", e.getMessage()); } log.error("tid和pid的值为:{},{}", tid, pid); if (StringUtils.isEmpty(serviceTaskScriptQues.getPatfrom())) serviceTaskScriptQues.setPatfrom("0"); return success(serviceTaskService.getScriptInfoByCondition(tid, pid, true, serviceTaskScriptQues.getPatfrom())); } /** * 通过任务ID和患者ID获取单个人的题目信息 * * @return */ @ApiOperation("通过任务ID和患者ID获取单个人的题目信息(小程序)") @PostMapping("/getScriptInfoByConditionXCH") public AjaxResult getScriptInfoByConditionXCH(@RequestBody ServiceTaskScriptQues serviceTaskScriptQues) { Long tid = null; Long pid = null; log.error("getScriptInfoByCondition入参为:{}", serviceTaskScriptQues); try { tid = Long.valueOf(serviceTaskScriptQues.getParam1()); pid = Long.valueOf(serviceTaskScriptQues.getParam2()); } catch (Exception e) { log.error("getScriptInfoByCondition报错了:{}", e.getMessage()); } log.error("tid和pid的值为:{},{}", tid, pid); if (StringUtils.isEmpty(serviceTaskScriptQues.getPatfrom())) serviceTaskScriptQues.setPatfrom("0"); return success(serviceTaskService.getScriptInfoByCondition(tid, pid, true, serviceTaskScriptQues.getPatfrom())); } }