liusheng
2024-07-06 ebf745653041ac8da2d365e3c80c92b273c2bbc4
smartor/src/main/java/com/smartor/service/impl/SvyTaskServiceImpl.java
@@ -1,13 +1,22 @@
package com.smartor.service.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ruoyi.common.utils.DateUtils;
import com.smartor.domain.SvyTask;
import com.smartor.mapper.SvyTaskMapper;
import com.ruoyi.common.utils.DtoConversionUtils;
import com.smartor.domain.*;
import com.smartor.mapper.*;
import com.smartor.service.ISvyTaskService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * 综合问卷任务(任务)Service业务层处理
@@ -15,11 +24,23 @@
 * @author ruoyi
 * @date 2024-06-12
 */
@Slf4j
@Service
public class SvyTaskServiceImpl implements ISvyTaskService
{
public class SvyTaskServiceImpl implements ISvyTaskService {
    @Autowired
    private SvyTaskMapper svyTaskMapper;
    @Autowired
    private SvyLibTemplateScriptMapper svyLibTemplateScriptMapper;
    @Autowired
    private SvyLibTemplateTargetoptionMapper svyLibTemplateTargetoptionMapper;
    @Autowired
    private SvyTaskSingleMapper svyTaskSingleMapper;
    @Autowired
    private PatArchiveMapper patArchiveMapper;
    /**
     * 查询综合问卷任务(任务)
@@ -28,8 +49,7 @@
     * @return 综合问卷任务(任务)
     */
    @Override
    public SvyTask selectSvyTaskByTaskid(Long taskid)
    {
    public SvyTask selectSvyTaskByTaskid(Long taskid) {
        return svyTaskMapper.selectSvyTaskByTaskid(taskid);
    }
@@ -40,8 +60,7 @@
     * @return 综合问卷任务(任务)
     */
    @Override
    public List<SvyTask> selectSvyTaskList(SvyTask svyTask)
    {
    public List<SvyTask> selectSvyTaskList(SvyTask svyTask) {
        return svyTaskMapper.selectSvyTaskList(svyTask);
    }
@@ -52,8 +71,7 @@
     * @return 结果
     */
    @Override
    public int insertSvyTask(SvyTask svyTask)
    {
    public int insertSvyTask(SvyTask svyTask) {
        svyTask.setCreateTime(DateUtils.getNowDate());
        return svyTaskMapper.insertSvyTask(svyTask);
    }
@@ -65,8 +83,7 @@
     * @return 结果
     */
    @Override
    public int updateSvyTask(SvyTask svyTask)
    {
    public int updateSvyTask(SvyTask svyTask) {
        svyTask.setUpdateTime(DateUtils.getNowDate());
        return svyTaskMapper.updateSvyTask(svyTask);
    }
@@ -78,8 +95,7 @@
     * @return 结果
     */
    @Override
    public int deleteSvyTaskByTaskids(Long[] taskids)
    {
    public int deleteSvyTaskByTaskids(Long[] taskids) {
        return svyTaskMapper.deleteSvyTaskByTaskids(taskids);
    }
@@ -90,8 +106,73 @@
     * @return 结果
     */
    @Override
    public int deleteSvyTaskByTaskid(Long taskid)
    {
    public int deleteSvyTaskByTaskid(Long taskid) {
        return svyTaskMapper.deleteSvyTaskByTaskid(taskid);
    }
    @Override
    public List<SvyLibTemplateScriptVO> getScriptInfoByCondition(Long taskid, Long patid) {
        //通过任务ID获取模板ID
        SvyTask svyTask = selectSvyTaskByTaskid(taskid);
        //通过模板ID获取问题信息
        SvyLibTemplateScript svyLibTemplateScript = new SvyLibTemplateScript();
        svyLibTemplateScript.setId(Long.valueOf(svyTask.getTemplateid()));
        svyLibTemplateScript.setDelFlag("0");
        List<SvyLibTemplateScript> svyLibTemplateScripts = svyLibTemplateScriptMapper.selectSvyLibTemplateScriptList(svyLibTemplateScript);
        if (CollectionUtils.isEmpty(svyLibTemplateScripts) || svyLibTemplateScripts.size() == 0) {
            log.info("ivrLibaTemplateScripts为空了,请尽快联系管理员处理");
            return new ArrayList<>();
        }
        List<SvyLibTemplateScriptVO> svyLibTemplateScriptVOS = DtoConversionUtils.sourceToTarget(svyLibTemplateScripts, SvyLibTemplateScriptVO.class);
        //获取患者信息
        PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patid);
        //通过患者信息和任务信息中的textParam对问题中的变量进行填充
        ObjectMapper objectMapper = new ObjectMapper();
        Map<String, Map<String, String>> ivrTaskMap = null;
        try {
            ivrTaskMap = objectMapper.readValue(svyTask.getTextParam(), Map.class);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        List<Map<String, String>> mapList = new ArrayList<>();
        for (Map<String, String> map : ivrTaskMap.values()) {
            mapList.add(map);
        }
        //将模板问题话术里的通配符替换
        for (SvyLibTemplateScriptVO svyLibTemplateScriptVO : svyLibTemplateScriptVOS) {
            if (StringUtils.isNotEmpty(svyLibTemplateScriptVO.getScriptContent())) {
                for (Map<String, String> map : mapList) {
                    for (String key : map.keySet()) {
                        svyLibTemplateScriptVO.setScriptContent(svyLibTemplateScriptVO.getScriptContent().replace(key, StringUtils.isNotEmpty(map.get(key)) ? map.get(key) : ""));
                    }
                }
                //替换患者个人信息数据
                svyLibTemplateScriptVO.setScriptContent(svyLibTemplateScriptVO.getScriptContent().replace("${name}", StringUtils.isNotEmpty(patArchive.getName()) ? patArchive.getName() : ""));
                svyLibTemplateScriptVO.setScriptContent(svyLibTemplateScriptVO.getScriptContent().replace("${dzz}", StringUtils.isNotEmpty(patArchive.getPlaceOfResidence()) ? patArchive.getPlaceOfResidence() : ""));
                svyLibTemplateScriptVO.setScriptContent(svyLibTemplateScriptVO.getScriptContent().replace("${dhh}", StringUtils.isNotEmpty(patArchive.getTelcode()) ? patArchive.getTelcode() : ""));
                //获取问题选项
                SvyLibTemplateTargetoption svyLibTemplateTargetoption = new SvyLibTemplateTargetoption();
                svyLibTemplateTargetoption.setScriptid(svyLibTemplateScriptVO.getId());
                List<SvyLibTemplateTargetoption> svyLibTemplateTargetoptions = svyLibTemplateTargetoptionMapper.selectSvyLibTemplateTargetoptionList(svyLibTemplateTargetoption);
                svyLibTemplateScriptVO.setSvyLibTemplateTargetoptions(svyLibTemplateTargetoptions);
            }
        }
        //只要打开了页面就算成功
        SvyTaskSingle svyTaskSingle = new SvyTaskSingle();
        svyTaskSingle.setTaskid(taskid);
        svyTaskSingle.setPatid(patid);
        svyTaskSingle.setResult("success");
        svyTaskSingle.setFinishtime(new Date());
        svyTaskSingleMapper.updateSvyTaskSingle(svyTaskSingle);
        return svyLibTemplateScriptVOS;
    }
}