|
@@ -1755,15 +1755,17 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
|
|
|
.eq(MarkSubjectiveScore::getPaperNumber, paperNumber).in(MarkSubjectiveScore::getStudentId, studentIdList));
|
|
|
}
|
|
|
|
|
|
+ Map<String, Double> studentMainNumberScoreMap = subjectiveScoreDatasource.stream().collect(Collectors.groupingBy(m -> m.getStudentId() + "-" + m.getMainNumber(), Collectors.summingDouble(n -> n.getScore())));
|
|
|
+
|
|
|
List<MarkQuestion> objectiveQuestions = questionDatasource.stream().filter(MarkQuestion::getObjective).collect(Collectors.toList());
|
|
|
for (ArchiveStudentVo studentVo : studentList) {
|
|
|
List<ScoreItem> scoreItemList = studentVo.getScoreList(true, objectiveQuestions);
|
|
|
|
|
|
- for (String key : mainQuestionMap.keySet()) {
|
|
|
- String[] arr = key.split("-");
|
|
|
+ for (Map.Entry<String, QuestionVo> entry : mainQuestionMap.entrySet()) {
|
|
|
+ String[] arr = entry.getKey().split("-");
|
|
|
int mainNumber = Integer.parseInt(arr[0]);
|
|
|
boolean objective = Boolean.parseBoolean(arr[1]);
|
|
|
- QuestionVo questionVo = mainQuestionMap.get(key);
|
|
|
+ QuestionVo questionVo = entry.getValue();
|
|
|
// 考生总数
|
|
|
questionVo.setStudentCount(questionVo.getStudentCount() + 1);
|
|
|
// 考生在大题得分
|
|
@@ -1773,16 +1775,23 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
|
|
|
List<ScoreItem> mainScoreItemList = scoreItemList.stream()
|
|
|
.filter(e -> Objects.equals(mainNumber, e.getMainNumber())).collect(Collectors.toList());
|
|
|
|
|
|
- for (ScoreItem scoreItem : mainScoreItemList) {
|
|
|
- studentScore = studentScore + scoreItem.getScore();
|
|
|
+// for (ScoreItem scoreItem : mainScoreItemList) {
|
|
|
+// studentScore = studentScore + scoreItem.getScore();
|
|
|
+// }
|
|
|
+ if (CollectionUtils.isNotEmpty(mainScoreItemList)) {
|
|
|
+ studentScore = mainScoreItemList.stream().collect(Collectors.summingDouble(m -> m.getScore())).doubleValue();
|
|
|
}
|
|
|
} else {
|
|
|
// 主观题处理
|
|
|
- List<MarkSubjectiveScore> subjectiveScoreList = subjectiveScoreDatasource.stream()
|
|
|
- .filter(e -> Objects.equals(mainNumber, e.getMainNumber()) && Objects.equals(studentVo.getStudentId(), e.getStudentId())).collect(Collectors.toList());
|
|
|
-
|
|
|
- for (MarkSubjectiveScore markSubjectiveScore : subjectiveScoreList) {
|
|
|
- studentScore = studentScore + markSubjectiveScore.getScore();
|
|
|
+// List<MarkSubjectiveScore> subjectiveScoreList = subjectiveScoreDatasource.stream()
|
|
|
+// .filter(e -> Objects.equals(mainNumber, e.getMainNumber()) && Objects.equals(studentVo.getStudentId(), e.getStudentId())).collect(Collectors.toList());
|
|
|
+//
|
|
|
+// for (MarkSubjectiveScore markSubjectiveScore : subjectiveScoreList) {
|
|
|
+// studentScore = studentScore + markSubjectiveScore.getScore();
|
|
|
+// }
|
|
|
+ String key = studentVo.getStudentId() + "-" + mainNumber;
|
|
|
+ if (studentMainNumberScoreMap.containsKey(key)) {
|
|
|
+ studentScore = studentMainNumberScoreMap.get(key).doubleValue();
|
|
|
}
|
|
|
}
|
|
|
// 有得分总数
|