Bladeren bron

补充分段统计模块及小题计算框架代码

luoshi 6 jaren geleden
bovenliggende
commit
1383df3644

+ 43 - 21
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/model/ExamStudent.java

@@ -223,21 +223,21 @@ public class ExamStudent implements Serializable {
     @ExcelField(title = "专业类型", align = 2, sort = 120)
     @Column(name = "subject_category")
     private String subjectCategory;
-    
+
     /**
      * 学院
      */
     @ExcelField(title = "学院", align = 2, sort = 130)
     @Column(name = "college")
     private String college;
-    
+
     /**
      * 班级
      */
     @ExcelField(title = "班级", align = 2, sort = 140)
     @Column(name = "class_name")
     private String className;
-    
+
     /**
      * 任课老师
      */
@@ -282,6 +282,12 @@ public class ExamStudent implements Serializable {
     @Transient
     private String tagValue;
 
+    @Transient
+    private List<ExamQuestion> subjectiveQuestionList;
+
+    @Transient
+    private List<ExamQuestion> objectiveQuestionList;
+
     public Integer getId() {
         return id;
     }
@@ -706,28 +712,44 @@ public class ExamStudent implements Serializable {
         this.paperType = paperType;
     }
 
-	public String getCollege() {
-		return college;
-	}
+    public String getCollege() {
+        return college;
+    }
 
-	public void setCollege(String college) {
-		this.college = college;
-	}
+    public void setCollege(String college) {
+        this.college = college;
+    }
 
-	public String getClassName() {
-		return className;
-	}
+    public String getClassName() {
+        return className;
+    }
 
-	public void setClassName(String className) {
-		this.className = className;
-	}
+    public void setClassName(String className) {
+        this.className = className;
+    }
 
-	public String getTeacher() {
-		return teacher;
-	}
+    public String getTeacher() {
+        return teacher;
+    }
+
+    public void setTeacher(String teacher) {
+        this.teacher = teacher;
+    }
+
+    public List<ExamQuestion> getSubjectiveQuestionList() {
+        return subjectiveQuestionList;
+    }
 
-	public void setTeacher(String teacher) {
-		this.teacher = teacher;
-	}
+    public void setSubjectiveQuestionList(List<ExamQuestion> subjectiveQuestionList) {
+        this.subjectiveQuestionList = subjectiveQuestionList;
+    }
+
+    public List<ExamQuestion> getObjectiveQuestionList() {
+        return objectiveQuestionList;
+    }
+
+    public void setObjectiveQuestionList(List<ExamQuestion> objectiveQuestionList) {
+        this.objectiveQuestionList = objectiveQuestionList;
+    }
 
 }

+ 4 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/utils/ReportContext.java

@@ -48,4 +48,8 @@ public class ReportContext {
         return exam.getExcellentScore();
     }
 
+    public double getRangeInterval() {
+        return 1;
+    }
+
 }

+ 47 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/utils/module/SubjectGroupModule.java

@@ -0,0 +1,47 @@
+package cn.com.qmth.stmms.biz.report.utils.module;
+
+import java.util.HashMap;
+import java.util.Map;
+
+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.ReportContext;
+import cn.com.qmth.stmms.biz.report.utils.unit.BaseCalculatorUnit;
+import cn.com.qmth.stmms.biz.utils.SpringContextHolder;
+
+public class SubjectGroupModule implements Module {
+
+    private Map<String, BaseCalculatorUnit> units;
+
+    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) {
+
+        }
+    }
+
+    public String getKey(ExamStudent student) {
+        return student.getSubjectCode();
+    }
+
+    public void save() {
+        ReportSubjectQuestionService service = SpringContextHolder.getBean(ReportSubjectQuestionService.class);
+    }
+
+    private BaseCalculatorUnit findUnit(String key) {
+        BaseCalculatorUnit unit = units.get(key);
+        if (unit == null) {
+            unit = new BaseCalculatorUnit();
+            units.put(key, unit);
+        }
+        return unit;
+    }
+
+}

+ 2 - 2
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/utils/module/SubjectModule.java

@@ -14,9 +14,9 @@ import cn.com.qmth.stmms.biz.utils.SpringContextHolder;
 
 public class SubjectModule implements Module {
 
-    private Map<String, BaseCalculatorUnit> units;
+    protected Map<String, BaseCalculatorUnit> units;
 
-    private Map<String, BaseCounter> counters;
+    protected Map<String, BaseCounter> counters;
 
     private ReportContext context;
 

+ 62 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/utils/module/SubjectQuestionModule.java

@@ -0,0 +1,62 @@
+package cn.com.qmth.stmms.biz.report.utils.module;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+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.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 SubjectQuestionModule implements Module {
+
+    private Map<String, BaseCalculatorUnit> units;
+
+    private ReportContext context;
+
+    public SubjectQuestionModule(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) {
+            // 遍历客观题
+            process(student.getScoreList(true), student.getObjectiveQuestionList(), true);
+            // 遍历主观题
+            process(student.getScoreList(false), student.getObjectiveQuestionList(), false);
+        }
+    }
+
+    private void process(List<ScoreItem> scoreList, List<ExamQuestion> questionList, boolean objective) {
+        if (scoreList == null || questionList == null) {
+            return;
+        }
+        for (int i = 0; i < questionList.size(); i++) {
+
+        }
+    }
+
+    public String getKey(ExamStudent student) {
+        return student.getSubjectCode();
+    }
+
+    public void save() {
+        ReportSubjectQuestionService service = SpringContextHolder.getBean(ReportSubjectQuestionService.class);
+    }
+
+    private BaseCalculatorUnit findUnit(String key) {
+        BaseCalculatorUnit unit = units.get(key);
+        if (unit == null) {
+            unit = new BaseCalculatorUnit();
+            units.put(key, unit);
+        }
+        return unit;
+    }
+
+}

+ 48 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/utils/module/SubjectRangeModule.java

@@ -0,0 +1,48 @@
+package cn.com.qmth.stmms.biz.report.utils.module;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
+import cn.com.qmth.stmms.biz.report.service.ReportSubjectRangeService;
+import cn.com.qmth.stmms.biz.report.utils.Module;
+import cn.com.qmth.stmms.biz.report.utils.ReportContext;
+import cn.com.qmth.stmms.biz.report.utils.unit.RangeCounter;
+import cn.com.qmth.stmms.biz.utils.SpringContextHolder;
+
+public class SubjectRangeModule implements Module {
+
+    private Map<String, RangeCounter> counters;
+
+    private ReportContext context;
+
+    public SubjectRangeModule(ReportContext context) {
+        this.counters = new HashMap<String, RangeCounter>();
+        this.context = context;
+    }
+
+    public void process(ExamStudent student) {
+        if (student.isUpload() && !student.isAbsent() && !student.isBreach() && student.getSubject() != null) {
+            findCounter(getKey(student)).process(student.getTotalScore());
+        }
+    }
+
+    public String getKey(ExamStudent student) {
+        return student.getSubjectCode();
+    }
+
+    public void save() {
+        ReportSubjectRangeService service = SpringContextHolder.getBean(ReportSubjectRangeService.class);
+    }
+
+    private RangeCounter findCounter(String key) {
+        RangeCounter counter = counters.get(key);
+        if (counter == null) {
+            counter = new RangeCounter();
+            counter.interval = context.getRangeInterval();
+            counters.put(key, counter);
+        }
+        return counter;
+    }
+
+}

+ 1 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/utils/unit/BaseCounter.java

@@ -14,7 +14,7 @@ public class BaseCounter {
 
     public void process(ExamStudent student) {
         totalCount++;
-        if (student.isAbsent()) {
+        if (student.isAbsent() || !student.isUpload()) {
             absentCount++;
         }
         if (student.isUpload() && !student.isAbsent()) {

+ 2 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/thread/ScoreCalculateThread.java

@@ -164,6 +164,8 @@ public class ScoreCalculateThread implements Runnable {
 
     private void statistic(ExamStudent student) {
         student.setSubject(findExamSubject(student.getSubjectCode()));
+        student.setObjectiveQuestionList(findQuestionList(student.getSubjectCode(), student.getPaperType(), true));
+        student.setSubjectiveQuestionList(findQuestionList(student.getSubjectCode(), student.getPaperType(), false));
         context.process(student);
     }