|
@@ -70,7 +70,21 @@ public class PaperDetailUnit implements Serializable, Comparable<PaperDetailUnit
|
|
|
|
|
|
public void setScore(Double score) {
|
|
|
this.score = score;
|
|
|
- if (question != null && question.getSubQuestions() != null) {
|
|
|
+ //非套题或试题未设置时,不做额外处理
|
|
|
+ if (questionType != QuesStructType.NESTED_ANSWER_QUESTION || question == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //当前分数设置为空时,同时设置子题分数为空
|
|
|
+ if (score == null) {
|
|
|
+ subScoreList = null;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //总分与子题分数之和相同,则不做额外处理
|
|
|
+ if (subScoreList != null && subScoreList.size() > 0 && getSubScoreSum() == score) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //根据试题与总分设置情况重置子题分数
|
|
|
+ if (question.getSubQuestions() != null) {
|
|
|
initSubScoreList(score, question.getSubQuestions());
|
|
|
}
|
|
|
}
|
|
@@ -97,9 +111,21 @@ public class PaperDetailUnit implements Serializable, Comparable<PaperDetailUnit
|
|
|
|
|
|
public void setQuestion(Question question) {
|
|
|
this.question = question;
|
|
|
- if (score != null && question != null && question.getSubQuestions() != null) {
|
|
|
- initSubScoreList(score, question.getSubQuestions());
|
|
|
+ //非套题或总分未设置时,不做额外处理
|
|
|
+ if (questionType != QuesStructType.NESTED_ANSWER_QUESTION || score == null) {
|
|
|
+ return;
|
|
|
}
|
|
|
+ //当前试题或子题列表为空时,同时设置子题分数为空
|
|
|
+ if (question == null || question.getSubQuestions() == null) {
|
|
|
+ subScoreList = null;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //当前试题子题数量与子题分数数量相同,不做额外处理
|
|
|
+ if (subScoreList != null && subScoreList.size() == question.getSubQuestions().size()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //根据试题与总分设置情况重置子题分数
|
|
|
+ initSubScoreList(score, question.getSubQuestions());
|
|
|
}
|
|
|
|
|
|
public String getCreator() {
|
|
@@ -171,4 +197,14 @@ public class PaperDetailUnit implements Serializable, Comparable<PaperDetailUnit
|
|
|
this.subScoreList = scoreList;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ private double getSubScoreSum() {
|
|
|
+ double totalScore = 0;
|
|
|
+ if (subScoreList != null) {
|
|
|
+ for (Double score : subScoreList) {
|
|
|
+ totalScore += score;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return totalScore;
|
|
|
+ }
|
|
|
}
|