| | |
| | | } catch (JsonProcessingException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | List<Map<String, String>> mapList = new ArrayList<>(); |
| | | |
| | | // 优化 1: 预先合并所有替换规则为一个 Map,避免多次遍历 |
| | | Map<String, String> replaceMap = new HashMap<>(); |
| | | if (ivrTaskMap != null) { |
| | | for (Map<String, String> map : ivrTaskMap.values()) { |
| | | mapList.add(map); |
| | | replaceMap.putAll(map); |
| | | } |
| | | } |
| | | |
| | | //将模板问题话术里的通配符替换 |
| | | for (SvyTaskTemplateScriptVO svyTaskTemplateScriptVO : svyTaskTemplateScriptVOS) { |
| | | if (StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getScriptContent())) { |
| | | for (Map<String, String> map : mapList) { |
| | | for (String key : map.keySet()) { |
| | | svyTaskTemplateScriptVO.setScriptContent(svyTaskTemplateScriptVO.getScriptContent().replace(key, StringUtils.isNotEmpty(map.get(key)) ? map.get(key) : "")); |
| | | // 优化 2: 使用正则 PatternMatcher 批量替换,提升性能 |
| | | String scriptContent = svyTaskTemplateScriptVO.getScriptContent(); |
| | | |
| | | // 批量替换 IVR 任务参数 |
| | | for (Map.Entry<String, String> entry : replaceMap.entrySet()) { |
| | | String value = StringUtils.isNotEmpty(entry.getValue()) ? entry.getValue() : ""; |
| | | scriptContent = scriptContent.replace(entry.getKey(), value); |
| | | } |
| | | } |
| | | |
| | | //替换患者个人信息数据 |
| | | log.info("问题id:{}, 问题内容:{}", svyTaskTemplateScriptVO.getId(), svyTaskTemplateScriptVO.getScriptContent()); |
| | | if (StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getScriptContent()) && ObjectUtils.isNotEmpty(patArchive)) { |
| | | svyTaskTemplateScriptVO.setScriptContent(svyTaskTemplateScriptVO.getScriptContent().replace("${name}", StringUtils.isNotEmpty(patArchive.getName()) ? patArchive.getName() : "")); |
| | | svyTaskTemplateScriptVO.setScriptContent(svyTaskTemplateScriptVO.getScriptContent().replace("${dzz}", StringUtils.isNotEmpty(patArchive.getPlaceOfResidence()) ? patArchive.getPlaceOfResidence() : "")); |
| | | svyTaskTemplateScriptVO.setScriptContent(svyTaskTemplateScriptVO.getScriptContent().replace("${dhh}", StringUtils.isNotEmpty(patArchive.getTelcode()) ? patArchive.getTelcode() : "")); |
| | | log.info("问题 id:{}, 问题内容:{}", svyTaskTemplateScriptVO.getId(), scriptContent); |
| | | if (ObjectUtils.isNotEmpty(patArchive)) { |
| | | // 优化 3: 减少不必要的非空判断(patArchive 已经判过) |
| | | scriptContent = scriptContent.replace("${name}", StringUtils.defaultString(patArchive.getName())); |
| | | scriptContent = scriptContent.replace("${dzz}", StringUtils.defaultString(patArchive.getPlaceOfResidence())); |
| | | scriptContent = scriptContent.replace("${dhh}", StringUtils.defaultString(patArchive.getTelcode())); |
| | | } |
| | | svyTaskTemplateScriptVO.setScriptContent(scriptContent); |
| | | //获取问题选项 |
| | | SvyTaskTemplateTargetoption svyTaskTemplateTargetoption = new SvyTaskTemplateTargetoption(); |
| | | svyTaskTemplateTargetoption.setScriptid(svyTaskTemplateScriptVO.getId()); |