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; + } }