|
@@ -1,13 +1,18 @@
|
|
|
package cn.com.qmth.stmms.biz.report.utils.module;
|
|
|
|
|
|
import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.Map.Entry;
|
|
|
|
|
|
+import cn.com.qmth.stmms.biz.exam.model.ExamQuestion;
|
|
|
import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
|
|
|
import cn.com.qmth.stmms.biz.report.service.ReportSubjectQuestionService;
|
|
|
import cn.com.qmth.stmms.biz.report.utils.Module;
|
|
|
+import cn.com.qmth.stmms.biz.report.utils.QuestionGroup;
|
|
|
import cn.com.qmth.stmms.biz.report.utils.ReportContext;
|
|
|
import cn.com.qmth.stmms.biz.report.utils.unit.BaseCalculatorUnit;
|
|
|
+import cn.com.qmth.stmms.biz.utils.ScoreItem;
|
|
|
import cn.com.qmth.stmms.biz.utils.SpringContextHolder;
|
|
|
|
|
|
public class SubjectGroupModule implements Module {
|
|
@@ -16,19 +21,41 @@ public class SubjectGroupModule implements Module {
|
|
|
|
|
|
private ReportContext context;
|
|
|
|
|
|
- public SubjectGroupModule(ReportContext context) {
|
|
|
- this.units = new HashMap<String, BaseCalculatorUnit>();
|
|
|
- this.context = context;
|
|
|
- }
|
|
|
-
|
|
|
public void process(ExamStudent student) {
|
|
|
if (student.isUpload() && !student.isAbsent() && !student.isBreach() && student.getSubject() != null) {
|
|
|
-
|
|
|
+ double totalScore = student.getTotalScore();
|
|
|
+ // 遍历客观题
|
|
|
+ process(student.getScoreList(true), student.getObjectiveQuestionList(), student.getSubjectCode(),
|
|
|
+ totalScore, true);
|
|
|
+ // 遍历主观题
|
|
|
+ process(student.getScoreList(false), student.getObjectiveQuestionList(), student.getSubjectCode(),
|
|
|
+ totalScore, false);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public String getKey(ExamStudent student) {
|
|
|
- return student.getSubjectCode();
|
|
|
+ private void process(List<ScoreItem> scoreList, List<ExamQuestion> questionList, String subjectCode,
|
|
|
+ double totalScore, boolean objective) {
|
|
|
+ if (scoreList == null || questionList == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ Map<Integer, QuestionGroup> map = new HashMap<Integer, QuestionGroup>();
|
|
|
+ int scoreCount = scoreList.size();
|
|
|
+ for (int i = 0; i < questionList.size(); i++) {
|
|
|
+ ExamQuestion question = questionList.get(i);
|
|
|
+ ScoreItem item = scoreCount > i ? scoreList.get(i) : null;
|
|
|
+ QuestionGroup group = map.get(question.getMainNumber());
|
|
|
+ if (group == null) {
|
|
|
+ group = new QuestionGroup(question.getMainNumber());
|
|
|
+ map.put(question.getMainNumber(), group);
|
|
|
+ }
|
|
|
+ group.incrTotalScore(item != null ? item.getScore() : 0);
|
|
|
+ group.incrFullScore(question.getTotalScore());
|
|
|
+ }
|
|
|
+ for (Entry<Integer, QuestionGroup> entry : map.entrySet()) {
|
|
|
+ QuestionGroup group = entry.getValue();
|
|
|
+ findUnit(subjectCode + "\t" + objective + "\t" + entry.getKey()).process(group.getTotalScore(),
|
|
|
+ group.getFullScore(), totalScore);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
public void save() {
|