|
@@ -477,9 +477,9 @@ public class ScoreDataServiceImpl implements IScoreDataService {
|
|
//过滤出本班学生id
|
|
//过滤出本班学生id
|
|
scoreDataStudentVos = scoreDataStudentVos.stream().filter(scoreDataStudentVo -> scoreDataStudentVo.getScoreId().equals(scoreId)).sorted(Comparator.comparing(ScoreDataStudentVo::getZongfen).reversed()).collect(Collectors.toList());
|
|
scoreDataStudentVos = scoreDataStudentVos.stream().filter(scoreDataStudentVo -> scoreDataStudentVo.getScoreId().equals(scoreId)).sorted(Comparator.comparing(ScoreDataStudentVo::getZongfen).reversed()).collect(Collectors.toList());
|
|
//去查询对应学生的具体学科成绩/计算学科平均分
|
|
//去查询对应学生的具体学科成绩/计算学科平均分
|
|
- //获取所有学生id
|
|
|
|
- List<Long> scoreDataNameIds = scoreDataStudentVos.stream().map(ScoreDataStudentVo::getScoreDataNameId).collect(Collectors.toList());
|
|
|
|
- List<ScoreDataDetailVo> scoreDataDetailVos = scoreDataDetailMapper.selectListByscoreDataNameId(scoreDataNameIds, scoreId);
|
|
|
|
|
|
+ //获取所有学生的student_number
|
|
|
|
+ List<String> studentNumberList = scoreDataStudentVos.stream().map(ScoreDataStudentVo::getStudentNumber).collect(Collectors.toList());
|
|
|
|
+ List<ScoreDataDetailVo> scoreDataDetailVos = scoreDataDetailMapper.selectListByStudentNumberList(studentNumberList, scoreId);
|
|
//根据学科进行分组
|
|
//根据学科进行分组
|
|
if (scoreDataDetailVos != null && scoreDataDetailVos.size() > 0) {
|
|
if (scoreDataDetailVos != null && scoreDataDetailVos.size() > 0) {
|
|
Map<String, List<ScoreDataDetailVo>> xuekeCollect = scoreDataDetailVos.parallelStream().collect(Collectors.groupingBy(ScoreDataDetailVo::getXueke));
|
|
Map<String, List<ScoreDataDetailVo>> xuekeCollect = scoreDataDetailVos.parallelStream().collect(Collectors.groupingBy(ScoreDataDetailVo::getXueke));
|
|
@@ -488,7 +488,7 @@ public class ScoreDataServiceImpl implements IScoreDataService {
|
|
//获取学科总分
|
|
//获取学科总分
|
|
double sum = scoreDataDetailVosXueke.stream().mapToDouble(ScoreDataDetailVo::getScore).sum();
|
|
double sum = scoreDataDetailVosXueke.stream().mapToDouble(ScoreDataDetailVo::getScore).sum();
|
|
//计算学科平均分 = 学科总分 /人数
|
|
//计算学科平均分 = 学科总分 /人数
|
|
- double xueKeAvg = sum / scoreDataNameIds.size();
|
|
|
|
|
|
+ double xueKeAvg = sum / studentNumberList.size();
|
|
map.put(xueke, xueKeAvg);
|
|
map.put(xueke, xueKeAvg);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -497,11 +497,11 @@ public class ScoreDataServiceImpl implements IScoreDataService {
|
|
double zongFenAvg = sum / scoreDataStudentVos.size();
|
|
double zongFenAvg = sum / scoreDataStudentVos.size();
|
|
|
|
|
|
//给学生对象插入数据
|
|
//给学生对象插入数据
|
|
- //对学生成绩根据学生id进行分组
|
|
|
|
- Map<Long, List<ScoreDataDetailVo>> scoreDataNameIdCollect = scoreDataDetailVos.parallelStream().collect(Collectors.groupingBy(ScoreDataDetailVo::getScoreDataNameId));
|
|
|
|
|
|
+ //对学生成绩根据学生身份证进行分组
|
|
|
|
+ Map<String, List<ScoreDataDetailVo>> studentNumberCollect = scoreDataDetailVos.parallelStream().collect(Collectors.groupingBy(ScoreDataDetailVo::getStudentNumber));
|
|
for (ScoreDataStudentVo scoreDataStudentVo : scoreDataStudentVos) {
|
|
for (ScoreDataStudentVo scoreDataStudentVo : scoreDataStudentVos) {
|
|
scoreDataStudentVo.setAvg(String.valueOf(zongFenAvg));
|
|
scoreDataStudentVo.setAvg(String.valueOf(zongFenAvg));
|
|
- List<ScoreDataDetailVo> scoreDataDetailVosList = scoreDataNameIdCollect.get(scoreDataStudentVo.getScoreDataNameId());
|
|
|
|
|
|
+ List<ScoreDataDetailVo> scoreDataDetailVosList = studentNumberCollect.get(scoreDataStudentVo.getStudentNumber());
|
|
if (scoreDataDetailVosList != null && scoreDataDetailVosList.size() > 0) {
|
|
if (scoreDataDetailVosList != null && scoreDataDetailVosList.size() > 0) {
|
|
for (ScoreDataDetailVo scoreDataDetailVo : scoreDataDetailVosList) {
|
|
for (ScoreDataDetailVo scoreDataDetailVo : scoreDataDetailVosList) {
|
|
scoreDataDetailVo.setAvg(String.valueOf(map.get(scoreDataDetailVo.getXueke())));
|
|
scoreDataDetailVo.setAvg(String.valueOf(map.get(scoreDataDetailVo.getXueke())));
|