From 83bdf4d6c1c4f4358529cf1cf39a1d67d97aa6c6 Mon Sep 17 00:00:00 2001 From: winter <2436197699@qq.com> Date: Mon, 25 Dec 2023 10:55:39 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=AD=A6=E7=94=9F=E6=8E=92=E5=90=8D?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AD=A6=E7=94=9F=E5=A4=B4=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/AdminAppraiseServiceImpl.java | 17 ++++++++++++----- .../teammodel/model/vo/admin/StudentRankVo.java | 1 + .../service/impl/EvaluationServiceImpl.java | 7 ++++++- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/main/java/cn/teammodel/controller/admin/service/impl/AdminAppraiseServiceImpl.java b/src/main/java/cn/teammodel/controller/admin/service/impl/AdminAppraiseServiceImpl.java index e8f043d..39aac0c 100644 --- a/src/main/java/cn/teammodel/controller/admin/service/impl/AdminAppraiseServiceImpl.java +++ b/src/main/java/cn/teammodel/controller/admin/service/impl/AdminAppraiseServiceImpl.java @@ -1,6 +1,5 @@ package cn.teammodel.controller.admin.service.impl; -import cn.hutool.core.lang.Pair; import cn.teammodel.common.ErrorCode; import cn.teammodel.common.PK; import cn.teammodel.config.exception.ServiceException; @@ -302,12 +301,20 @@ public class AdminAppraiseServiceImpl implements AdminAppraiseService { if (ObjectUtils.isEmpty(res)) return null; Set studentIdSet = res.stream().map(StudentRankVo::getId).collect(Collectors.toSet()); if (ObjectUtils.isEmpty(studentIdSet)) return res; + List students = studentRepository.findAllByCodeAndIdIn(String.format(PK.STUDENT, schoolId), studentIdSet); - // 提取 Student 中的 name 和 classId - Map> idNameMap = students.stream().collect(Collectors.toMap(Student::getId, item -> new Pair<>(item.getName(), item.getClassId()))); + // 利用数组作为三元组,提取 Student 中的 name 和 classId, picture + Map idNameMap = students.stream().collect(Collectors.toMap(Student::getId, item -> { + String[] studentInfo = new String[3]; + studentInfo[0] = item.getName(); + studentInfo[1]= item.getClassId(); + studentInfo[2] = item.getPicture(); + return studentInfo; + })); res.forEach(rankVo -> { - rankVo.setName(idNameMap.get(rankVo.getId()).getKey()); - rankVo.setClassName(idNameMap.get(rankVo.getId()).getValue()); + rankVo.setName(idNameMap.get(rankVo.getId())[0]); + rankVo.setClassName(idNameMap.get(rankVo.getId())[1]); + rankVo.setPicture(idNameMap.get(rankVo.getId())[2]); }); // 设置 class name diff --git a/src/main/java/cn/teammodel/model/vo/admin/StudentRankVo.java b/src/main/java/cn/teammodel/model/vo/admin/StudentRankVo.java index 04d1216..a3cd62b 100644 --- a/src/main/java/cn/teammodel/model/vo/admin/StudentRankVo.java +++ b/src/main/java/cn/teammodel/model/vo/admin/StudentRankVo.java @@ -11,4 +11,5 @@ import lombok.EqualsAndHashCode; @Data public class StudentRankVo extends RankVo{ private String className; + private String picture; } diff --git a/src/main/java/cn/teammodel/service/impl/EvaluationServiceImpl.java b/src/main/java/cn/teammodel/service/impl/EvaluationServiceImpl.java index e7b851f..6ff7531 100644 --- a/src/main/java/cn/teammodel/service/impl/EvaluationServiceImpl.java +++ b/src/main/java/cn/teammodel/service/impl/EvaluationServiceImpl.java @@ -496,9 +496,14 @@ public class EvaluationServiceImpl implements EvaluationService { int n = 1; for (int i = 0; i <= ruleSize - 1; i++) { - // 直接从第二个开始算 + // 头尾的情况要特判(理清逻辑就很简单) AchievementRule curRule = rules.get(i); int flag = praiseCount / curRule.getPromotionCount(); + // 只有一个节点也特殊处理 + if (ruleSize == 1) { + n = praiseCount / curRule.getLevelCount() + 1; + break; + } if (flag >= 1) { if (i == 0) { curAchievement = curRule;