liusheng
2024-11-27 dbbb114c25b2406b6d1fd52019d2f2228ffcacd0
smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java
@@ -4,16 +4,19 @@
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.DtoConversionUtils;
import com.ruoyi.common.utils.http.HttpUtils;
import org.apache.commons.lang3.StringUtils;
import com.smartor.domain.*;
import com.smartor.mapper.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import com.smartor.service.IServiceTaskService;
import org.springframework.transaction.annotation.Transactional;
@@ -34,6 +37,15 @@
    private ServiceSubtaskMapper serviceSubtaskMapper;
    @Autowired
    private IvrTaskTemplateMapper ivrTaskTemplateMapper;
    @Autowired
    private SvyTaskTemplateMapper svyTaskTemplateMapper;
    @Autowired
    private HeLibraryMapper heLibraryMapper;
    @Autowired
    private IvrLibaTemplateScriptMapper ivrLibaTemplateScriptMapper;
    @Autowired
@@ -41,9 +53,6 @@
    @Autowired
    private PatArchiveMapper patArchiveMapper;
    @Autowired
    private HeLibraryMapper heLibraryMapper;
    @Autowired
@@ -75,6 +84,11 @@
    @Override
    public List<ServiceTask> selectServiceTaskList(ServiceTask serviceTask) {
        //如果为0不置空,会影响到我的查询
        if (CollectionUtils.isEmpty(serviceTask.getLeaveldeptcodes()) || serviceTask.getLeaveldeptcodes().size() == 0)
            serviceTask.setLeaveldeptcodes(null);
        if (CollectionUtils.isEmpty(serviceTask.getLeavehospitaldistrictcodes()) || serviceTask.getLeavehospitaldistrictcodes().size() == 0)
            serviceTask.setLeavehospitaldistrictcodes(null);
        return serviceTaskMapper.selectServiceTaskList(serviceTask);
    }
@@ -87,6 +101,7 @@
    @Override
    public int insertServiceTask(ServiceTask serviceTask) {
        serviceTask.setCreateTime(DateUtils.getNowDate());
        serviceTask.setUpdateTime(DateUtils.getNowDate());
        return serviceTaskMapper.insertServiceTask(serviceTask);
    }
@@ -135,30 +150,55 @@
    }
    @Override
    public List getScriptInfoByCondition(Long taskid, Long patid) {
    public Map<String, Object> getScriptInfoByCondition(Long taskid, Long patid, Boolean isFinish) {
        Map<String, Object> map = new HashMap<>();
        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
        serviceSubtaskVO.setPatid(patid);
        serviceSubtaskVO.setTaskid(taskid);
//        List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
//        //查询患者是否重覆做题
//        if (CollectionUtils.isEmpty(selectServiceSubtaskList)) {
//            Long submit = selectServiceSubtaskList.get(0).getSubmit();
//            if (submit == 1L) {
//                map.put("submit", "1");
//                return map;
//            }
//        }
        //通过任务ID获取模板ID
        ServiceTask serviceTask = selectServiceTaskByTaskid(taskid);
        List info = new ArrayList();
        if (serviceTask.getType().equals("1")) {
            //随访
            log.error("文本随访问题");
            info = sfInfo(serviceTask, patid);
        } else if (serviceTask.getType().equals("2")) {
            //问卷
            info = wjInfo(serviceTask, patid);
            log.error("文本问卷问题");
            info = wjInfo(serviceTask, patid, isFinish);
        } else {
            //宣教
            info = xjInfo(serviceTask.getTemplateid());
            info = xjInfo(Long.valueOf(serviceTask.getLibtemplateid()), taskid, patid, isFinish);
        }
        //只要打开了页面,就算成功
        ServiceSubtask ServiceTaskSingle = new ServiceSubtask();
        ServiceTaskSingle.setTaskid(taskid);
        ServiceTaskSingle.setPatid(patid);
        ServiceTaskSingle.setResult("success");
        ServiceTaskSingle.setFinishtime(new Date());
        serviceSubtaskMapper.updateServiceSubtaskByCondition(ServiceTaskSingle);
        if (isFinish) {
            ServiceSubtask ss = new ServiceSubtask();
            ss.setTaskid(taskid);
            ss.setPatid(patid);
            ss.setSendstate(1L);
            ss.setResult("success");
            ss.setFinishtime(new Date());
            serviceSubtaskMapper.updateServiceSubtaskByCondition(ss);
        }
        SvyTaskTemplate svyTaskTemplate = svyTaskTemplateMapper.selectSvyTaskTemplateBySvyid(serviceTask.getTemplateid());
        if (StringUtils.isNotEmpty(serviceTask.getKcb())) map.put("kcb", serviceTask.getKcb());
        map.put("script", info);
        if (StringUtils.isNotEmpty(serviceTask.getJsy())) map.put("jsy", serviceTask.getJsy());
        map.put("type", serviceTask.getType());
        map.put("taskName", serviceTask.getTaskName());
        map.put("submit", "0");
        return info;
        return map;
    }
    /**
@@ -171,7 +211,7 @@
    public List sfInfo(ServiceTask serviceTask, Long patid) {
        //通过模板ID获取问题信息
        IvrLibaTemplateScript ivrLibaTemplateScript = new IvrLibaTemplateScript();
        ivrLibaTemplateScript.setTemplateID(serviceTask.getTemplateid());
        ivrLibaTemplateScript.setTemplateid(Long.valueOf(serviceTask.getLibtemplateid()));
        ivrLibaTemplateScript.setDelFlag("0");
        List<IvrLibaTemplateScript> ivrLibaTemplateScripts = ivrLibaTemplateScriptMapper.selectIvrLibaTemplateScriptList(ivrLibaTemplateScript);
        if (CollectionUtils.isEmpty(ivrLibaTemplateScripts) || ivrLibaTemplateScripts.size() == 0) {
@@ -199,25 +239,27 @@
        //将模板问题话术里的通配符替换
        for (IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO : ivrLibaTemplateScriptVOS) {
            if (StringUtils.isNotEmpty(ivrLibaTemplateScriptVO.getScriptConten())) {
            if (StringUtils.isNotEmpty(ivrLibaTemplateScriptVO.getScriptContent())) {
                for (Map<String, String> map : mapList) {
                    for (String key : map.keySet()) {
                        ivrLibaTemplateScriptVO.setScriptConten(ivrLibaTemplateScriptVO.getScriptConten().replace(key, StringUtils.isNotEmpty(map.get(key)) ? map.get(key) : ""));
                        ivrLibaTemplateScriptVO.setScriptContent(ivrLibaTemplateScriptVO.getScriptContent().replace(key, StringUtils.isNotEmpty(map.get(key)) ? map.get(key) : ""));
                    }
                }
                //替换患者个人信息数据
                ivrLibaTemplateScriptVO.setScriptConten(ivrLibaTemplateScriptVO.getScriptConten().replace("${name}", StringUtils.isNotEmpty(patArchive.getName()) ? patArchive.getName() : ""));
                ivrLibaTemplateScriptVO.setScriptConten(ivrLibaTemplateScriptVO.getScriptConten().replace("${dzz}", StringUtils.isNotEmpty(patArchive.getPlaceOfResidence()) ? patArchive.getPlaceOfResidence() : ""));
                ivrLibaTemplateScriptVO.setScriptConten(ivrLibaTemplateScriptVO.getScriptConten().replace("${dhh}", StringUtils.isNotEmpty(patArchive.getTelcode()) ? patArchive.getTelcode() : ""));
                ivrLibaTemplateScriptVO.setScriptContent(ivrLibaTemplateScriptVO.getScriptContent().replace("${name}", StringUtils.isNotEmpty(patArchive.getName()) ? patArchive.getName() : ""));
                ivrLibaTemplateScriptVO.setScriptContent(ivrLibaTemplateScriptVO.getScriptContent().replace("${dzz}", StringUtils.isNotEmpty(patArchive.getPlaceOfResidence()) ? patArchive.getPlaceOfResidence() : ""));
                ivrLibaTemplateScriptVO.setScriptContent(ivrLibaTemplateScriptVO.getScriptContent().replace("${dhh}", StringUtils.isNotEmpty(patArchive.getTelcode()) ? patArchive.getTelcode() : ""));
                //获取问题选项
                IvrLibaTemplateTargetoption ivrLibaTemplateTargetoption = new IvrLibaTemplateTargetoption();
                ivrLibaTemplateTargetoption.setScriptid(ivrLibaTemplateScriptVO.getID());
                ivrLibaTemplateTargetoption.setScriptid(ivrLibaTemplateScriptVO.getId());
                List<IvrLibaTemplateTargetoption> ivrLibaTemplateTargetoptions = ivrLibaTemplateTargetOptionMapper.selectIvrLibaTemplateTargetoptionList(ivrLibaTemplateTargetoption);
                ivrLibaTemplateScriptVO.setIvrLibaScriptTargetoptionList(ivrLibaTemplateTargetoptions);
            }
        }
        Collections.sort(ivrLibaTemplateScriptVOS, Comparator.comparingInt(IvrLibaTemplateScriptVO::getSort));
        return ivrLibaTemplateScriptVOS;
    }
@@ -228,10 +270,18 @@
     * @param patid
     * @return
     */
    private List wjInfo(ServiceTask serviceTask, Long patid) {
    private List wjInfo(ServiceTask serviceTask, Long patid, Boolean isFinish) {
        //用户点击了外链,就算他领取了
        if (isFinish == true) {
            ServiceSubtask serviceSubtask = new ServiceSubtask();
            serviceSubtask.setSendstate(1L);
            serviceSubtask.setPatid(patid);
            serviceSubtask.setTaskid(serviceTask.getTaskid());
            serviceSubtaskMapper.updateServiceSubtaskByPatId(serviceSubtask);
        }
        //通过模板ID获取问题信息
        SvyLibTemplateScript svyLibTemplateScript = new SvyLibTemplateScript();
        svyLibTemplateScript.setId(Long.valueOf(serviceTask.getTemplateid()));
        svyLibTemplateScript.setSvyid(Long.valueOf(serviceTask.getLibtemplateid()));
        svyLibTemplateScript.setDelFlag("0");
        List<SvyLibTemplateScript> svyLibTemplateScripts = svyLibTemplateScriptMapper.selectSvyLibTemplateScriptList(svyLibTemplateScript);
        if (CollectionUtils.isEmpty(svyLibTemplateScripts) || svyLibTemplateScripts.size() == 0) {
@@ -267,10 +317,12 @@
                    }
                }
                //替换患者个人信息数据
                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() : ""));
                log.error("问题id:{},   问题内容:{}", svyLibTemplateScriptVO.getId(), svyLibTemplateScriptVO.getScriptContent());
                if (StringUtils.isNotEmpty(svyLibTemplateScriptVO.getScriptContent())) {
                    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());
@@ -278,10 +330,19 @@
                svyLibTemplateScriptVO.setSvyLibTemplateTargetoptions(svyLibTemplateTargetoptions);
            }
        }
        Collections.sort(svyLibTemplateScriptVOS, Comparator.comparingLong(SvyLibTemplateScriptVO::getSort));
        return svyLibTemplateScriptVOS;
    }
    private List xjInfo(Long templateId) {
    private List xjInfo(Long templateId, Long taskid, Long patid, Boolean isFinish) {
        if (isFinish == true) {
            ServiceSubtask serviceSubtask = new ServiceSubtask();
            serviceSubtask.setTaskid(taskid);
            serviceSubtask.setPatid(patid);
            serviceSubtask.setResult("完成");
            serviceSubtask.setFinishtime(new Date());
            serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);
        }
        HeLibrary heLibrary = heLibraryMapper.selectHeLibraryById(Long.valueOf(templateId));
        List list = new ArrayList();
        list.add(heLibrary);