|
@@ -455,6 +455,54 @@ public class ScoreDataServiceImpl implements IScoreDataService {
|
|
|
return baseMapper.classRank(scoreData);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 班级总分平均分排名统计折线
|
|
|
+ * @param scoreData
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> classRankZheXian(ScoreData scoreData) {
|
|
|
+ Map<String, Object> map = new HashMap<>(3);
|
|
|
+
|
|
|
+ //接受考试类型/考试时间/考试班级名称
|
|
|
+ //查询出所有对应班级的考试id和平均分
|
|
|
+ List<ScoreDataVo> scoreDataVos = baseMapper.avgRank(scoreData);
|
|
|
+ if (scoreDataVos != null && scoreDataVos.size() > 0) {
|
|
|
+ long[] scoreIds = scoreDataVos.stream().mapToLong(ScoreDataVo::getScoreId).toArray();
|
|
|
+ //拿着考试id去查询对应学生
|
|
|
+ List<ScoreDataStudentVo> scoreDataStudentVos = scoreDataStudentMapper.selectScoreByScoreIds(scoreIds);
|
|
|
+ List<String> x = new ArrayList<>();
|
|
|
+ List<Integer> y1 = new ArrayList<>();
|
|
|
+ List<Integer> y2 = new ArrayList<>();
|
|
|
+ //判断对应班级的对应学生的总分在班级总分平均分的位置
|
|
|
+ for (ScoreDataVo scoreDataVo : scoreDataVos) {
|
|
|
+ //存放X轴数据
|
|
|
+ x.add(scoreDataVo.getScoreClassName());
|
|
|
+ Long scoreId = scoreDataVo.getScoreId();
|
|
|
+ //班级平均分
|
|
|
+ double avg = scoreDataVo.getAvg();
|
|
|
+ Map<Long, List<ScoreDataStudentVo>> collect = scoreDataStudentVos.stream().collect(Collectors.groupingBy(ScoreDataStudentVo::getScoreId));
|
|
|
+ //获取对应考试的学生集合
|
|
|
+ List<ScoreDataStudentVo> scoreDataStudentVosList = collect.get(scoreId);
|
|
|
+ //进行平均分的判断
|
|
|
+ if (scoreDataStudentVosList != null && scoreDataStudentVosList.size() > 0){
|
|
|
+ List<ScoreDataStudentVo> scoreDataStudentVosListUp = scoreDataStudentVosList.stream().filter(scoreDataStudent -> scoreDataStudent.getZongfen() >= avg)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ List<ScoreDataStudentVo> scoreDataStudentVosListDown = scoreDataStudentVosList.stream().filter(scoreDataStudent -> scoreDataStudent.getZongfen() < avg)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ scoreDataVo.setUp(scoreDataStudentVosListUp.size());
|
|
|
+ scoreDataVo.setDown(scoreDataStudentVosListDown.size());
|
|
|
+ y1.add(scoreDataStudentVosListUp.size());
|
|
|
+ y2.add(scoreDataStudentVosListDown.size());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ map.put("x",x);
|
|
|
+ map.put("y1",y1);
|
|
|
+ map.put("y2",y2);
|
|
|
+ }
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 班级总分平均分人数统计
|
|
|
*/
|