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.poi.ExcelUtil; import com.smartor.domain.*; import com.smartor.service.IServiceSubtaskService; import com.smartor.service.ISvyTaskService; import com.smartor.service.ISvyTaskSingleService; 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.util.List; import java.util.stream.Collectors; /** * 问卷任务(任务)Controller * * @author ruoyi * @date 2024-06-12 */ @Slf4j @Api(description = " 问卷任务(任务)") @RestController @RequestMapping("/smartor/svytask") public class SvyTaskController extends BaseController { @Autowired private ISvyTaskService svyTaskService; // // @Autowired // private ISvyTaskSingleService iSvyTaskSingleService; @Autowired private IServiceSubtaskService serviceSubtaskService; @Value("${pub_key}") private String pub_key; @Value("${pri_key}") private String pri_key; /** * 查询问卷任务(任务)列表 */ @ApiOperation("查询问卷任务(任务)列表") //@PreAuthorize("@ss.hasPermi('system:task:list')") @PostMapping("/list") public TableDataInfo list(@RequestBody SvyTask svyTask) { PageUtils.startPageByPost(svyTask.getPageNum(), svyTask.getPageSize()); List list = svyTaskService.selectSvyTaskList(svyTask); List svyTaskVOS = DtoConversionUtils.sourceToTarget(list, SvyTaskVO.class); if (CollectionUtils.isNotEmpty(svyTaskVOS)) { for (SvyTaskVO svyTaskVO : svyTaskVOS) { ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO(); serviceSubtaskVO.setTaskid(svyTaskVO.getTaskid()); List svyTaskSingles = serviceSubtaskService.selectServiceSubtaskList(serviceSubtaskVO); if (CollectionUtils.isNotEmpty(svyTaskSingles)) { //已发送 long yfs = svyTaskSingles.stream().filter(svyTaskcall1 -> svyTaskcall1.getSendstate() != null && svyTaskcall1.getSendstate() == 3L).collect(Collectors.toList()).stream().count(); //未发送 long wfs = svyTaskSingles.stream().filter(svyTaskcall1 -> svyTaskcall1.getSendstate() != null && svyTaskcall1.getSendstate() == 2L).collect(Collectors.toList()).stream().count(); svyTaskVO.setYfs(yfs); svyTaskVO.setWfs(wfs); } } //获取total long total = PageUtils.count(new ISelect() { @Override public void doSelect() { svyTask.setPageNum(null); svyTask.setPageSize(null); svyTaskService.selectSvyTaskList(svyTask); } }); return getDataTable2(total, svyTaskVOS); } return getDataTable2(0, list); } /** * 导出问卷任务(任务)列表 */ @ApiOperation("导出问卷任务(任务)列表") //@PreAuthorize("@ss.hasPermi('system:task:export')") @Log(title = "综合问卷任务(任务)", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, SvyTask svyTask) { List list = svyTaskService.selectSvyTaskList(svyTask); ExcelUtil util = new ExcelUtil(SvyTask.class); util.exportExcel(response, list, "综合问卷任务(任务)数据"); } /** * 获取问卷任务(任务)详细信息 */ @ApiOperation("获取问卷任务(任务)详细信息") //@PreAuthorize("@ss.hasPermi('system:task:query')") @GetMapping(value = "/{taskid}") public AjaxResult getInfo(@PathVariable("taskid") Long taskid) { return success(svyTaskService.selectSvyTaskByTaskid(taskid)); } /** * 新增问卷任务(任务) */ @ApiOperation("新增问卷任务(任务)") //@PreAuthorize("@ss.hasPermi('system:task:add')") @Log(title = "综合问卷任务(任务)", businessType = BusinessType.INSERT) @PostMapping("/add") public AjaxResult add(@RequestBody SvyTask svyTask) { SysUser user = getLoginUser().getUser(); svyTask.setOrgid(user.getOrgid()); return toAjax(svyTaskService.insertSvyTask(svyTask)); } /** * 修改问卷任务(任务) */ @ApiOperation("修改问卷任务(任务)") //@PreAuthorize("@ss.hasPermi('system:task:edit')") @Log(title = "综合问卷任务(任务)", businessType = BusinessType.UPDATE) @PostMapping("/edit") public AjaxResult edit(@RequestBody SvyTask svyTask) { return toAjax(svyTaskService.updateSvyTask(svyTask)); } /** * 删除问卷任务(任务) */ @ApiOperation("删除问卷任务(任务)") //@PreAuthorize("@ss.hasPermi('system:task:remove')") @Log(title = "问卷任务(任务)", businessType = BusinessType.DELETE) @GetMapping("/{taskids}") public AjaxResult remove(@PathVariable Long[] taskids) { return toAjax(svyTaskService.deleteSvyTaskByTaskids(taskids)); } /** * 通过任务ID和患者ID获取单个人的题目信息 * * @return */ @ApiOperation("通过任务ID和患者ID获取单个人的题目信息") @PostMapping("/getSvyScriptInfoByCondition") public TableDataInfo getScriptInfoByCondition(@RequestBody ServiceTaskScriptQues ivrTaskScriptQues) { RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample(); Long tid = Long.valueOf(rsaPublicKeyExample.decryptedData(ivrTaskScriptQues.getParam1(), pri_key)); Long pid = Long.valueOf(rsaPublicKeyExample.decryptedData(ivrTaskScriptQues.getParam2(), pri_key)); log.info("tid和pid的值为:{},{}", tid, pid); return getDataTable(svyTaskService.getScriptInfoByCondition(tid, pid)); } }