From 741870be67cbdd110de369e31249657f6c78c40f Mon Sep 17 00:00:00 2001 From: haown <454902499@qq.com> Date: Thu, 4 Jul 2024 17:27:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=82=A3=E8=80=85=E4=BF=A1=E6=81=AF=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=88=97=E8=A1=A8id=E5=80=92=E5=BA=8F=E6=8E=92?= =?UTF-8?q?=E5=BA=8F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SignPatientManageRouteServiceImpl.java | 97 +----- .../ISignPatientManageRouteNodeService.java | 23 ++ ...SignPatientManageRouteNodeServiceImpl.java | 281 +++++++++--------- .../PatientBlacklistMapper.xml | 1 + .../manage/patientinfo/PatientInfoMapper.xml | 1 + .../PatientPreHospitalizationMapper.xml | 2 +- .../SignPatientRecordMapper.xml | 1 + 7 files changed, 177 insertions(+), 229 deletions(-) diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroute/impl/SignPatientManageRouteServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroute/impl/SignPatientManageRouteServiceImpl.java index 345d6450..d41d119d 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroute/impl/SignPatientManageRouteServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroute/impl/SignPatientManageRouteServiceImpl.java @@ -26,8 +26,6 @@ import com.xinelu.manage.domain.signpatientmanageroute.SignPatientManageRoute; import com.xinelu.manage.domain.signpatientmanageroutenode.SignPatientManageRouteNode; import com.xinelu.manage.domain.signpatientrecord.SignPatientRecord; import com.xinelu.manage.domain.signroutetriggercondition.SignRouteTriggerCondition; -import com.xinelu.manage.domain.textmessage.TextMessage; -import com.xinelu.manage.domain.wechattemplate.WechatTemplate; import com.xinelu.manage.dto.manualfollowup.ManualFollowUpDTO; import com.xinelu.manage.dto.patientquestionoptionresult.PatientQuestionOptionResultDTO; import com.xinelu.manage.dto.patientquestionsubjectresult.PatientQuestionSubjectResultDTO; @@ -67,8 +65,6 @@ import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Objects; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import java.util.stream.Collectors; import javax.annotation.Resource; import org.apache.commons.collections4.CollectionUtils; @@ -506,7 +502,7 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout ScriptInfo scriptInfo = scriptInfoMapper.selectScriptInfoById(node.getPhoneTemplateId()); if (ObjectUtils.isNotEmpty(scriptInfo)) { // 话术库json内容替换 - manageRouteNode.setPhoneNodeContent(getFlowScheme(scriptInfo.getFlowScheme(), labelFieldContentList)); + manageRouteNode.setPhoneNodeContent(signPatientManageRouteNodeService.getFlowScheme(scriptInfo.getFlowScheme(), labelFieldContentList)); templateDetail = JSONObject.parseObject(JSONObject.toJSONString(scriptInfo)); manageRouteNode.setTemplateType(TemplateTypeConstants.SCRIPT); manageRouteNode.setTemplateDetail(templateDetail); @@ -514,7 +510,7 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout // 电话短信内容 if (node.getPhoneMessageTemplateId() != null) { // 查询短信库 - manageRouteNode.setPhoneMessageTemplateContent(replaceMessageInfo(node.getPhoneMessageTemplateId(), labelFieldContentList)); + manageRouteNode.setPhoneMessageTemplateContent(signPatientManageRouteNodeService.replaceMessageInfo(node.getPhoneMessageTemplateId(), labelFieldContentList)); } break; } @@ -548,7 +544,7 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout ScriptInfo scriptInfo = scriptInfoMapper.selectScriptInfoById(manageNode.getPhoneId()); if (ObjectUtils.isNotEmpty(scriptInfo)) { // 话术库json内容替换 - manageNode.setPhoneNodeContent(getFlowScheme(scriptInfo.getFlowScheme(), labelFieldContentList)); + manageNode.setPhoneNodeContent(signPatientManageRouteNodeService.getFlowScheme(scriptInfo.getFlowScheme(), labelFieldContentList)); templateDetail = JSONObject.parseObject(JSONObject.toJSONString(scriptInfo)); manageNode.setTemplateType(TemplateTypeConstants.SCRIPT); manageNode.setTemplateDetail(templateDetail); @@ -565,7 +561,7 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout // 电话短信内容 if (manageNode.getPhoneMessageTemplateId() != null) { // 查询短信库 - manageNode.setPhoneMessageTemplateContent(replaceMessageInfo(manageNode.getPhoneMessageTemplateId(), labelFieldContentList)); + manageNode.setPhoneMessageTemplateContent(signPatientManageRouteNodeService.replaceMessageInfo(manageNode.getPhoneMessageTemplateId(), labelFieldContentList)); } break; // 问卷 @@ -710,101 +706,24 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout signPatientManageRouteNodes.add(signPatientManageRouteNode); } - /** - * 话术json参数替换 - * @param flowScheme 话术json - * @param labelFieldContentList 患者画像信息 - * @return - */ - private String getFlowScheme(String flowScheme, List labelFieldContentList) { - // 话术库json内容替换 - if (StringUtils.isNotBlank(flowScheme)) { - // 替换{{}}中的内容 - Pattern pattern = Pattern.compile("#\\{([^\\}]*)\\}"); - Matcher matcher = pattern.matcher(flowScheme); - while (matcher.find()) { - //过滤出符合条件的对象,不匹配返回null。 - LabelFieldInfoContentVo labelFieldContent = labelFieldContentList.stream().filter(s -> Objects.equals(s.getFieldCode(), matcher.group(1))).findFirst().orElse(null); - if (ObjectUtils.isNotEmpty(labelFieldContent)) { - flowScheme = flowScheme.replaceAll("#\\{"+matcher.group(1) +"\\}", ObjectUtils.isEmpty(labelFieldContent) ? "" : labelFieldContent.getFieldValue()); - } - } - } - return flowScheme; - } - - /** - * * 短信模板内容 - * @param messageTemplateId 短信模板主键 - * @param labelFieldContentList 患者画像信息 - * @return 替换标签后的内容 - */ - private String replaceMessageInfo(Long messageTemplateId, List labelFieldContentList) { - // 查询短信模板 - TextMessage textMessage = textMessageMapper.selectTextMessageById(messageTemplateId); - if (ObjectUtils.isNotEmpty(textMessage)) { - String textMessageContent = textMessage.getTextMessageContent(); - if (StringUtils.isBlank(textMessageContent)) { - return null; - } - // 替换{{}}中的内容 - Pattern pattern = Pattern.compile("#\\{([^\\}]*)\\}"); - Matcher matcher = pattern.matcher(textMessage.getTextMessageContent()); - while (matcher.find()) { - // 过滤出符合条件的对象,不匹配返回null。 - LabelFieldInfoContentVo labelFieldContent = labelFieldContentList.stream().filter(s -> Objects.equals(s.getFieldCode(), matcher.group(1))).findFirst().orElse(null); - if (ObjectUtils.isNotEmpty(labelFieldContent)) { - textMessageContent = textMessageContent.replaceAll("#\\{"+matcher.group(1) +"\\}", ObjectUtils.isEmpty(labelFieldContent) ? "" : labelFieldContent.getFieldValue()); - } - } - return textMessageContent; - } - return null; - } private void replaceTemplateInfo(SignPatientManageNodeAuditVo manageRouteNode, RouteTaskAuditVo node, List labelFieldContentList) { if (node.getMessageTemplateId() != null) { // 替换短信模板 - manageRouteNode.setMessageNodeContent(replaceMessageInfo(node.getMessageTemplateId(), labelFieldContentList)); + manageRouteNode.setMessageNodeContent(signPatientManageRouteNodeService.replaceMessageInfo(node.getMessageTemplateId(), labelFieldContentList)); } if (node.getPhoneMessageTemplateId() != null) { // 替换短信模板 - manageRouteNode.setPhoneMessageTemplateContent(replaceMessageInfo(node.getPhoneMessageTemplateId(), labelFieldContentList)); + manageRouteNode.setPhoneMessageTemplateContent(signPatientManageRouteNodeService.replaceMessageInfo(node.getPhoneMessageTemplateId(), labelFieldContentList)); } // 替换公众号模板 if (node.getOfficialPushSign() != null && node.getOfficialPushSign() == 1) { - manageRouteNode.setOfficialNodeContent(replaceWeChatTemplate(node.getOfficialTemplateId(), labelFieldContentList)); + manageRouteNode.setOfficialNodeContent(signPatientManageRouteNodeService.replaceWeChatTemplate(node.getOfficialTemplateId(), labelFieldContentList)); } // 替换小程序模板 if (node.getAppletPushSign() != null && node.getAppletPushSign() == 1) { - manageRouteNode.setAppletNodeContent(replaceWeChatTemplate(node.getAppletTemplateId(), labelFieldContentList)); + manageRouteNode.setAppletNodeContent(signPatientManageRouteNodeService.replaceWeChatTemplate(node.getAppletTemplateId(), labelFieldContentList)); } } - /** - * 替换公众号、小程序模板内容 - * @param templateId 微信库模板id - * @param labelFieldContentList 患者画像信息 - */ - private String replaceWeChatTemplate(Long templateId, List labelFieldContentList) { - WechatTemplate wechatTemplate = wechatTemplateMapper.selectWechatTemplateById(templateId); - if (ObjectUtils.isEmpty(wechatTemplate)){ - return null; - } - String templateContent = wechatTemplate.getTemplateContent(); - if (StringUtils.isBlank(templateContent)) { - return null; - } - Pattern pattern = Pattern.compile("#\\{([^\\}]*)\\}"); - Matcher matcher = pattern.matcher(templateContent); - while (matcher.find()) { - // 过滤出符合条件的对象,不匹配返回null。 - LabelFieldInfoContentVo labelFieldContent = labelFieldContentList.stream().filter(s -> Objects.equals(s.getFieldCode(), matcher.group(1))).findFirst().orElse(null); - if (ObjectUtils.isNotEmpty(labelFieldContent)) { - templateContent = templateContent.replaceAll("#\\{"+matcher.group(1) +"\\}", ObjectUtils.isEmpty(labelFieldContent) ? "" : labelFieldContent.getFieldValue()); - } - } - return templateContent; - } - } diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroutenode/ISignPatientManageRouteNodeService.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroutenode/ISignPatientManageRouteNodeService.java index f40ddf02..4fa9e9f6 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroutenode/ISignPatientManageRouteNodeService.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroutenode/ISignPatientManageRouteNodeService.java @@ -171,4 +171,27 @@ public interface ISignPatientManageRouteNodeService { * @return 签约路径节点列表 */ List replaceNodeContent(SignPatientManageNodeAuditVo manageRouteNode, Long taskPartitionDictId, List labelFieldContentList); + + /** + * 话术json参数替换 + * @param flowScheme 话术json + * @param labelFieldContentList 患者画像信息 + * @return 替换标签后的话术json + */ + String getFlowScheme(String flowScheme, List labelFieldContentList); + + /** + * 替换公众号、小程序模板内容 + * @param templateId 微信库模板id + * @param labelFieldContentList 患者画像信息 + */ + String replaceWeChatTemplate(Long templateId, List labelFieldContentList); + + /** + * * 短信模板内容 + * @param messageTemplateId 短信模板主键 + * @param labelFieldContentList 患者画像信息 + * @return 替换标签后的内容 + */ + String replaceMessageInfo(Long messageTemplateId, List labelFieldContentList); } diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroutenode/impl/SignPatientManageRouteNodeServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroutenode/impl/SignPatientManageRouteNodeServiceImpl.java index 2ca530ce..ac0ffe33 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroutenode/impl/SignPatientManageRouteNodeServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroutenode/impl/SignPatientManageRouteNodeServiceImpl.java @@ -761,6 +761,148 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage } } + /** + * 话术json参数替换 + * @param flowScheme 话术json + * @param labelFieldContentList 患者画像信息 + * @return 替换标签后的话术json + */ + @Override + public String getFlowScheme(String flowScheme, List labelFieldContentList) { + // 话术库json内容替换 + if (StringUtils.isNotBlank(flowScheme)) { + // 替换{{}}中的内容 + Pattern pattern = Pattern.compile("#\\{([^\\}]*)\\}"); + Matcher matcher = pattern.matcher(flowScheme); + while (matcher.find()) { + //过滤出符合条件的对象,不匹配返回null。 + LabelFieldInfoContentVo labelFieldContent = labelFieldContentList.stream().filter(s -> Objects.equals(s.getFieldCode(), matcher.group(1))).findFirst().orElse(null); + if (ObjectUtils.isNotEmpty(labelFieldContent)) { + flowScheme = flowScheme.replaceAll("#\\{"+matcher.group(1) +"\\}", ObjectUtils.isEmpty(labelFieldContent) ? "" : labelFieldContent.getFieldValue()); + } + } + } + return flowScheme; + } + + /** + * * 短信模板内容 + * @param messageTemplateId 短信模板主键 + * @param labelFieldContentList 患者画像信息 + * @return 替换标签后的内容 + */ + @Override + public String replaceMessageInfo(Long messageTemplateId, List labelFieldContentList) { + // 查询短信模板 + TextMessage textMessage = textMessageMapper.selectTextMessageById(messageTemplateId); + if (ObjectUtils.isNotEmpty(textMessage)) { + String textMessageContent = textMessage.getTextMessageContent(); + if (StringUtils.isBlank(textMessageContent)) { + return null; + } + // 替换{{}}中的内容 + Pattern pattern = Pattern.compile("#\\{([^\\}]*)\\}"); + Matcher matcher = pattern.matcher(textMessage.getTextMessageContent()); + while (matcher.find()) { + // 过滤出符合条件的对象,不匹配返回null。 + LabelFieldInfoContentVo labelFieldContent = labelFieldContentList.stream().filter(s -> Objects.equals(s.getFieldCode(), matcher.group(1))).findFirst().orElse(null); + if (ObjectUtils.isNotEmpty(labelFieldContent)) { + textMessageContent = textMessageContent.replaceAll("#\\{"+matcher.group(1) +"\\}", ObjectUtils.isEmpty(labelFieldContent) ? "" : labelFieldContent.getFieldValue()); + } + } + return textMessageContent; + } + return null; + } + + /** + * 替换公众号、小程序模板内容 + * @param templateId 微信库模板id + * @param labelFieldContentList 患者画像信息 + */ + @Override + public String replaceWeChatTemplate(Long templateId, List labelFieldContentList) { + WechatTemplate wechatTemplate = wechatTemplateMapper.selectWechatTemplateById(templateId); + if (ObjectUtils.isEmpty(wechatTemplate)){ + return null; + } + String templateContent = wechatTemplate.getTemplateContent(); + if (StringUtils.isBlank(templateContent)) { + return null; + } + Pattern pattern = Pattern.compile("#\\{([^\\}]*)\\}"); + Matcher matcher = pattern.matcher(templateContent); + while (matcher.find()) { + // 过滤出符合条件的对象,不匹配返回null。 + LabelFieldInfoContentVo labelFieldContent = labelFieldContentList.stream().filter(s -> Objects.equals(s.getFieldCode(), matcher.group(1))).findFirst().orElse(null); + if (ObjectUtils.isNotEmpty(labelFieldContent)) { + templateContent = templateContent.replaceAll("#\\{"+matcher.group(1) +"\\}", ObjectUtils.isEmpty(labelFieldContent) ? "" : labelFieldContent.getFieldValue()); + } + } + return templateContent; + } + + /** + * 替换节点标签内容 + * @param manageRouteNode 签约管理路径节点 + * @param taskPartitionDictId 专病节点任务细分 + * @param labelFieldContentList 患者画像 + * @return 签约路径节点列表 + */ + @Override + public List replaceNodeContent(SignPatientManageNodeAuditVo manageRouteNode, Long taskPartitionDictId, List labelFieldContentList) { + List manageNodeList = new ArrayList<>(); + Map> groupByRang = labelFieldContentList.stream().collect(Collectors.groupingBy(LabelFieldInfoContentVo::getApplyRange)); + // 筛选应用范围是否有私用的画像 + List privateLabelFields = groupByRang.get("PRIVATE"); + List publicLabelFields = groupByRang.get("PUBLIC"); + + // 按照sn进行分组,判断生成几条任务 + Map> groupByPartition = privateLabelFields.stream().collect(Collectors.groupingBy(LabelFieldInfoContentVo::getTaskPartitionDictId)); + List nodeLabelFieldContent = groupByPartition.get(taskPartitionDictId); + if (CollectionUtils.isEmpty(privateLabelFields) || CollectionUtils.isEmpty(nodeLabelFieldContent)) { + // 都是公有属性,只生成一条任务 + SignPatientManageNodeAuditVo manageNode = new SignPatientManageNodeAuditVo(); + BeanUtils.copyBeanProp(manageNode, manageRouteNode); + // 替换文本 + Map map = publicLabelFields.stream().collect(Collectors.toMap(LabelFieldInfoContentVo::getFieldCode,LabelFieldInfoContentVo::getFieldValue,(key1,key2)->key2)); + Document document = Jsoup.parse(manageNode.getNodeContent()); + // 需要提取的span + Elements spanlist = document.select("span[data-w-e-type]"); + for (Element span : spanlist) { + String paramKey = span.attr("data-fieldMark"); + span.text(map.getOrDefault(paramKey, "")); + span.unwrap(); + } + manageNode.setNodeContent(document.body().html()); + manageNodeList.add(manageNode); + } else { + Map> groupBySn = nodeLabelFieldContent.stream().collect(Collectors.groupingBy(LabelFieldInfoContentVo::getPortraitSn)); + + for (String portraitSn : groupBySn.keySet()) { + SignPatientManageNodeAuditVo manageNode = new SignPatientManageNodeAuditVo(); + BeanUtils.copyBeanProp(manageNode, manageRouteNode); + // 替换文本 + List nodeParams = groupBySn.get(portraitSn); + nodeParams.addAll(publicLabelFields); + + Map map = nodeParams.stream().collect(Collectors.toMap(LabelFieldInfoContentVo::getFieldCode,LabelFieldInfoContentVo::getFieldValue,(key1,key2)->key2)); + Document document = Jsoup.parse(manageNode.getNodeContent()); + // 需要提取的span + Elements spanlist = document.select("span[data-w-e-type]"); + for (Element span : spanlist) { + String paramKey = span.attr("data-fieldMark"); + span.text(map.getOrDefault(paramKey, "")); + span.unwrap(); + } + manageNode.setNodeContent(document.body().html()); + manageNodeList.add(manageNode); + } + } + + return manageNodeList; + } + /** * 根据管理路径生成任务 * @param signPatientManageRoute 签约管理路径 @@ -853,58 +995,6 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage return document.body().html(); } - /** - * 话术json参数替换 - * @param flowScheme 话术json - * @param labelFieldContentList 患者画像信息 - * @return - */ - private String getFlowScheme(String flowScheme, List labelFieldContentList) { - // 话术库json内容替换 - if (StringUtils.isNotBlank(flowScheme) && org.apache.commons.lang3.StringUtils.contains(flowScheme, "{{") && org.apache.commons.lang3.StringUtils.contains(flowScheme, "}}")) { - // 替换#{}中的内容 - Pattern pattern = Pattern.compile("#\\{([^\\}]*)\\}"); - Matcher matcher = pattern.matcher(flowScheme); - while (matcher.find()) { - //过滤出符合条件的对象,不匹配返回null。 - LabelFieldInfoContentVo labelFieldContent = labelFieldContentList.stream().filter(s -> Objects.equals(s.getFieldCode(), matcher.group(1))).findFirst().orElse(null); - if (ObjectUtils.isNotEmpty(labelFieldContent)) { - flowScheme = flowScheme.replaceAll("#\\{"+matcher.group(1) +"\\}", ObjectUtils.isEmpty(labelFieldContent) ? "" : labelFieldContent.getFieldValue()); - } - } - } - return flowScheme; - } - - /** - * * 短信模板内容 - * @param messageTemplateId 短信模板主键 - * @param labelFieldContentList 患者画像信息 - * @return - */ - private String replaceMessageInfo(Long messageTemplateId, List labelFieldContentList) { - // 查询短信模板 - TextMessage textMessage = textMessageMapper.selectTextMessageById(messageTemplateId); - if (ObjectUtils.isNotEmpty(textMessage)) { - String textMessageContent = textMessage.getTextMessageContent(); - if (StringUtils.isBlank(textMessageContent)) { - return null; - } - // 替换{{}}中的内容 - Pattern pattern = Pattern.compile("#\\{([^\\}]*)\\}"); - Matcher matcher = pattern.matcher(textMessage.getTextMessageContent()); - while (matcher.find()) { - // 过滤出符合条件的对象,不匹配返回null。 - LabelFieldInfoContentVo labelFieldContent = labelFieldContentList.stream().filter(s -> Objects.equals(s.getFieldCode(), matcher.group(1))).findFirst().orElse(null); - if (ObjectUtils.isNotEmpty(labelFieldContent)) { - textMessageContent = textMessageContent.replaceAll("#\\{"+matcher.group(1) +"\\}", ObjectUtils.isEmpty(labelFieldContent) ? "" : labelFieldContent.getFieldValue()); - } - } - return textMessageContent; - } - return null; - } - /** * 替换短信、公众号、小程序内容 * @param manageRouteNode 签约路径节点 @@ -930,93 +1020,6 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage } } - /** - * 替换公众号、小程序模板内容 - * @param templateId 微信库模板id - * @param labelFieldContentList 患者画像信息 - */ - private String replaceWeChatTemplate(Long templateId, List labelFieldContentList) { - WechatTemplate wechatTemplate = wechatTemplateMapper.selectWechatTemplateById(templateId); - if (ObjectUtils.isEmpty(wechatTemplate)){ - return null; - } - String templateContent = wechatTemplate.getTemplateContent(); - if (StringUtils.isBlank(templateContent)) { - return null; - } - Pattern pattern = Pattern.compile("#\\{([^\\}]*)\\}"); - Matcher matcher = pattern.matcher(templateContent); - while (matcher.find()) { - // 过滤出符合条件的对象,不匹配返回null。 - LabelFieldInfoContentVo labelFieldContent = labelFieldContentList.stream().filter(s -> Objects.equals(s.getFieldCode(), matcher.group(1))).findFirst().orElse(null); - if (ObjectUtils.isNotEmpty(labelFieldContent)) { - templateContent = templateContent.replaceAll("#\\{"+matcher.group(1) +"\\}", ObjectUtils.isEmpty(labelFieldContent) ? "" : labelFieldContent.getFieldValue()); - } - } - return templateContent; - } - - /** - * 替换节点标签内容 - * @param manageRouteNode 签约管理路径节点 - * @param taskPartitionDictId 专病节点任务细分 - * @param labelFieldContentList 患者画像 - * @return 签约路径节点列表 - */ - @Override - public List replaceNodeContent(SignPatientManageNodeAuditVo manageRouteNode, Long taskPartitionDictId, List labelFieldContentList) { - List manageNodeList = new ArrayList<>(); - Map> groupByRang = labelFieldContentList.stream().collect(Collectors.groupingBy(LabelFieldInfoContentVo::getApplyRange)); - // 筛选应用范围是否有私用的画像 - List privateLabelFields = groupByRang.get("PRIVATE"); - List publicLabelFields = groupByRang.get("PUBLIC"); - - // 按照sn进行分组,判断生成几条任务 - Map> groupByPartition = privateLabelFields.stream().collect(Collectors.groupingBy(LabelFieldInfoContentVo::getTaskPartitionDictId)); - List nodeLabelFieldContent = groupByPartition.get(taskPartitionDictId); - if (CollectionUtils.isEmpty(privateLabelFields) || CollectionUtils.isEmpty(nodeLabelFieldContent)) { - // 都是公有属性,只生成一条任务 - SignPatientManageNodeAuditVo manageNode = new SignPatientManageNodeAuditVo(); - BeanUtils.copyBeanProp(manageNode, manageRouteNode); - // 替换文本 - Map map = publicLabelFields.stream().collect(Collectors.toMap(LabelFieldInfoContentVo::getFieldCode,LabelFieldInfoContentVo::getFieldValue,(key1,key2)->key2)); - Document document = Jsoup.parse(manageNode.getNodeContent()); - // 需要提取的span - Elements spanlist = document.select("span[data-w-e-type]"); - for (Element span : spanlist) { - String paramKey = span.attr("data-fieldMark"); - span.text(map.getOrDefault(paramKey, "")); - span.unwrap(); - } - manageNode.setNodeContent(document.body().html()); - manageNodeList.add(manageNode); - } else { - Map> groupBySn = nodeLabelFieldContent.stream().collect(Collectors.groupingBy(LabelFieldInfoContentVo::getPortraitSn)); - - for (String portraitSn : groupBySn.keySet()) { - SignPatientManageNodeAuditVo manageNode = new SignPatientManageNodeAuditVo(); - BeanUtils.copyBeanProp(manageNode, manageRouteNode); - // 替换文本 - List nodeParams = groupBySn.get(portraitSn); - nodeParams.addAll(publicLabelFields); - - Map map = nodeParams.stream().collect(Collectors.toMap(LabelFieldInfoContentVo::getFieldCode,LabelFieldInfoContentVo::getFieldValue,(key1,key2)->key2)); - Document document = Jsoup.parse(manageNode.getNodeContent()); - // 需要提取的span - Elements spanlist = document.select("span[data-w-e-type]"); - for (Element span : spanlist) { - String paramKey = span.attr("data-fieldMark"); - span.text(map.getOrDefault(paramKey, "")); - span.unwrap(); - } - manageNode.setNodeContent(document.body().html()); - manageNodeList.add(manageNode); - } - } - - return manageNodeList; - } - private boolean judgeTriggerCondition(SpecialDiseaseTriggerCondition triggerCondition, PatientAllInfoViewUppercase patientAllInfo, List labelFieldContentList) { List labelValueList = new ArrayList<>(); String triggerConditionCode = triggerCondition.getTriggerConditionCode().replaceAll("_", ""); diff --git a/postdischarge-manage/src/main/resources/mapper/manage/patientblacklist/PatientBlacklistMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/patientblacklist/PatientBlacklistMapper.xml index 2b94d540..a9361643 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/patientblacklist/PatientBlacklistMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/patientblacklist/PatientBlacklistMapper.xml @@ -65,6 +65,7 @@ ${params.dataScope} + order by b.id desc