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<SvyTask> 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<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;
|
}
|
}
|