yxh
5 天以前 dc4df9a530016c4fd24f9aebc6ccf1b95310ff1f
smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java
@@ -52,7 +52,7 @@
    private IvrLibaTemplateScriptMapper ivrLibaTemplateScriptMapper;
    @Autowired
    private SvyTaskTemplateScriptMapper svyTaskTemplateScriptMapper;
    private SvyLibTemplateScriptMapper svyLibTemplateScriptMapper;
    @Autowired
    private PatArchiveMapper patArchiveMapper;
@@ -65,7 +65,7 @@
    private PatReservationRecordMapper patReservationRecordMapper;
    @Autowired
    private SvyTaskTemplateTargetoptionMapper svyTaskTemplateTargetoptionMapper;
    private SvyLibTemplateTargetoptionMapper svyLibTemplateTargetoptionMapper;
    @Autowired
    private RedisCache redisCache;
@@ -309,55 +309,57 @@
            }
        }
        // 通过模板ID获取问题信息
        SvyTaskTemplateScript svyTaskTemplateScript = new SvyTaskTemplateScript();
        svyTaskTemplateScript.setTemplateID(Long.valueOf(serviceTask.getTemplateid()));
        svyTaskTemplateScript.setDelFlag("0");
        List<SvyTaskTemplateScript> svyTaskTemplateScripts = svyTaskTemplateScriptMapper.selectSvyTaskTemplateScriptList(svyTaskTemplateScript);
        if (CollectionUtils.isEmpty(svyTaskTemplateScripts)) {
            log.warn("svyTaskTemplateScripts为空,请尽快联系管理员处理");
            return Collections.emptyList();
        //通过模板ID获取问题信息
        SvyLibTemplateScript svyLibTemplateScript = new SvyLibTemplateScript();
        svyLibTemplateScript.setSvyid(Long.valueOf(serviceTask.getLibtemplateid()));
        svyLibTemplateScript.setDelFlag("0");
        List<SvyLibTemplateScript> svyLibTemplateScripts = svyLibTemplateScriptMapper.selectSvyLibTemplateScriptList(svyLibTemplateScript);
        if (CollectionUtils.isEmpty(svyLibTemplateScripts) || svyLibTemplateScripts.size() == 0) {
            log.info("ivrLibaTemplateScripts为空了,请尽快联系管理员处理");
            return new ArrayList<>();
        }
        List<SvyTaskTemplateScriptVO> svyTaskTemplateScriptVOS = DtoConversionUtils.sourceToTarget(svyTaskTemplateScripts, SvyTaskTemplateScriptVO.class);
        List<SvyLibTemplateScriptVO> svyLibTemplateScriptVOS = DtoConversionUtils.sourceToTarget(svyLibTemplateScripts, SvyLibTemplateScriptVO.class);
        // 获取患者信息
        //获取患者信息
        PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patid);
        // 解析textParam
        Map<String, Map<String, String>> ivrTaskMap = Collections.emptyMap();
        //通过患者信息和任务信息中的textParam对问题中的变量进行填充
        ObjectMapper objectMapper = new ObjectMapper();
        Map<String, Map<String, String>> ivrTaskMap = null;
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            ivrTaskMap = objectMapper.readValue(serviceTask.getTextParam(), Map.class);
        } catch (Exception e) {
            log.error("解析textParam失败", e);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        List<Map<String, String>> mapList = new ArrayList<>(ivrTaskMap.values());
        List<Map<String, String>> mapList = new ArrayList<>();
        // 替换模板问题话术里的通配符
        for (SvyTaskTemplateScriptVO scriptVO : svyTaskTemplateScriptVOS) {
            String content = scriptVO.getScriptContent();
            if (StringUtils.isNotEmpty(content)) {
                // 替换变量
        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 (Map.Entry<String, String> entry : map.entrySet()) {
                        String key = entry.getKey();
                        String value = StringUtils.defaultString(entry.getValue());
                        content = content.replace(key, value);
                    for (String key : map.keySet()) {
                        svyLibTemplateScriptVO.setScriptContent(svyLibTemplateScriptVO.getScriptContent().replace(key, StringUtils.isNotEmpty(map.get(key)) ? map.get(key) : ""));
                    }
                }
                // 替换患者个人信息
                content = content.replace("${name}", StringUtils.defaultString(patArchive.getName()))
                        .replace("${dzz}", StringUtils.defaultString(patArchive.getPlaceOfResidence()))
                        .replace("${dhh}", StringUtils.defaultString(patArchive.getTelcode()));
                scriptVO.setScriptContent(content);
                // 获取问题选项
                SvyTaskTemplateTargetoption optionQuery = new SvyTaskTemplateTargetoption();
                optionQuery.setScriptid(scriptVO.getId());
                List<SvyTaskTemplateTargetoption> options = svyTaskTemplateTargetoptionMapper.selectSvyTaskTemplateTargetoptionList(optionQuery);
                //替换患者个人信息数据
                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());
                List<SvyLibTemplateTargetoption> svyLibTemplateTargetoptions = svyLibTemplateTargetoptionMapper.selectSvyLibTemplateTargetoptionList(svyLibTemplateTargetoption);
                // 判断预约人数
                for (SvyTaskTemplateTargetoption stt : options) {
                for (SvyLibTemplateTargetoption stt : svyLibTemplateTargetoptions) {
                    Boolean full = patReservationRecordMapper.existsEqualNum(stt.getId());
                    if (Boolean.TRUE.equals(full)) {
                        stt.setPerson(-1L);
@@ -368,11 +370,11 @@
                    stt.setJmid(id);
                    stt.setId(null);
                }
                scriptVO.setSvyTaskTemplateTargetoptions(options);
                svyLibTemplateScriptVO.setSvyLibTemplateTargetoptions(svyLibTemplateTargetoptions);
            }
        }
        svyTaskTemplateScriptVOS.sort(Comparator.comparingLong(SvyTaskTemplateScriptVO::getSort));
        return svyTaskTemplateScriptVOS;
        svyLibTemplateScriptVOS.sort(Comparator.comparingLong(SvyLibTemplateScriptVO::getSort));
        return svyLibTemplateScriptVOS;
    }
    private List xjInfo(Long templateId, Long taskid, Long patid, Boolean isFinish) {