From 8c8764bf0dbc773f3949f43e349ddb7e6101621f Mon Sep 17 00:00:00 2001 From: zhangheng <3226558941@qq.com> Date: Thu, 30 May 2024 10:53:38 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E4=B8=93=E7=97=85=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SpecialDiseaseNodeServiceImpl.java | 167 +++++++++--------- 1 file changed, 84 insertions(+), 83 deletions(-) diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseasenode/impl/SpecialDiseaseNodeServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseasenode/impl/SpecialDiseaseNodeServiceImpl.java index a40f93d0..07dbd461 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseasenode/impl/SpecialDiseaseNodeServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseasenode/impl/SpecialDiseaseNodeServiceImpl.java @@ -143,7 +143,7 @@ public class SpecialDiseaseNodeServiceImpl implements ISpecialDiseaseNodeService if (StringUtils.isNotBlank(diseaseNode.getRouteNodeName()) && Objects.nonNull(diseaseNode.getRouteNodeDay()) && StringUtils.isNotBlank(diseaseNode.getTaskType()) && StringUtils.isNotBlank(diseaseNode.getTaskSubdivision()) && StringUtils.isNotBlank(diseaseNode.getTaskStatus())) { diseaseNode.setRouteId(specialDiseaseRoute.getId()); diseaseNode.setRouteName(specialDiseaseNode.getRouteName()); - diseaseNode.setTemplateType(diseaseNode.getTaskSubdivisiontemplateType()); + diseaseNode.setTemplateType(StringUtils.isBlank(diseaseNode.getTaskSubdivisiontemplateType()) ? "" : diseaseNode.getTaskSubdivisiontemplateType()); diseaseNode.setUpdateTime(LocalDateTime.now()); diseaseNode.setUpdateBy(SecurityUtils.getUsername()); specialDiseaseNodeVOS.add(diseaseNode); @@ -206,88 +206,89 @@ public class SpecialDiseaseNodeServiceImpl implements ISpecialDiseaseNodeService return AjaxResult.success(specialDiseaseNodeMapper.updateSpecialDiseaseNode(specialDiseaseNode)); } - @Override - public List> getParams(Long id, Long patientId) { - List> retList = new ArrayList<>(); - // 根据节点id查询是否有已经维护的参数 - PatientNodeParamsCurrent paramsQuery = new PatientNodeParamsCurrent(); - paramsQuery.setPatientId(patientId); - paramsQuery.setRouteNodeId(id); - List nodeParams = patientNodeParamsCurrentMapper.selectPatientNodeParamsCurrentList(paramsQuery); + @Override + public List> getParams(Long id, Long patientId) { + List> retList = new ArrayList<>(); + // 根据节点id查询是否有已经维护的参数 + PatientNodeParamsCurrent paramsQuery = new PatientNodeParamsCurrent(); + paramsQuery.setPatientId(patientId); + paramsQuery.setRouteNodeId(id); + List nodeParams = patientNodeParamsCurrentMapper.selectPatientNodeParamsCurrentList(paramsQuery); - // 查询SpecialDiseaseNode中包含的可编辑标签 - List diseaseNodeParams = new ArrayList<>(); - SpecialDiseaseNode specialDiseaseNode = specialDiseaseNodeMapper.selectSpecialDiseaseNodeById(id); - if (StringUtils.isNotBlank(specialDiseaseNode.getNodeContent()) && specialDiseaseNode.getNodeContent().contains("data-fieldMark")) { - JSONObject paramValues = getParamsValue(specialDiseaseNode.getTaskSubdivision(), patientId); - Document document = Jsoup.parse(specialDiseaseNode.getNodeContent()); - // 需要提取的span - Elements spanlist = document.select("span[data-w-e-type]"); - for (Element span : spanlist) { - PatientNodeParamsCurrent nodeParamCurrent = new PatientNodeParamsCurrent(); - String paramKey = span.attr("data-fieldMark"); - String paramName = span.attr("data-fileSpan"); - nodeParamCurrent.setSn("1"); - nodeParamCurrent.setParamName(paramName); - nodeParamCurrent.setParamKey(paramKey); - nodeParamCurrent.setParamValue(paramValues.getOrDefault(paramKey, "").toString()); - diseaseNodeParams.add(nodeParamCurrent); - } - // nodeParams去重 - diseaseNodeParams = diseaseNodeParams.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()-> new TreeSet<>(Comparator.comparing(PatientNodeParamsCurrent::getParamKey))), ArrayList::new)); - } - // 之前未维护过参数专病路径节点中的参数为返回值 - if (CollectionUtils.isEmpty(nodeParams)) { - retList.add(diseaseNodeParams); - } else { - // 之前维护过参数则将参数进行对比 - Map> groupBySn = nodeParams.stream().collect(Collectors.groupingBy(PatientNodeParamsCurrent::getSn)); - for (String sn : groupBySn.keySet()) { - List oldParams = groupBySn.get(sn); - //List paramKeys = oldParams.stream().map(PatientNodeParamsCurrent::getParamKey).collect(Collectors.toList()); - //List newKeys = diseaseNodeParams.stream().map(PatientNodeParamsCurrent::getParamKey).collect(Collectors.toList()); - //if (ListUtils.isEqualList(paramKeys, newKeys)) { - // retList.add(oldParams); - //} else { - // for(PatientNodeParamsCurrent nodeParam : diseaseNodeParams) { - // if (!paramKeys.contains(nodeParam.getParamKey())) { - // oldParams.add(nodeParam); - // } - // if (!newKeys.contains(nodeParam.getParamKey())) { - // oldParams.remove(nodeParam); - // } - // } - retList.add(oldParams); - //} - } - } - return retList; - } + // 查询SpecialDiseaseNode中包含的可编辑标签 + List diseaseNodeParams = new ArrayList<>(); + SpecialDiseaseNode specialDiseaseNode = specialDiseaseNodeMapper.selectSpecialDiseaseNodeById(id); + if (StringUtils.isNotBlank(specialDiseaseNode.getNodeContent()) && specialDiseaseNode.getNodeContent().contains("data-fieldMark")) { + JSONObject paramValues = getParamsValue(specialDiseaseNode.getTaskSubdivision(), patientId); + Document document = Jsoup.parse(specialDiseaseNode.getNodeContent()); + // 需要提取的span + Elements spanlist = document.select("span[data-w-e-type]"); + for (Element span : spanlist) { + PatientNodeParamsCurrent nodeParamCurrent = new PatientNodeParamsCurrent(); + String paramKey = span.attr("data-fieldMark"); + String paramName = span.attr("data-fileSpan"); + nodeParamCurrent.setSn("1"); + nodeParamCurrent.setParamName(paramName); + nodeParamCurrent.setParamKey(paramKey); + nodeParamCurrent.setParamValue(paramValues.getOrDefault(paramKey, "").toString()); + diseaseNodeParams.add(nodeParamCurrent); + } + // nodeParams去重 + diseaseNodeParams = diseaseNodeParams.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(PatientNodeParamsCurrent::getParamKey))), ArrayList::new)); + } + // 之前未维护过参数专病路径节点中的参数为返回值 + if (CollectionUtils.isEmpty(nodeParams)) { + retList.add(diseaseNodeParams); + } else { + // 之前维护过参数则将参数进行对比 + Map> groupBySn = nodeParams.stream().collect(Collectors.groupingBy(PatientNodeParamsCurrent::getSn)); + for (String sn : groupBySn.keySet()) { + List oldParams = groupBySn.get(sn); + //List paramKeys = oldParams.stream().map(PatientNodeParamsCurrent::getParamKey).collect(Collectors.toList()); + //List newKeys = diseaseNodeParams.stream().map(PatientNodeParamsCurrent::getParamKey).collect(Collectors.toList()); + //if (ListUtils.isEqualList(paramKeys, newKeys)) { + // retList.add(oldParams); + //} else { + // for(PatientNodeParamsCurrent nodeParam : diseaseNodeParams) { + // if (!paramKeys.contains(nodeParam.getParamKey())) { + // oldParams.add(nodeParam); + // } + // if (!newKeys.contains(nodeParam.getParamKey())) { + // oldParams.remove(nodeParam); + // } + // } + retList.add(oldParams); + //} + } + } + return retList; + } - /** - * 根据任务细分类型获取患者的真实信息 - * @param taskSubdivision 任务细分类型code - * @param patientId 患者主键 - * @return 实际信息 - */ - private JSONObject getParamsValue(String taskSubdivision, Long patientId) { - JSONObject retObj = new JSONObject(); - PatientInfo patientInfo = patientInfoMapper.selectPatientInfoById(patientId); - switch (taskSubdivision) { - // 健康档案 - case "HEALTH_ARCHIVE": - retObj = JSONObject.parseObject(JSONObject.toJSONString(patientInfo)); - // 性别转换成中文、计算年龄 - retObj.fluentPut("sex", PatientSexEnum.getInfoByCode(patientInfo.getSex()).getInfo()) - .fluentPut("age", BaseUtil.getAge(patientInfo.getBirthDate())); - break; - default: - DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - retObj.fluentPut("patientName", patientInfo.getPatientName()) - .fluentPut("dischargeTime", patientInfo.getDischargeTime() == null ? "" : patientInfo.getDischargeTime().format(df)) - .fluentPut("visitDate", patientInfo.getVisitDate().format(df)); - break; - } - return retObj; - } + /** + * 根据任务细分类型获取患者的真实信息 + * + * @param taskSubdivision 任务细分类型code + * @param patientId 患者主键 + * @return 实际信息 + */ + private JSONObject getParamsValue(String taskSubdivision, Long patientId) { + JSONObject retObj = new JSONObject(); + PatientInfo patientInfo = patientInfoMapper.selectPatientInfoById(patientId); + switch (taskSubdivision) { + // 健康档案 + case "HEALTH_ARCHIVE": + retObj = JSONObject.parseObject(JSONObject.toJSONString(patientInfo)); + // 性别转换成中文、计算年龄 + retObj.fluentPut("sex", PatientSexEnum.getInfoByCode(patientInfo.getSex()).getInfo()) + .fluentPut("age", BaseUtil.getAge(patientInfo.getBirthDate())); + break; + default: + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + retObj.fluentPut("patientName", patientInfo.getPatientName()) + .fluentPut("dischargeTime", patientInfo.getDischargeTime() == null ? "" : patientInfo.getDischargeTime().format(df)) + .fluentPut("visitDate", patientInfo.getVisitDate().format(df)); + break; + } + return retObj; + } } From 2fdeb332adf68daf8025fb22c822c4c29ea81fd1 Mon Sep 17 00:00:00 2001 From: zhangheng <3226558941@qq.com> Date: Thu, 30 May 2024 11:17:43 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E4=B8=93=E7=97=85=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xinelu/common/enums/TemplateTypeEnum.java | 39 +++++++++++++++++++ .../impl/SpecialDiseaseNodeServiceImpl.java | 6 ++- 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 postdischarge-common/src/main/java/com/xinelu/common/enums/TemplateTypeEnum.java diff --git a/postdischarge-common/src/main/java/com/xinelu/common/enums/TemplateTypeEnum.java b/postdischarge-common/src/main/java/com/xinelu/common/enums/TemplateTypeEnum.java new file mode 100644 index 00000000..88b9baaa --- /dev/null +++ b/postdischarge-common/src/main/java/com/xinelu/common/enums/TemplateTypeEnum.java @@ -0,0 +1,39 @@ +package com.xinelu.common.enums; + +import lombok.Getter; + +@Getter +public enum TemplateTypeEnum { + + /** + * 话术 + */ + SCRIPT("SCRIPT"), + + /** + * 微信 + */ + WECHAT("WECHAT"), + + /** + * 短信 + */ + TEXT_MESSAGE("TEXT_MESSAGE"), + + /** + * 问卷 + */ + QUESTIONNAIRE("QUESTIONNAIRE"), + + /** + * 宣教 + */ + PROPAGANDA("PROPAGANDA"), + ; + + final private String info; + + TemplateTypeEnum(String info) { + this.info = info; + } +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseasenode/impl/SpecialDiseaseNodeServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseasenode/impl/SpecialDiseaseNodeServiceImpl.java index 07dbd461..8e647966 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseasenode/impl/SpecialDiseaseNodeServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseasenode/impl/SpecialDiseaseNodeServiceImpl.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson2.JSONObject; import com.xinelu.common.core.domain.AjaxResult; import com.xinelu.common.enums.PatientSexEnum; import com.xinelu.common.enums.ReleaseStatusEnum; +import com.xinelu.common.enums.TemplateTypeEnum; import com.xinelu.common.exception.ServiceException; import com.xinelu.common.utils.BaseUtil; import com.xinelu.common.utils.SecurityUtils; @@ -143,7 +144,10 @@ public class SpecialDiseaseNodeServiceImpl implements ISpecialDiseaseNodeService if (StringUtils.isNotBlank(diseaseNode.getRouteNodeName()) && Objects.nonNull(diseaseNode.getRouteNodeDay()) && StringUtils.isNotBlank(diseaseNode.getTaskType()) && StringUtils.isNotBlank(diseaseNode.getTaskSubdivision()) && StringUtils.isNotBlank(diseaseNode.getTaskStatus())) { diseaseNode.setRouteId(specialDiseaseRoute.getId()); diseaseNode.setRouteName(specialDiseaseNode.getRouteName()); - diseaseNode.setTemplateType(StringUtils.isBlank(diseaseNode.getTaskSubdivisiontemplateType()) ? "" : diseaseNode.getTaskSubdivisiontemplateType()); + if (StringUtils.isNotBlank(diseaseNode.getTaskSubdivisiontemplateType()) + && (TemplateTypeEnum.QUESTIONNAIRE.getInfo().equals(diseaseNode.getTaskSubdivisiontemplateType()) || TemplateTypeEnum.PROPAGANDA.getInfo().equals(diseaseNode.getTaskSubdivisiontemplateType()))) { + diseaseNode.setTemplateType(diseaseNode.getTaskSubdivisiontemplateType()); + } diseaseNode.setUpdateTime(LocalDateTime.now()); diseaseNode.setUpdateBy(SecurityUtils.getUsername()); specialDiseaseNodeVOS.add(diseaseNode); From 208efb06b080fd418a704cdaba5d5015b2ddcadf Mon Sep 17 00:00:00 2001 From: zhangheng <3226558941@qq.com> Date: Thu, 30 May 2024 13:33:49 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E4=B8=93=E7=97=85=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../specialdiseasenode/impl/SpecialDiseaseNodeServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseasenode/impl/SpecialDiseaseNodeServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseasenode/impl/SpecialDiseaseNodeServiceImpl.java index 8e647966..e433ebba 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseasenode/impl/SpecialDiseaseNodeServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseasenode/impl/SpecialDiseaseNodeServiceImpl.java @@ -144,6 +144,7 @@ public class SpecialDiseaseNodeServiceImpl implements ISpecialDiseaseNodeService if (StringUtils.isNotBlank(diseaseNode.getRouteNodeName()) && Objects.nonNull(diseaseNode.getRouteNodeDay()) && StringUtils.isNotBlank(diseaseNode.getTaskType()) && StringUtils.isNotBlank(diseaseNode.getTaskSubdivision()) && StringUtils.isNotBlank(diseaseNode.getTaskStatus())) { diseaseNode.setRouteId(specialDiseaseRoute.getId()); diseaseNode.setRouteName(specialDiseaseNode.getRouteName()); + diseaseNode.setTemplateType(null); if (StringUtils.isNotBlank(diseaseNode.getTaskSubdivisiontemplateType()) && (TemplateTypeEnum.QUESTIONNAIRE.getInfo().equals(diseaseNode.getTaskSubdivisiontemplateType()) || TemplateTypeEnum.PROPAGANDA.getInfo().equals(diseaseNode.getTaskSubdivisiontemplateType()))) { diseaseNode.setTemplateType(diseaseNode.getTaskSubdivisiontemplateType()); From c205545f3f39bdc85a306903925a43be5f4f18ac Mon Sep 17 00:00:00 2001 From: zhangheng <3226558941@qq.com> Date: Thu, 30 May 2024 14:35:04 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E4=B8=93=E7=97=85=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SpecialDiseaseRouteServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseaseroute/impl/SpecialDiseaseRouteServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseaseroute/impl/SpecialDiseaseRouteServiceImpl.java index 1245fcfc..bb75361a 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseaseroute/impl/SpecialDiseaseRouteServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/specialdiseaseroute/impl/SpecialDiseaseRouteServiceImpl.java @@ -226,8 +226,8 @@ public class SpecialDiseaseRouteServiceImpl implements ISpecialDiseaseRouteServi } if (ReleaseStatusEnum.PUBLISHED.getInfo().equals(specialDiseaseRoute.getReleaseStatus())) { int count = specialDiseaseRouteMapper.selectRouteCheckStatus(specialDiseaseRoute.getId(), RouteCheckStatusEnum.AGREE.getInfo()); - if (count > 0) { - return AjaxResult.error("该路径存在未审核的节点,请全部审核后发布!"); + if (count >= 0) { + return AjaxResult.error("该路径无节点或存在未审核的节点,请全部审核后发布!"); } } if (ReleaseStatusEnum.UNPUBLISHED.getInfo().equals(specialDiseaseRoute.getReleaseStatus())) {