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.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业务层处理 * * @author ruoyi * @date 2024-06-12 */ @Slf4j @Service 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; /** * 查询综合问卷任务(任务) * * @param taskid 综合问卷任务(任务)主键 * @return 综合问卷任务(任务) */ @Override public SvyTask selectSvyTaskByTaskid(Long taskid) { return svyTaskMapper.selectSvyTaskByTaskid(taskid); } /** * 查询综合问卷任务(任务)列表 * * @param svyTask 综合问卷任务(任务) * @return 综合问卷任务(任务) */ @Override public List selectSvyTaskList(SvyTask svyTask) { return svyTaskMapper.selectSvyTaskList(svyTask); } /** * 新增综合问卷任务(任务) * * @param svyTask 综合问卷任务(任务) * @return 结果 */ @Override public int insertSvyTask(SvyTask svyTask) { svyTask.setCreateTime(DateUtils.getNowDate()); return svyTaskMapper.insertSvyTask(svyTask); } /** * 修改综合问卷任务(任务) * * @param svyTask 综合问卷任务(任务) * @return 结果 */ @Override public int updateSvyTask(SvyTask svyTask) { svyTask.setUpdateTime(DateUtils.getNowDate()); return svyTaskMapper.updateSvyTask(svyTask); } /** * 批量删除综合问卷任务(任务) * * @param taskids 需要删除的综合问卷任务(任务)主键 * @return 结果 */ @Override public int deleteSvyTaskByTaskids(Long[] taskids) { return svyTaskMapper.deleteSvyTaskByTaskids(taskids); } /** * 删除综合问卷任务(任务)信息 * * @param taskid 综合问卷任务(任务)主键 * @return 结果 */ @Override public int deleteSvyTaskByTaskid(Long taskid) { return svyTaskMapper.deleteSvyTaskByTaskid(taskid); } @Override public List 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 svyLibTemplateScripts = svyLibTemplateScriptMapper.selectSvyLibTemplateScriptList(svyLibTemplateScript); if (CollectionUtils.isEmpty(svyLibTemplateScripts) || svyLibTemplateScripts.size() == 0) { log.info("ivrLibaTemplateScripts为空了,请尽快联系管理员处理"); return new ArrayList<>(); } List svyLibTemplateScriptVOS = DtoConversionUtils.sourceToTarget(svyLibTemplateScripts, SvyLibTemplateScriptVO.class); //获取患者信息 PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patid); //通过患者信息和任务信息中的textParam对问题中的变量进行填充 ObjectMapper objectMapper = new ObjectMapper(); Map> ivrTaskMap = null; try { ivrTaskMap = objectMapper.readValue(svyTask.getTextParam(), Map.class); } catch (JsonProcessingException e) { e.printStackTrace(); } List> mapList = new ArrayList<>(); for (Map map : ivrTaskMap.values()) { mapList.add(map); } //将模板问题话术里的通配符替换 for (SvyLibTemplateScriptVO svyLibTemplateScriptVO : svyLibTemplateScriptVOS) { if (StringUtils.isNotEmpty(svyLibTemplateScriptVO.getScriptContent())) { for (Map 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 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; } }