diff --git a/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPhysicalServiceImpl.java b/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPhysicalServiceImpl.java index 0bd8e5ec..0f4fd70c 100644 --- a/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPhysicalServiceImpl.java +++ b/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPhysicalServiceImpl.java @@ -1,6 +1,7 @@ package com.supervision.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import com.supervision.exception.BusinessException; @@ -12,12 +13,11 @@ import com.supervision.service.*; import com.supervision.util.UserUtil; import com.supervision.vo.ask.DiagnosisPhysicalRecordVo; import com.supervision.vo.ask.AskPhysicalHistoryResVO; +import com.supervision.vo.ask.DiagnosisPrimaryVO; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.Comparator; -import java.util.List; -import java.util.Optional; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; import java.util.function.Predicate; @@ -37,10 +37,14 @@ public class AskPhysicalServiceImpl implements AskPhysicalService { private final ProcessService processService; + private final DiagnosisPrimaryRelationService diagnosisPrimaryRelationService; + + private final DiagnosisPrimaryService diagnosisPrimaryService; + @Override public List queryPhysicalToolList() { - return toolService.queryPhysicalToolList(); + return toolService.queryPhysicalToolList(); } @Override @@ -101,14 +105,29 @@ public class AskPhysicalServiceImpl implements AskPhysicalService { @Override public List queryAskPhysicalHistory(String processId) { - return diagnosisPhysicalRecordService.queryAskPhysicalHistory(processId).stream() - .filter(distinctPredicateNotNull(e->e.getToolId()+e.getLocationId())).collect(Collectors.toList()); - } - + List res = diagnosisPhysicalRecordService.queryAskPhysicalHistory(processId); + // 这里把初步诊断的疾病名称填充进去 + List relationList = diagnosisPrimaryRelationService.lambdaQuery().eq(DiagnosisPrimaryRelation::getType, 2) + .eq(DiagnosisPrimaryRelation::getProcessId, processId).list(); + Map> relationMap = relationList.stream().collect(Collectors.groupingBy(DiagnosisPrimaryRelation::getRelationId)); + + // 找到process对应的所有的初步诊断 + List diagnosisPrimaryVOS = diagnosisPrimaryService.queryAskPrimaryList(processId); + Map diseaseNameMap = diagnosisPrimaryVOS.stream().collect(Collectors.toMap(DiagnosisPrimaryVO::getId, DiagnosisPrimaryVO::getPrimaryDiseaseName)); + for (AskPhysicalHistoryResVO node : res) { + List temp = relationMap.get(node.getId()); + List diseaseNameList = new ArrayList<>(); + if (CollUtil.isNotEmpty(temp)) { + for (DiagnosisPrimaryRelation relation : temp) { + String diseaseName = diseaseNameMap.get(relation.getPrimaryId()); + diseaseNameList.add(diseaseName); + } + } + node.setResult(StrUtil.join(";", diseaseNameList)); + } - public static Predicate distinctPredicateNotNull(Function function){ - ConcurrentHashMap map = new ConcurrentHashMap<>(); - return t-> null != function.apply(t) && null == map.putIfAbsent(function.apply(t), true); + return res; } + }