|
@@ -181,7 +181,12 @@ public class NeoFacade {
|
|
|
if (ListUtil.isNotEmpty(diseaseProperty)) {
|
|
|
Map map = diseaseProperty.stream().collect(Collectors.toMap(
|
|
|
k -> RedisEnum.symptomNumType.getName() + k.getDisease(),
|
|
|
- v -> v.getNum(),
|
|
|
+ v -> {
|
|
|
+ Map<String, String> desc = new HashMap<>();
|
|
|
+ desc.put("name", v.getDisease());
|
|
|
+ desc.put("num", v.getNum().toString());
|
|
|
+ return desc;
|
|
|
+ },
|
|
|
(v1, v2) -> (v2)
|
|
|
));
|
|
|
redisTemplate.opsForValue().multiSet(map);
|
|
@@ -466,15 +471,21 @@ public class NeoFacade {
|
|
|
public void filterAndSort(List<String> dises, List<String> allDis, int gender_code, double age, PD pd, List<String> depts) {
|
|
|
//推送出的所有疾病进行性别和年龄的过滤
|
|
|
List<Map<String, String>> diseases = null;
|
|
|
- Map<String, Double> dis_fbl = new HashMap<>();
|
|
|
+// Map<String, Double> dis_fbl = new HashMap<>();
|
|
|
+ Map<String, Integer> dis_symptom_num = new HashMap<>();
|
|
|
if (ListUtil.isNotEmpty(allDis)) {
|
|
|
- // diseases = redisUtil.get(allDis);
|
|
|
diseases = redisUtil.geth(allDis);
|
|
|
allDis = diseases.stream().filter(x -> NeoUtil.matchBasic(x, gender_code, age) && NeoUtil.matchPds(x.get("name"), pd)
|
|
|
- && NeoUtil.matchDept(x,depts))
|
|
|
- // allDis = diseases.stream().filter(x -> NeoUtil.matchBasic(x, gender_code, age))
|
|
|
- .map(x -> x.get("name")).collect(Collectors.toList());
|
|
|
- diseases.forEach(x -> dis_fbl.put(x.get("name"), Double.parseDouble(x.get("fbl"))));
|
|
|
+ && NeoUtil.matchDept(x,depts)).map(x -> x.get("name")).collect(Collectors.toList());
|
|
|
+// diseases.forEach(x -> dis_fbl.put(x.get("name"), Double.parseDouble(x.get("fbl"))));
|
|
|
+ List<Map<String, String>> symptomNumOfDis = redisUtil.getSymptomNumOfDis(allDis);
|
|
|
+ if(ListUtil.isNotEmpty(symptomNumOfDis)){
|
|
|
+ symptomNumOfDis.forEach(x -> {
|
|
|
+ String name = x.get("name");
|
|
|
+ Integer num = Integer.parseInt(x.get("num"));
|
|
|
+ dis_symptom_num.put(name,num);
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
Map<Long, List<String>> numberDiseasesMap = disCountSort(allDis);
|
|
@@ -483,12 +494,18 @@ public class NeoFacade {
|
|
|
Map<Long, Map<String, Double>> disPack = new LinkedHashMap<>();
|
|
|
numberDiseasesMap.forEach((x, y) -> {
|
|
|
Map<String, Double> collect = y.stream()
|
|
|
- .collect(Collectors.toMap(v -> v, v -> dis_fbl.get(v), (e1, e2) -> e2));
|
|
|
+// .collect(Collectors.toMap(v -> v, v -> dis_fbl.get(v), (e1, e2) -> e2));
|
|
|
+ .collect(Collectors.toMap(v -> v, v -> Double.valueOf(dis_symptom_num.get(v)), (e1, e2) -> e2));
|
|
|
disPack.put(x, collect);
|
|
|
});
|
|
|
disPack.forEach((x, y) -> {
|
|
|
- Map<String, Double> collect = y.entrySet().stream()
|
|
|
+ //倒序排序
|
|
|
+ /*Map<String, Double> collect = y.entrySet().stream()
|
|
|
.sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
|
|
|
+ .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e2, LinkedHashMap::new));*/
|
|
|
+ //正序排序
|
|
|
+ Map<String, Double> collect = y.entrySet().stream()
|
|
|
+ .sorted(Map.Entry.comparingByValue())
|
|
|
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e2, LinkedHashMap::new));
|
|
|
disPack.put(x, collect);
|
|
|
collect.forEach((k, n) -> {
|