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.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.web.bind.annotation.*; 
 | 
  
 | 
import javax.servlet.http.HttpServletResponse; 
 | 
import java.util.List; 
 | 
import java.util.Map; 
 | 
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; 
 | 
  
 | 
    /** 
 | 
     * 查询语音任务列表 
 | 
     */ 
 | 
    @ApiOperation("查询任务列表") 
 | 
    //@PreAuthorize("@ss.hasPermi('smartor:ServiceTask:list')") 
 | 
    @PostMapping("/list") 
 | 
    public TableDataInfo list(@RequestBody ServiceTask serviceTask) { 
 | 
        PageUtils.startPageByPost(serviceTask.getPageNum(), serviceTask.getPageSize()); 
 | 
//        List<ServiceTask> list = serviceTaskService.selectServiceTaskList(serviceTask); 
 | 
        List<ServiceTask> list = serviceTaskService.selectServiceTaskAndtaskDeptList(serviceTask); 
 | 
        List<ServiceTaskVO> 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<ServiceSubtask> ServiceTaskcalls = iServiceTaskCallService.selectServiceSubtaskList(serviceSubtaskVO); 
 | 
                if (CollectionUtils.isNotEmpty(ServiceTaskcalls)) { 
 | 
                    //已发送(子任务中的 sendstate=1为被领取) 
 | 
                    long yfs = ServiceTaskcalls.stream().filter(serviceTaskcall1 -> (serviceTaskcall1.getSendstate() != null && serviceTaskcall1.getSendstate() >= 3L) || (serviceTaskcall1.getSendstate() != null && serviceTaskcall1.getSendstate() == 1L)).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.selectServiceTaskAndtaskDeptList(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<ServiceTask> list = serviceTaskService.selectServiceTaskList(ServiceTask); 
 | 
        ExcelUtil<ServiceTask> util = new ExcelUtil<ServiceTask>(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:add')") 
 | 
    @Log(title = "获取随访及时率", businessType = BusinessType.INSERT) 
 | 
    @PostMapping("/selectTimelyRate") 
 | 
    public AjaxResult selectTimelyRate(@RequestBody ServiceSubtask serviceSubtask) { 
 | 
        SysUser user = getLoginUser().getUser(); 
 | 
        serviceSubtask.setOrgid(user.getOrgid()); 
 | 
        return success(serviceTaskService.selectTimelyRate(serviceSubtask)); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 修改语音任务 
 | 
     */ 
 | 
    @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.info("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.info("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.info("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和诊疗记录号获取单个人的题目信息") 
 | 
    @PostMapping("/getScriptByCondition") 
 | 
    public AjaxResult getScriptByCondition(@RequestBody ServiceTaskScriptQues serviceTaskScriptQues) { 
 | 
        RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample(); 
 | 
        Long taskId = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceTaskScriptQues.getParam1(), pri_key)); 
 | 
        String zyserialnum = null; 
 | 
        String mzserialnum = null; 
 | 
        String tsserialnum = null; 
 | 
        if (StringUtils.isNotEmpty(serviceTaskScriptQues.getParam2())) 
 | 
            zyserialnum = rsaPublicKeyExample.decryptedData(serviceTaskScriptQues.getParam2(), pri_key); 
 | 
        if (StringUtils.isNotEmpty(serviceTaskScriptQues.getParam3())) 
 | 
            mzserialnum = rsaPublicKeyExample.decryptedData(serviceTaskScriptQues.getParam3(), pri_key); 
 | 
        if (StringUtils.isNotEmpty(serviceTaskScriptQues.getParam4())) 
 | 
            tsserialnum = rsaPublicKeyExample.decryptedData(serviceTaskScriptQues.getParam4(), pri_key); 
 | 
        Map<String, Object> scriptByCondition = serviceTaskService.getScriptByCondition(taskId, zyserialnum, mzserialnum, tsserialnum); 
 | 
        scriptByCondition.put("zy", serviceTaskScriptQues.getParam2()); 
 | 
        scriptByCondition.put("mz", serviceTaskScriptQues.getParam3()); 
 | 
        scriptByCondition.put("tid", serviceTaskScriptQues.getParam1()); 
 | 
        return success(scriptByCondition); 
 | 
    } 
 | 
  
 | 
} 
 |