|
@@ -34,6 +34,7 @@ import java.util.ArrayList;
|
|
|
import java.util.Collections;
|
|
|
import java.util.Comparator;
|
|
|
import java.util.HashMap;
|
|
|
+import java.util.Iterator;
|
|
|
import java.util.LinkedHashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
@@ -244,7 +245,7 @@ public class AIFacade {
|
|
|
}
|
|
|
if (disFeatureMap.get("可能诊断") != null && ListUtil.isEmpty(items)) {
|
|
|
List<SYFFeatureDTO> featureRateList = disFeatureMap.get("可能诊断");
|
|
|
- List<SYFDiseaseDeptDTO> mergeFeatureList = Lists.newLinkedList();
|
|
|
+ List<SYFDiseaseDeptDTO> syfDiseaseDeptList = Lists.newLinkedList();
|
|
|
Map<String, List<SYFFeatureDTO>> syfFeatureMap = new HashMap<>();
|
|
|
//根据阈值(0.05)过滤诊断
|
|
|
featureRateList = featureRateList
|
|
@@ -252,7 +253,28 @@ public class AIFacade {
|
|
|
.filter(i -> (i.getRate() != null && Double.valueOf(i.getRate()) > 0.05d))
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
- for (SYFFeatureDTO syfFeatureDTO : featureRateList) {
|
|
|
+ //对应后名称相同的项合并
|
|
|
+ Map<String, List<SYFFeatureDTO>> mergeSYFFeatureMap
|
|
|
+ = EntityUtil.makeEntityListMap(featureRateList, "diseaseName");
|
|
|
+ List<SYFFeatureDTO> mergeDisDTO = Lists.newArrayList();
|
|
|
+ for (Map.Entry<String, List<SYFFeatureDTO>> entry : mergeSYFFeatureMap.entrySet()) {
|
|
|
+ if (ListUtil.isEmpty(entry.getValue())) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ SYFFeatureDTO syfFeatureDTO = new SYFFeatureDTO();
|
|
|
+ BeanUtil.copyProperties(entry.getValue().get(0), syfFeatureDTO);
|
|
|
+ Double rate = 0d;
|
|
|
+ String conceptDisName = "";
|
|
|
+ for (SYFFeatureDTO featureDTO : entry.getValue()) {
|
|
|
+ rate += Double.valueOf(featureDTO.getRate());
|
|
|
+ conceptDisName += featureDTO.getFeatureName() + ",";
|
|
|
+ }
|
|
|
+ syfFeatureDTO.setRate(rate.toString());
|
|
|
+ syfFeatureDTO.setFeatureName(conceptDisName.substring(0, conceptDisName.length() - 1));
|
|
|
+ mergeDisDTO.add(syfFeatureDTO);
|
|
|
+ }
|
|
|
+
|
|
|
+ for (SYFFeatureDTO syfFeatureDTO : mergeDisDTO) {
|
|
|
if (StringUtil.isNotBlank(syfFeatureDTO.getConcatDept())) {
|
|
|
List<SYFFeatureDTO> features = Lists.newLinkedList();
|
|
|
if (syfFeatureMap.containsKey(syfFeatureDTO.getConcatDept())) {
|
|
@@ -267,7 +289,7 @@ public class AIFacade {
|
|
|
List<SYFFeatureDTO> features = Lists.newLinkedList();
|
|
|
features.add(syfFeatureDTO);
|
|
|
syfDiseaseDeptDTO.setFeatures(features);
|
|
|
- mergeFeatureList.add(syfDiseaseDeptDTO);
|
|
|
+ syfDiseaseDeptList.add(syfDiseaseDeptDTO);
|
|
|
}
|
|
|
}
|
|
|
if (syfFeatureMap != null) {
|
|
@@ -281,16 +303,16 @@ public class AIFacade {
|
|
|
rate += Double.valueOf(feature.getRate());
|
|
|
}
|
|
|
syfDiseaseDeptDTO.setRate(rate);
|
|
|
- mergeFeatureList.add(syfDiseaseDeptDTO);
|
|
|
+ syfDiseaseDeptList.add(syfDiseaseDeptDTO);
|
|
|
}
|
|
|
}
|
|
|
- Collections.sort(mergeFeatureList, new Comparator<SYFDiseaseDeptDTO>() {
|
|
|
+ Collections.sort(syfDiseaseDeptList, new Comparator<SYFDiseaseDeptDTO>() {
|
|
|
@Override
|
|
|
public int compare(SYFDiseaseDeptDTO o1, SYFDiseaseDeptDTO o2) {
|
|
|
return Double.compare(o2.getRate(), o1.getRate());
|
|
|
}
|
|
|
});
|
|
|
- for (SYFDiseaseDeptDTO syfDiseaseDeptDTO : mergeFeatureList) {
|
|
|
+ for (SYFDiseaseDeptDTO syfDiseaseDeptDTO : syfDiseaseDeptList) {
|
|
|
if (items.size() < 2) {
|
|
|
items.add(syfDiseaseDeptDTO);
|
|
|
}
|
|
@@ -350,6 +372,18 @@ public class AIFacade {
|
|
|
if (ListUtil.isEmpty(featureRateList)) {
|
|
|
return items;
|
|
|
}
|
|
|
+ //推送结果根据diseaseName去重
|
|
|
+ Iterator<SYFFeatureDTO> syfFeatureDTOIterator = featureRateList.iterator();
|
|
|
+ Map<String, SYFFeatureDTO> distinctMap = new HashMap<>();
|
|
|
+ while (syfFeatureDTOIterator.hasNext()) {
|
|
|
+ SYFFeatureDTO next = syfFeatureDTOIterator.next();
|
|
|
+ if (distinctMap.containsKey(next.getDiseaseName())) {
|
|
|
+ syfFeatureDTOIterator.remove();
|
|
|
+ } else {
|
|
|
+ distinctMap.put(next.getDiseaseName(), next);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
List<SYFDiseaseDeptDTO> mergeFeatureList = Lists.newLinkedList();
|
|
|
Map<String, List<SYFFeatureDTO>> syfFeatureMap = new HashMap<>();
|
|
|
for (SYFFeatureDTO syfFeatureDTO : featureRateList) {
|