| | |
| | | List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform); |
| | | if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) { |
| | | ServiceSubtaskPreachform ssp = serviceSubtaskPreachforms.get(0); |
| | | ssp.setSendstate("3"); |
| | | serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(ssp); |
| | | //人工无-3已领取状态(service_subtask_preachform.sendstate = 3) |
| | | if(StringUtils.isNotEmpty(ssp.getPreachform()) && !ssp.getPreachform().equals("1")){ |
| | | ssp.setSendstate("3"); |
| | | serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(ssp); |
| | | } |
| | | } |
| | | } |
| | | if (serviceTask != null) { |
| | |
| | | serviceSubtaskVO.setPatid(patid); |
| | | } |
| | | List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO); |
| | | List<SvyTaskTemplateScriptVO> svyTaskTemplateScriptVOS = null; |
| | | if (CollectionUtils.isNotEmpty(serviceSubtaskList) && serviceSubtaskList.size() == 1) { |
| | | if (serviceSubtaskList.get(0).getSendstate() == 3 && isFinish == true) { |
| | | ServiceSubtask serviceSubtask = new ServiceSubtask(); |
| | |
| | | serviceSubtask.setTaskid(serviceTask.getTaskid()); |
| | | serviceSubtaskMapper.updateServiceSubtaskByPatId(serviceSubtask); |
| | | } |
| | | } |
| | | //通过模板ID获取问题信息 |
| | | SvyTaskTemplateScript svyTaskTemplateScript = new SvyTaskTemplateScript(); |
| | | svyTaskTemplateScript.setTemplateID(Long.valueOf(serviceTask.getTemplateid())); |
| | | if (serviceTask.getTemplateid() != null) svyTaskTemplateScript.setTemplateID(serviceTask.getTemplateid()); |
| | | svyTaskTemplateScript.setDelFlag("0"); |
| | | List<SvyTaskTemplateScript> svyTaskTemplateScripts = svyTaskTemplateScriptMapper.selectSvyTaskTemplateScriptList(svyTaskTemplateScript); |
| | | if (CollectionUtils.isEmpty(svyTaskTemplateScripts) || svyTaskTemplateScripts.size() == 0) { |
| | | insertSvyTaskTempScript(null, serviceTask); |
| | | svyTaskTemplateScripts = svyTaskTemplateScriptMapper.selectSvyTaskTemplateScriptList(svyTaskTemplateScript); |
| | | if (CollectionUtils.isEmpty(svyTaskTemplateScripts)) { |
| | | throw new BaseException("请联系管理员,检查问题模板信息!"); |
| | | } |
| | | } |
| | | List<SvyTaskTemplateScriptVO> svyTaskTemplateScriptVOS = DtoConversionUtils.sourceToTarget(svyTaskTemplateScripts, SvyTaskTemplateScriptVO.class); |
| | | |
| | | //通过模板ID获取问题信息 |
| | | SvyTaskTemplateScript svyTaskTemplateScript = new SvyTaskTemplateScript(); |
| | | svyTaskTemplateScript.setTemplateID(Long.valueOf(serviceTask.getTemplateid())); |
| | | if (serviceSubtaskList.get(0).getTemplateid() != null) |
| | | svyTaskTemplateScript.setTemplateID(serviceSubtaskList.get(0).getTemplateid()); |
| | | else if (serviceTask.getTemplateid() != null) |
| | | svyTaskTemplateScript.setTemplateID(serviceTask.getTemplateid()); |
| | | svyTaskTemplateScript.setDelFlag("0"); |
| | | List<SvyTaskTemplateScript> svyTaskTemplateScripts = svyTaskTemplateScriptMapper.selectSvyTaskTemplateScriptList(svyTaskTemplateScript); |
| | | if (CollectionUtils.isEmpty(svyTaskTemplateScripts) || svyTaskTemplateScripts.size() == 0) { |
| | | insertSvyTaskTempScript(null, serviceTask); |
| | | svyTaskTemplateScripts = svyTaskTemplateScriptMapper.selectSvyTaskTemplateScriptList(svyTaskTemplateScript); |
| | | if (CollectionUtils.isEmpty(svyTaskTemplateScripts)) { |
| | | throw new BaseException("请联系管理员,检查问题模板信息!"); |
| | | } |
| | | } |
| | | svyTaskTemplateScriptVOS = DtoConversionUtils.sourceToTarget(svyTaskTemplateScripts, SvyTaskTemplateScriptVO.class); |
| | | } |
| | | //获取患者信息 |
| | | PatArchive patArchive = null; |
| | | if (patfrom.equals("0")) patArchive = patArchiveMapper.selectPatArchiveByPatid(patid); |
| | |
| | | } |
| | | |
| | | |
| | | //通过患者信息和任务信息中的textParam对问题中的变量进行填充 |
| | | //通过患者信息和任务信息中的 textParam 对问题中的变量进行填充 |
| | | ObjectMapper objectMapper = new ObjectMapper(); |
| | | Map<String, Map<String, String>> ivrTaskMap = null; |
| | | try { |
| | |
| | | } 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()); |