Ver Fonte

增加单科目导出;修复统分时未删除旧报表、报表保存时未保存科目名称等一些bug;

ting.yin há 6 anos atrás
pai
commit
f0ec07d0d5
41 ficheiros alterados com 676 adições e 178 exclusões
  1. 4 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/dao/ReportSubjectClassDao.java
  2. 4 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/dao/ReportSubjectCollegeDao.java
  3. 4 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/dao/ReportSubjectDao.java
  4. 4 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/dao/ReportSubjectGroupDao.java
  5. 5 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/dao/ReportSubjectQuestionDao.java
  6. 4 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/dao/ReportSubjectRangeDao.java
  7. 4 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/dao/ReportSubjectTeacherClassDao.java
  8. 4 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/dao/ReportSubjectTeacherDao.java
  9. 14 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/model/ReportSubject.java
  10. 21 2
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/model/ReportSubjectClass.java
  11. 19 4
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/model/ReportSubjectCollege.java
  12. 21 2
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/model/ReportSubjectGroup.java
  13. 19 2
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/model/ReportSubjectQuestion.java
  14. 24 1
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/model/ReportSubjectRange.java
  15. 23 2
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/model/ReportSubjectTeacher.java
  16. 24 2
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/model/ReportSubjectTeacherClass.java
  17. 31 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/query/ReportSubjectRangeQuery.java
  18. 2 2
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/ReportSubjectRangeService.java
  19. 3 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/impl/ReportServiceImpl.java
  20. 22 14
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/impl/ReportSubjectQuestionServiceImpl.java
  21. 15 13
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/impl/ReportSubjectRangeServiceImpl.java
  22. 14 12
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/impl/ReportSubjectServiceImpl.java
  23. 3 2
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/ExamController.java
  24. 32 11
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectClassController.java
  25. 31 11
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectCollegeController.java
  26. 31 11
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectController.java
  27. 31 9
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectGroupController.java
  28. 31 11
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectQuestionController.java
  29. 34 15
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectRangeController.java
  30. 32 12
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectTeacherClassController.java
  31. 32 11
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectTeacherController.java
  32. 12 0
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/examEdit.jsp
  33. 12 0
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/examForm.jsp
  34. 25 15
      stmms-web/src/main/webapp/WEB-INF/views/modules/report/reportSubject.jsp
  35. 17 3
      stmms-web/src/main/webapp/WEB-INF/views/modules/report/reportSubjectClass.jsp
  36. 12 2
      stmms-web/src/main/webapp/WEB-INF/views/modules/report/reportSubjectCollege.jsp
  37. 13 2
      stmms-web/src/main/webapp/WEB-INF/views/modules/report/reportSubjectGroup.jsp
  38. 14 1
      stmms-web/src/main/webapp/WEB-INF/views/modules/report/reportSubjectQuestion.jsp
  39. 9 3
      stmms-web/src/main/webapp/WEB-INF/views/modules/report/reportSubjectRange.jsp
  40. 12 3
      stmms-web/src/main/webapp/WEB-INF/views/modules/report/reportSubjectTeacher.jsp
  41. 8 0
      stmms-web/src/main/webapp/WEB-INF/views/modules/report/reportSubjectTeacherClass.jsp

+ 4 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/dao/ReportSubjectClassDao.java

@@ -1,7 +1,9 @@
 package cn.com.qmth.stmms.biz.report.dao;
 
 import cn.com.qmth.stmms.biz.report.model.ReportSubjectClass;
+
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.PagingAndSortingRepository;
 
@@ -16,6 +18,8 @@ import java.util.List;
 public interface ReportSubjectClassDao
         extends PagingAndSortingRepository<ReportSubjectClass, Integer>, JpaSpecificationExecutor<ReportSubjectClass> {
 
+    @Modifying
+    @Query("delete from ReportSubjectClass r where r.examId=?1 ")
     void deleteByExamId(Integer exmaId);
 
 

+ 4 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/dao/ReportSubjectCollegeDao.java

@@ -1,7 +1,9 @@
 package cn.com.qmth.stmms.biz.report.dao;
 
 import cn.com.qmth.stmms.biz.report.model.ReportSubjectCollege;
+
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.PagingAndSortingRepository;
 
@@ -16,6 +18,8 @@ import java.util.List;
 public interface ReportSubjectCollegeDao
         extends PagingAndSortingRepository<ReportSubjectCollege, Integer>, JpaSpecificationExecutor<ReportSubjectCollege> {
 
+    @Modifying
+    @Query("delete from ReportSubjectCollege r where r.examId=?1 ")
     void deleteByExamId(Integer exmaId);
 
 

+ 4 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/dao/ReportSubjectDao.java

@@ -1,7 +1,9 @@
 package cn.com.qmth.stmms.biz.report.dao;
 
 import cn.com.qmth.stmms.biz.report.model.ReportSubject;
+
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.PagingAndSortingRepository;
 
@@ -16,6 +18,8 @@ import java.util.List;
 public interface ReportSubjectDao
         extends PagingAndSortingRepository<ReportSubject, Integer>, JpaSpecificationExecutor<ReportSubject> {
 
+    @Modifying
+    @Query("delete from ReportSubject r where r.examId=?1 ")
     void deleteByExamId(Integer exmaId);
 
     /**

+ 4 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/dao/ReportSubjectGroupDao.java

@@ -1,7 +1,9 @@
 package cn.com.qmth.stmms.biz.report.dao;
 
 import cn.com.qmth.stmms.biz.report.model.ReportSubjectGroup;
+
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.PagingAndSortingRepository;
 
@@ -16,6 +18,8 @@ import java.util.List;
 public interface ReportSubjectGroupDao
         extends PagingAndSortingRepository<ReportSubjectGroup, Integer>, JpaSpecificationExecutor<ReportSubjectGroup> {
 
+    @Modifying
+    @Query("delete from ReportSubjectGroup r where r.examId=?1 ")
     void deleteByExamId(Integer exmaId);
 
     @Query("select q.mainNumber,q.mainTitle,count(q.mainNumber) as subNumber from ExamQuestion q where q.examId=?1 and q.subjectCode=?2 and q.objective=?3 and q.paperType is not null group by q.mainNumber,q.mainTitle  "

+ 5 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/dao/ReportSubjectQuestionDao.java

@@ -1,7 +1,10 @@
 package cn.com.qmth.stmms.biz.report.dao;
 
 import cn.com.qmth.stmms.biz.report.model.ReportSubjectQuestion;
+
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.PagingAndSortingRepository;
 
 /**
@@ -13,6 +16,8 @@ import org.springframework.data.repository.PagingAndSortingRepository;
 public interface ReportSubjectQuestionDao
         extends PagingAndSortingRepository<ReportSubjectQuestion, Integer>, JpaSpecificationExecutor<ReportSubjectQuestion> {
 
+    @Modifying
+    @Query("delete from ReportSubjectQuestion r where r.examId=?1 ")
     void deleteByExamId(Integer exmaId);
 
 

+ 4 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/dao/ReportSubjectRangeDao.java

@@ -1,7 +1,9 @@
 package cn.com.qmth.stmms.biz.report.dao;
 
 import cn.com.qmth.stmms.biz.report.model.ReportSubjectRange;
+
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.PagingAndSortingRepository;
 
@@ -16,6 +18,8 @@ import java.util.List;
 public interface ReportSubjectRangeDao
         extends PagingAndSortingRepository<ReportSubjectRange, Integer>, JpaSpecificationExecutor<ReportSubjectRange> {
 
+    @Modifying
+    @Query("delete from ReportSubjectRange r where r.examId=?1 ")
     void deleteByExamId(Integer exmaId);
 
     @Query("select s.subjectCode,s.subjectName,s.subjectLevel,"

+ 4 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/dao/ReportSubjectTeacherClassDao.java

@@ -1,7 +1,9 @@
 package cn.com.qmth.stmms.biz.report.dao;
 
 import cn.com.qmth.stmms.biz.report.model.ReportSubjectTeacherClass;
+
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.PagingAndSortingRepository;
 
@@ -16,6 +18,8 @@ import java.util.List;
 public interface ReportSubjectTeacherClassDao
         extends PagingAndSortingRepository<ReportSubjectTeacherClass, Integer>, JpaSpecificationExecutor<ReportSubjectTeacherClass> {
 
+    @Modifying
+    @Query("delete from ReportSubjectTeacherClass r where r.examId=?1 ")
     void deleteByExamId(Integer exmaId);
 
 

+ 4 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/dao/ReportSubjectTeacherDao.java

@@ -1,7 +1,9 @@
 package cn.com.qmth.stmms.biz.report.dao;
 
 import cn.com.qmth.stmms.biz.report.model.ReportSubjectTeacher;
+
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.PagingAndSortingRepository;
 
@@ -16,6 +18,8 @@ import java.util.List;
 public interface ReportSubjectTeacherDao
         extends PagingAndSortingRepository<ReportSubjectTeacher, Integer>, JpaSpecificationExecutor<ReportSubjectTeacher> {
 
+    @Modifying
+    @Query("delete from ReportSubjectTeacher r where r.examId=?1 ")
     void deleteByExamId(Integer exmaId);
 
 

+ 14 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/model/ReportSubject.java

@@ -1,6 +1,9 @@
 package cn.com.qmth.stmms.biz.report.model;
 
 import javax.persistence.*;
+
+import cn.com.qmth.stmms.common.annotation.ExcelField;
+
 import java.io.Serializable;
 
 /**
@@ -31,66 +34,77 @@ public class ReportSubject implements Serializable {
     /**
      * 课程编号
      */
+    @ExcelField(title = "课程代码", align = 2, sort = 10)
     @Column(name = "subject_code")
     private String subjectCode;
 
     /**
      * 课程名称
      */
+    @ExcelField(title = "课程名称", align = 2, sort = 20)
     @Column(name = "subject_name")
     private String subjectName;
 
     /**
      * 最高分
      */
+    @ExcelField(title = "最高分", align = 2, sort = 30)
     @Column(name = "max_score")
     private Double maxScore;
 
     /**
      * 最低分
      */
+    @ExcelField(title = "最低分", align = 2, sort = 40)
     @Column(name = "min_score")
     private Double minScore;
 
     /**
      * 平均分
      */
+    @ExcelField(title = "平均分", align = 2, sort = 50)
     @Column(name = "avg_score")
     private Double avgScore;
 
     /**
      * 报考人数
      */
+    @ExcelField(title = "报考人数", align = 2, sort = 60)
     @Column(name = "total_count")
     private Integer totalCount;
 
     /**
      * 及格人数
      */
+    @ExcelField(title = "及格人数", align = 2, sort = 70)
     @Column(name = "pass_count")
     private Integer passCount;
 
     /**
      * 及格率
      */
+    @ExcelField(title = "及格率(%)", align = 2, sort = 80)
     @Column(name = "pass_rate")
     private Double passRate;
 
     /**
      * 缺考人数
      */
+    @ExcelField(title = "缺考人数", align = 2, sort = 90)
     @Column(name = "absent_count")
     private Integer absentCount;
 
     /**
      * 违纪人数
      */
+    @ExcelField(title = "违纪人数", align = 2, sort = 100)
     @Column(name = "breach_count")
     private Integer breachCount;
 
     /**
      * 实考人数
      */
+    @ExcelField(title = "实考代码", align = 2, sort = 110)
     @Column(name = "reality_count")
     private Integer realityCount;
 

+ 21 - 2
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/model/ReportSubjectClass.java

@@ -1,8 +1,16 @@
 package cn.com.qmth.stmms.biz.report.model;
 
-import javax.persistence.*;
 import java.io.Serializable;
 
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Index;
+import javax.persistence.Table;
+
+import cn.com.qmth.stmms.common.annotation.ExcelField;
+
 /**
  * 课程班级成绩分析
  *
@@ -10,7 +18,7 @@ import java.io.Serializable;
  * @date 2019-04-12
  */
 @Entity
-@Table(name = "s_basic_subject_class", indexes = {@Index(columnList = "exam_id,subject_code,class_name")})
+@Table(name = "s_basic_subject_class", indexes = { @Index(columnList = "exam_id,subject_code,class_name") })
 public class ReportSubjectClass implements Serializable {
 
     private static final long serialVersionUID = 1932022687226092788L;
@@ -31,59 +39,70 @@ public class ReportSubjectClass implements Serializable {
     /**
      * 课程编号
      */
+    @ExcelField(title = "课程代码", align = 2, sort = 10)
     @Column(name = "subject_code")
     private String subjectCode;
 
     /**
      * 课程名称
      */
+    @ExcelField(title = "课程名称", align = 2, sort = 20)
     @Column(name = "subject_name")
     private String subjectName;
 
     /**
      * 班级
      */
+    @ExcelField(title = "班级", align = 2, sort = 30)
     @Column(name = "class_name")
     private String className;
 
     /**
      * 最高分
      */
+    @ExcelField(title = "最高分", align = 2, sort = 40)
     @Column(name = "max_score")
     private Double maxScore;
 
     /**
      * 最低分
      */
+    @ExcelField(title = "最低分", align = 2, sort = 50)
     @Column(name = "min_score")
     private Double minScore;
+
     /**
      * 及格人数
      */
+    @ExcelField(title = "及格人数", align = 2, sort = 60)
     @Column(name = "pass_count")
     private int passCount;
 
     /**
      * 及格率
      */
+    @ExcelField(title = "及格率", align = 2, sort = 70)
     @Column(name = "pass_rate")
     private Double passRate;
 
     /**
      * 优秀数
      */
+    @ExcelField(title = "优秀人数", align = 2, sort = 80)
     @Column(name = "excellent_count")
     private int excellentCount;
 
     /**
      * 优秀率
      */
+    @ExcelField(title = "优秀率", align = 2, sort = 90)
     @Column(name = "excellent_rate")
     private Double excellentRate;
 
     /**
      * 平均分
      */
+    @ExcelField(title = "平均分", align = 2, sort = 100)
     @Column(name = "avg_score")
     private Double avgScore;
 

+ 19 - 4
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/model/ReportSubjectCollege.java

@@ -1,8 +1,16 @@
 package cn.com.qmth.stmms.biz.report.model;
 
-import javax.persistence.*;
 import java.io.Serializable;
 
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Index;
+import javax.persistence.Table;
+
+import cn.com.qmth.stmms.common.annotation.ExcelField;
+
 /**
  * 课程学院分析
  *
@@ -10,7 +18,7 @@ import java.io.Serializable;
  * @date 2019-04-11
  */
 @Entity
-@Table(name = "s_basic_subject_college", indexes = {@Index(columnList = "exam_id,subject_code")})
+@Table(name = "s_basic_subject_college", indexes = { @Index(columnList = "exam_id,subject_code") })
 public class ReportSubjectCollege implements Serializable {
 
     private static final long serialVersionUID = 3030910032864476591L;
@@ -31,59 +39,66 @@ public class ReportSubjectCollege implements Serializable {
     /**
      * 课程编号
      */
+    @ExcelField(title = "课程代码", align = 2, sort = 10)
     @Column(name = "subject_code")
     private String subjectCode;
 
     /**
      * 课程名称
      */
+    @ExcelField(title = "课程名称", align = 2, sort = 20)
     @Column(name = "subject_name")
     private String subjectName;
 
     /**
      * 学院名称
      */
+    @ExcelField(title = "学院", align = 2, sort = 30)
     @Column(name = "college_name")
     private String collegeName;
 
     /**
      * 最高分
      */
+    @ExcelField(title = "最高分", align = 2, sort = 40)
     @Column(name = "max_score")
     private Double maxScore;
 
     /**
      * 最低分
      */
+    @ExcelField(title = "最低分", align = 2, sort = 50)
     @Column(name = "min_score")
     private Double minScore;
 
     /**
      * 平均分
      */
+    @ExcelField(title = "平均分", align = 2, sort = 60)
     @Column(name = "avg_score")
     private Double avgScore;
 
     /**
      * 及格率
      */
+    @ExcelField(title = "及格率", align = 2, sort = 70)
     @Column(name = "pass_rate")
     private Double passRate;
 
-
     /**
      * 及格数
      */
+    @ExcelField(title = "及格人数", align = 2, sort = 80)
     @Column(name = "pass_count")
     private Integer passCount;
 
     /**
      * 优秀率
      */
+    @ExcelField(title = "优秀率", align = 2, sort = 90)
     @Column(name = "excellent_rate")
     private Double excellentRate;
 
-
     public Integer getId() {
         return id;
     }

+ 21 - 2
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/model/ReportSubjectGroup.java

@@ -1,8 +1,16 @@
 package cn.com.qmth.stmms.biz.report.model;
 
-import javax.persistence.*;
 import java.io.Serializable;
 
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Index;
+import javax.persistence.Table;
+
+import cn.com.qmth.stmms.common.annotation.ExcelField;
+
 /**
  * 大题维度分析
  *
@@ -10,7 +18,7 @@ import java.io.Serializable;
  * @date 2019-04-12
  */
 @Entity
-@Table(name = "s_basic_group", indexes = {@Index(columnList = "exam_id,subject_code")})
+@Table(name = "s_basic_group", indexes = { @Index(columnList = "exam_id,subject_code") })
 public class ReportSubjectGroup implements Serializable {
 
     private static final long serialVersionUID = 3619846310455325739L;
@@ -31,66 +39,77 @@ public class ReportSubjectGroup implements Serializable {
     /**
      * 课程编号
      */
+    @ExcelField(title = "课程代码", align = 2, sort = 10)
     @Column(name = "subject_code")
     private String subjectCode;
 
     /**
      * 课程名称
      */
+    @ExcelField(title = "课程名称", align = 2, sort = 20)
     @Column(name = "subject_name")
     private String subjectName;
 
     /**
      * 大题型
      */
+    @ExcelField(title = "大题名称", align = 2, sort = 30)
     @Column(name = "group_name")
     private String groupName;
 
     /**
      * 最高分
      */
+    @ExcelField(title = "最高分", align = 2, sort = 40)
     @Column(name = "max_score")
     private Double maxScore;
 
     /**
      * 最低分
      */
+    @ExcelField(title = "最低分", align = 2, sort = 50)
     @Column(name = "min_score")
     private Double minScore;
 
     /**
      * 平均分
      */
+    @ExcelField(title = "平均分", align = 2, sort = 60)
     @Column(name = "avg_score")
     private Double avgScore;
 
     /**
      * 满分
      */
+    @ExcelField(title = "满分", align = 2, sort = 70)
     @Column(name = "total_score")
     private Double totalScore;
 
     /**
      * 标准差
      */
+    @ExcelField(title = "标准差", align = 2, sort = 80)
     @Column(name = "sd")
     private Double SD;
 
     /**
      * 差异系数
      */
+    @ExcelField(title = "差异系数(%)", align = 2, sort = 90)
     @Column(name = "cv")
     private Double CV;
 
     /**
      * 零分人数
      */
+    @ExcelField(title = "零分人数", align = 2, sort = 100)
     @Column(name = "zero_count")
     private Integer zeroCount;
 
     /**
      * 满分人数
      */
+    @ExcelField(title = "满分人数", align = 2, sort = 110)
     @Column(name = "full_count")
     private Integer fullCount;
 

+ 19 - 2
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/model/ReportSubjectQuestion.java

@@ -1,8 +1,16 @@
 package cn.com.qmth.stmms.biz.report.model;
 
-import javax.persistence.*;
 import java.io.Serializable;
 
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Index;
+import javax.persistence.Table;
+
+import cn.com.qmth.stmms.common.annotation.ExcelField;
+
 /**
  * 客观 主观题 成绩分析
  *
@@ -10,7 +18,7 @@ import java.io.Serializable;
  * @date 2019-04-12
  */
 @Entity
-@Table(name = "s_basic_question", indexes = {@Index(columnList = "exam_id,subject_code")})
+@Table(name = "s_basic_question", indexes = { @Index(columnList = "exam_id,subject_code") })
 public class ReportSubjectQuestion implements Serializable {
 
     private static final long serialVersionUID = 6724909968773149817L;
@@ -31,47 +39,56 @@ public class ReportSubjectQuestion implements Serializable {
     /**
      * 课程编号
      */
+    @ExcelField(title = "课程代码", align = 2, sort = 10)
     @Column(name = "subject_code")
     private String subjectCode;
 
     /**
      * 课程名称
      */
+    @ExcelField(title = "课程名称", align = 2, sort = 20)
     @Column(name = "subject_name")
     private String subjectName;
+
     /**
      * 题目名称
      */
+    @ExcelField(title = "题目名称", align = 2, sort = 30)
     @Column(name = "question_Name", length = 128)
     private String questionName;
 
     /**
      * 总分
      */
+    @ExcelField(title = "总分", align = 2, sort = 40)
     @Column(name = "total_score")
     private Double totalScore;
 
     /**
      * 平均分
      */
+    @ExcelField(title = "平均分", align = 2, sort = 50)
     @Column(name = "avg_score")
     private Double avgScore;
 
     /**
      * 标准差
      */
+    @ExcelField(title = "标准差", align = 2, sort = 60)
     @Column(name = "sd")
     private Double sd;
 
     /**
      * 得分率
      */
+    @ExcelField(title = "得分率", align = 2, sort = 70)
     @Column(name = "score_rate")
     private Double scoreRate;
 
     /**
      * 满分率
      */
+    @ExcelField(title = "满分率", align = 2, sort = 80)
     @Column(name = "full_score_rate")
     private Double fullScoreRate;
 

+ 24 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/model/ReportSubjectRange.java

@@ -1,6 +1,9 @@
 package cn.com.qmth.stmms.biz.report.model;
 
 import javax.persistence.*;
+
+import cn.com.qmth.stmms.common.annotation.ExcelField;
+
 import java.io.Serializable;
 
 /**
@@ -31,74 +34,94 @@ public class ReportSubjectRange implements Serializable {
     /**
      * 课程编号
      */
+    @ExcelField(title = "课程代码", align = 2, sort = 10)
     @Column(name = "subject_code")
     private String subjectCode;
 
     /**
      * 科目名称
      */
+    @ExcelField(title = "课程名称", align = 2, sort = 20)
     @Column(name = "subject_name")
     private String subjectName;
 
     /**
      * 层次
      */
+    @ExcelField(title = "课程层次", align = 2, sort = 30)
     @Column(name = "subject_level")
     private String level;
 
     /**
      * 0-49数量
      */
+    @ExcelField(title = "0-", align = 2, sort = 40)
     private Integer count0_49;
 
     /**
      * 0-49占比
      */
+    @ExcelField(title = "0-占比(%)", align = 2, sort = 50)
     private double percent0_49;
 
+    @ExcelField(title = "50-", align = 2, sort = 60)
     private Integer count50_59;
 
+    @ExcelField(title = "50-占比(%)", align = 2, sort = 70)
     private double percent50_59;
 
+    @ExcelField(title = "60-", align = 2, sort = 80)
     private Integer count60_69;
 
+    @ExcelField(title = "60-占比(%)", align = 2, sort = 90)
     private double percent60_69;
 
+    @ExcelField(title = "70-", align = 2, sort = 100)
     private Integer count70_79;
-
+    
+    @ExcelField(title = "70-占比(%)", align = 2, sort = 110)
     private double percent70_79;
 
+    @ExcelField(title = "80-", align = 2, sort = 120)
     private Integer count80_89;
 
+    @ExcelField(title = "80-占比(%)", align = 2, sort = 130)
     private double percent80_89;
 
+    @ExcelField(title = "90-", align = 2, sort = 140)
     private Integer count90_100;
 
+    @ExcelField(title = "90-占比(%)", align = 2, sort = 150)
     private double percent90_100;
 
     /**
      * 小于60数量
      */
+    @ExcelField(title = "<60", align = 2, sort = 160)
     private Integer lt60;
 
     /**
      * 小于60占比
      */
+    @ExcelField(title = "<60占比(%)", align = 2, sort = 170)
     private double percent_lt60;
 
     /**
      * 大于等于60数量
      */
+    @ExcelField(title = ">=60", align = 2, sort = 180)
     private Integer mte60;
 
     /**
      * 大于等于60占比
      */
+    @ExcelField(title = ">=60占比(%)", align = 2, sort = 190)
     private double percent_mte60;
 
     /**
      * 总数
      */
+    @ExcelField(title = "总数", align = 2, sort = 200)
     private Integer totalCount;
 
 

+ 23 - 2
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/model/ReportSubjectTeacher.java

@@ -1,8 +1,16 @@
 package cn.com.qmth.stmms.biz.report.model;
 
-import javax.persistence.*;
 import java.io.Serializable;
 
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Index;
+import javax.persistence.Table;
+
+import cn.com.qmth.stmms.common.annotation.ExcelField;
+
 /**
  * 课程任课老师成绩分析
  *
@@ -10,7 +18,7 @@ import java.io.Serializable;
  * @date 2019-04-12
  */
 @Entity
-@Table(name = "s_basic_subject_teacher", indexes = {@Index(columnList = "exam_id,subject_code,teacher_name")})
+@Table(name = "s_basic_subject_teacher", indexes = { @Index(columnList = "exam_id,subject_code,teacher_name") })
 public class ReportSubjectTeacher implements Serializable {
 
     private static final long serialVersionUID = -8747256777581891978L;
@@ -31,71 +39,84 @@ public class ReportSubjectTeacher implements Serializable {
     /**
      * 课程编号
      */
+    @ExcelField(title = "课程代码", align = 2, sort = 10)
     @Column(name = "subject_code")
     private String subjectCode;
 
     /**
      * 课程名称
      */
+    @ExcelField(title = "课程名称", align = 2, sort = 20)
     @Column(name = "subject_name")
     private String subjectName;
 
     /**
      * 教师
      */
+    @ExcelField(title = "任课老师", align = 2, sort = 30)
     @Column(name = "teacher_name")
     private String teacherName;
 
     /**
      * 实考人数
      */
+    @ExcelField(title = "实考人数", align = 2, sort = 40)
     @Column(name = "reality_count")
     private int realityCount;
 
     /**
      * 最高分
      */
+    @ExcelField(title = "最高分", align = 2, sort = 50)
     @Column(name = "max_score")
     private Double maxScore;
 
     /**
      * 最低分
      */
+    @ExcelField(title = "最低分", align = 2, sort = 60)
     @Column(name = "min_score")
     private Double minScore;
+
     /**
      * 及格人数
      */
+    @ExcelField(title = "及格人数", align = 2, sort = 70)
     @Column(name = "pass_count")
     private int passCount;
 
     /**
      * 及格率
      */
+    @ExcelField(title = "及格率", align = 2, sort = 80)
     @Column(name = "pass_rate")
     private Double passRate;
 
     /**
      * 优秀数
      */
+    @ExcelField(title = "优秀人数", align = 2, sort = 90)
     @Column(name = "excellent_count")
     private int excellentCount;
 
     /**
      * 优秀率
      */
+    @ExcelField(title = "优秀率", align = 2, sort = 100)
     @Column(name = "excellent_rate")
     private Double excellentRate;
 
     /**
      * 平均分
      */
+    @ExcelField(title = "平均分", align = 2, sort = 110)
     @Column(name = "avg_score")
     private Double avgScore;
 
     /**
      * 相对平均分
      */
+    @ExcelField(title = "相对平均分", align = 2, sort = 120)
     @Column(name = "relative_avg_score")
     private Double relativeAvgScore;
 

+ 24 - 2
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/model/ReportSubjectTeacherClass.java

@@ -1,8 +1,16 @@
 package cn.com.qmth.stmms.biz.report.model;
 
-import javax.persistence.*;
 import java.io.Serializable;
 
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Index;
+import javax.persistence.Table;
+
+import cn.com.qmth.stmms.common.annotation.ExcelField;
+
 /**
  * 课程任课老师班级成绩分析
  *
@@ -10,7 +18,7 @@ import java.io.Serializable;
  * @date 2019-04-12
  */
 @Entity
-@Table(name = "s_basic_subject_teacher_class", indexes = {@Index(columnList = "exam_id,subject_code,teacher_name")})
+@Table(name = "s_basic_subject_teacher_class", indexes = { @Index(columnList = "exam_id,subject_code,teacher_name") })
 public class ReportSubjectTeacherClass implements Serializable {
 
     private static final long serialVersionUID = 711106040799843384L;
@@ -31,77 +39,91 @@ public class ReportSubjectTeacherClass implements Serializable {
     /**
      * 课程编号
      */
+    @ExcelField(title = "课程代码", align = 2, sort = 10)
     @Column(name = "subject_code")
     private String subjectCode;
 
     /**
      * 课程名称
      */
+    @ExcelField(title = "课程名称", align = 2, sort = 20)
     @Column(name = "subject_name")
     private String subjectName;
 
     /**
      * 教师
      */
+    @ExcelField(title = "任课老师", align = 2, sort = 30)
     @Column(name = "teacher_name")
     private String teacherName;
 
     /**
      * 班级
      */
+    @ExcelField(title = "班级", align = 2, sort = 40)
     @Column(name = "class_name")
     private String className;
 
     /**
      * 实考人数
      */
+    @ExcelField(title = "实考人数", align = 2, sort = 50)
     @Column(name = "reality_count")
     private int realityCount;
 
     /**
      * 最高分
      */
+    @ExcelField(title = "最高分", align = 2, sort = 60)
     @Column(name = "max_score")
     private Double maxScore;
 
     /**
      * 最低分
      */
+    @ExcelField(title = "最低分", align = 2, sort = 70)
     @Column(name = "min_score")
     private Double minScore;
+
     /**
      * 及格人数
      */
+    @ExcelField(title = "及格人数", align = 2, sort = 80)
     @Column(name = "pass_count")
     private int passCount;
 
     /**
      * 及格率
      */
+    @ExcelField(title = "及格率", align = 2, sort = 90)
     @Column(name = "pass_rate")
     private Double passRate;
 
     /**
      * 优秀数
      */
+    @ExcelField(title = "优秀人数", align = 2, sort = 100)
     @Column(name = "excellent_count")
     private int excellentCount;
 
     /**
      * 优秀率
      */
+    @ExcelField(title = "优秀率", align = 2, sort = 110)
     @Column(name = "excellent_rate")
     private Double excellentRate;
 
     /**
      * 平均分
      */
+    @ExcelField(title = "平均分", align = 2, sort = 120)
     @Column(name = "avg_score")
     private Double avgScore;
 
     /**
      * 相对平均分
      */
+    @ExcelField(title = "相对平均分", align = 2, sort = 130)
     @Column(name = "relative_avg_score")
     private Double relativeAvgScore;
 

+ 31 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/query/ReportSubjectRangeQuery.java

@@ -0,0 +1,31 @@
+package cn.com.qmth.stmms.biz.report.query;
+
+import cn.com.qmth.stmms.biz.common.BaseQuery;
+import cn.com.qmth.stmms.biz.report.model.ReportSubjectRange;
+
+/**
+ * 课程报表查询query
+ */
+public class ReportSubjectRangeQuery extends BaseQuery<ReportSubjectRange> {
+
+    private Integer examId;
+
+    private String subjectCode;
+
+    public Integer getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Integer examId) {
+        this.examId = examId;
+    }
+
+    public String getSubjectCode() {
+        return subjectCode;
+    }
+
+    public void setSubjectCode(String subjectCode) {
+        this.subjectCode = subjectCode;
+    }
+
+}

+ 2 - 2
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/ReportSubjectRangeService.java

@@ -1,6 +1,6 @@
 package cn.com.qmth.stmms.biz.report.service;
 
-import cn.com.qmth.stmms.biz.report.query.ReportSubjectQuery;
+import cn.com.qmth.stmms.biz.report.query.ReportSubjectRangeQuery;
 
 /**
  * 课程分段统计 service 接口
@@ -12,7 +12,7 @@ public interface ReportSubjectRangeService {
 
     void deleteByExamId(Integer examId);
 
-    ReportSubjectQuery findByQuery(ReportSubjectQuery query);
+    ReportSubjectRangeQuery findByQuery(ReportSubjectRangeQuery query);
 
     void saveReportRangeSubjectData(Integer examId);
 

+ 3 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/impl/ReportServiceImpl.java

@@ -3,8 +3,10 @@ package cn.com.qmth.stmms.biz.report.service.impl;
 import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
 import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
 import cn.com.qmth.stmms.biz.report.service.*;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -50,6 +52,7 @@ public class ReportServiceImpl implements ReportService {
      *
      * @param examId 考试id
      */
+    @Transactional
     @Override
     public void generateReportData(Integer examId) {
 

+ 22 - 14
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/impl/ReportSubjectQuestionServiceImpl.java

@@ -1,26 +1,30 @@
 package cn.com.qmth.stmms.biz.report.service.impl;
 
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+
 import cn.com.qmth.stmms.biz.common.BaseQueryService;
 import cn.com.qmth.stmms.biz.exam.dao.ExamQuestionDao;
 import cn.com.qmth.stmms.biz.exam.dao.ExamStudentDao;
+import cn.com.qmth.stmms.biz.exam.dao.ExamSubjectDao;
 import cn.com.qmth.stmms.biz.exam.model.ExamQuestion;
 import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
+import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
 import cn.com.qmth.stmms.biz.report.dao.ReportSubjectQuestionDao;
 import cn.com.qmth.stmms.biz.report.model.ReportSubjectQuestion;
 import cn.com.qmth.stmms.biz.report.query.ReportSubjectQuery;
 import cn.com.qmth.stmms.biz.report.service.ReportSubjectQuestionService;
 import cn.com.qmth.stmms.biz.utils.DoubleUtil;
-import org.apache.commons.lang.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.jpa.domain.Specification;
-import org.springframework.stereotype.Service;
-
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-import java.util.LinkedList;
-import java.util.List;
 
 /**
  * 客、主观题分析 service 实现
@@ -39,7 +43,10 @@ public class ReportSubjectQuestionServiceImpl extends BaseQueryService<ReportSub
 
     @Autowired
     private ExamQuestionDao examQuestionDao;
-
+    
+    @Autowired
+    private ExamSubjectDao examSubjectDao;
+    
     @Override
     public ReportSubjectQuestion save(ReportSubjectQuestion reportSubjectQuestion) {
         return reportSubjectQuestionDao.save(reportSubjectQuestion);
@@ -73,7 +80,7 @@ public class ReportSubjectQuestionServiceImpl extends BaseQueryService<ReportSub
 
     @Override
     public void saveReportSubjectObjectiveQuestionData(Integer examId, String subjectCode, Boolean objective) {
-
+        ExamSubject subject = examSubjectDao.findByExamIdAndCode(examId, subjectCode);
         List<ExamQuestion> examQuestionObjectiveList = examQuestionDao.findByExamIdAndSubjectCodeAndObjective(examId, subjectCode, objective);
 
         List<ExamStudent> examStudentList = examStudentDao.findByExamIdAndSubjectCodeAndUploadTimeNotNullAndAbsent(examId, subjectCode, false);
@@ -91,7 +98,7 @@ public class ReportSubjectQuestionServiceImpl extends BaseQueryService<ReportSub
                 //考生题目得分汇总
                 Double sumScore = 0d;
                 //题目总分汇总
-                Double questionSumScore = DoubleUtil.mul(question.getTotalScore(), studentCount);
+                //Double questionSumScore = DoubleUtil.mul(question.getTotalScore(), studentCount);
                 //方差
                 Double variance = 0d;
 
@@ -140,6 +147,7 @@ public class ReportSubjectQuestionServiceImpl extends BaseQueryService<ReportSub
                 }
                 reportSubjectQuestion.setExamId(examId);
                 reportSubjectQuestion.setSubjectCode(subjectCode);
+                reportSubjectQuestion.setSubjectName(subject.getName());
                 reportSubjectQuestion.setObjective(objective);
                 reportSubjectQuestion.setQuestionName(question.getMainTitle() + "_" + (i + 1));
                 reportSubjectQuestion.setTotalScore(question.getTotalScore());

+ 15 - 13
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/impl/ReportSubjectRangeServiceImpl.java

@@ -1,23 +1,25 @@
 package cn.com.qmth.stmms.biz.report.service.impl;
 
-import cn.com.qmth.stmms.biz.common.BaseQueryService;
-import cn.com.qmth.stmms.biz.report.dao.ReportSubjectRangeDao;
-import cn.com.qmth.stmms.biz.report.model.ReportSubjectRange;
-import cn.com.qmth.stmms.biz.report.query.ReportSubjectQuery;
-import cn.com.qmth.stmms.biz.report.service.ReportSubjectRangeService;
-import cn.com.qmth.stmms.biz.utils.DoubleUtil;
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-import java.util.LinkedList;
-import java.util.List;
+import cn.com.qmth.stmms.biz.common.BaseQueryService;
+import cn.com.qmth.stmms.biz.report.dao.ReportSubjectRangeDao;
+import cn.com.qmth.stmms.biz.report.model.ReportSubjectRange;
+import cn.com.qmth.stmms.biz.report.query.ReportSubjectRangeQuery;
+import cn.com.qmth.stmms.biz.report.service.ReportSubjectRangeService;
+import cn.com.qmth.stmms.biz.utils.DoubleUtil;
 
 /**
  * 课程分段统计 service 实现
@@ -38,7 +40,7 @@ public class ReportSubjectRangeServiceImpl extends BaseQueryService<ReportSubjec
     }
 
     @Override
-    public ReportSubjectQuery findByQuery(final ReportSubjectQuery query) {
+    public ReportSubjectRangeQuery findByQuery(final ReportSubjectRangeQuery query) {
         checkQuery(query);
         Page<ReportSubjectRange> result = reportSubjectRangetDao.findAll(new Specification<ReportSubjectRange>() {
 

+ 14 - 12
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/impl/ReportSubjectServiceImpl.java

@@ -1,23 +1,25 @@
 package cn.com.qmth.stmms.biz.report.service.impl;
 
-import cn.com.qmth.stmms.biz.common.BaseQueryService;
-import cn.com.qmth.stmms.biz.report.dao.ReportSubjectDao;
-import cn.com.qmth.stmms.biz.report.model.ReportSubject;
-import cn.com.qmth.stmms.biz.report.query.ReportSubjectQuery;
-import cn.com.qmth.stmms.biz.report.service.ReportSubjectService;
-import cn.com.qmth.stmms.biz.utils.DoubleUtil;
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-import java.util.LinkedList;
-import java.util.List;
+import cn.com.qmth.stmms.biz.common.BaseQueryService;
+import cn.com.qmth.stmms.biz.report.dao.ReportSubjectDao;
+import cn.com.qmth.stmms.biz.report.model.ReportSubject;
+import cn.com.qmth.stmms.biz.report.query.ReportSubjectQuery;
+import cn.com.qmth.stmms.biz.report.service.ReportSubjectService;
+import cn.com.qmth.stmms.biz.utils.DoubleUtil;
 
 /**
  * 课程总量统计service

+ 3 - 2
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/ExamController.java

@@ -97,8 +97,7 @@ public class ExamController extends BaseExamController {
 
     @RequestMapping(value = "/exam-edit", method = RequestMethod.POST)
     @RoleRequire(Role.SCHOOL_ADMIN)
-    public String examEdit(HttpServletRequest request, Exam exam, int StatusValue,
-            RedirectAttributes redirectAttributes) {
+    public String examEdit(HttpServletRequest request, Exam exam, int StatusValue, RedirectAttributes redirectAttributes) {
         User user = RequestUtils.getWebUser(request).getUser();
         Exam oldExam = examService.findById(exam.getId());
         if (oldExam != null && oldExam.getCreatorId().intValue() == user.getId().intValue()) {
@@ -107,6 +106,8 @@ public class ExamController extends BaseExamController {
             oldExam.setDescription(exam.getDescription());
             oldExam.setStatus(ExamStatus.findByValue(StatusValue));
             oldExam.setForceSpecialTag(exam.isForceSpecialTag());
+            oldExam.setPassScore(exam.getPassScore());
+            oldExam.setExcellentScore(exam.getExcellentScore());
             examService.save(oldExam);
         }
         return "redirect:/admin/exam-list";

+ 32 - 11
stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectClassController.java

@@ -1,11 +1,10 @@
 package cn.com.qmth.stmms.admin.report;
 
-import cn.com.qmth.stmms.admin.exam.BaseExamController;
-import cn.com.qmth.stmms.biz.report.model.ReportSubjectClass;
-import cn.com.qmth.stmms.biz.report.query.ReportSubjectQuery;
-import cn.com.qmth.stmms.biz.report.service.ReportSubjectClassService;
-import cn.com.qmth.stmms.common.domain.WebUser;
-import cn.com.qmth.stmms.common.utils.RequestUtils;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -13,12 +12,18 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
-import javax.servlet.http.HttpServletRequest;
-import java.util.List;
+import cn.com.qmth.stmms.admin.exam.BaseExamController;
+import cn.com.qmth.stmms.biz.report.model.ReportSubjectClass;
+import cn.com.qmth.stmms.biz.report.query.ReportSubjectQuery;
+import cn.com.qmth.stmms.biz.report.service.ReportSubjectClassService;
+import cn.com.qmth.stmms.common.domain.WebUser;
+import cn.com.qmth.stmms.common.utils.ExportExcel;
+import cn.com.qmth.stmms.common.utils.RequestUtils;
 
 /**
- * 课程班级ß成绩分析
+ * 课程班级成绩分析
  *
  * @author xuwenjin
  * @date 2019-04-16
@@ -37,7 +42,6 @@ public class ReportSubjectClassController extends BaseExamController {
     public String list(Model model, HttpServletRequest request, ReportSubjectQuery query) {
         WebUser webuser = RequestUtils.getWebUser(request);
         int examId = getSessionExamId(request);
-//        reportSubjectClassService.saveReportSubjectClassData(1, "1118802");
         query.setExamId(examId);
         if (StringUtils.isNotBlank(query.getSubjectCode())) {
             List<ReportSubjectClass> reportSubjectClassList = reportSubjectClassService.findByQuery(query);
@@ -47,6 +51,23 @@ public class ReportSubjectClassController extends BaseExamController {
         model.addAttribute("query", query);
         return "modules/report/reportSubjectClass";
     }
-
+    
+    @RequestMapping("/export")
+    public String export(ReportSubjectQuery query, HttpServletRequest request, HttpServletResponse response,
+            RedirectAttributes redirectAttributes) {
+        int examId = getSessionExamId(request);
+        query.setExamId(examId);
+        query.setPageNumber(1);
+        query.setPageSize(Integer.MAX_VALUE);
+        List<ReportSubjectClass> list = reportSubjectClassService.findByQuery(query);
+        String fileName = "课程班级成绩分析.xlsx";
+        try {
+            new ExportExcel("课程班级成绩分析", ReportSubjectClass.class).setDataList(list).write(response, fileName).dispose();
+            return null;
+        } catch (Exception e) {
+            addMessage(redirectAttributes, "导出成绩失败!" + e.getMessage());
+            return "redirect:/admin/exam/reportSubjectClass";
+        }
+    }
 
 }

+ 31 - 11
stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectCollegeController.java

@@ -1,11 +1,10 @@
 package cn.com.qmth.stmms.admin.report;
 
-import cn.com.qmth.stmms.admin.exam.BaseExamController;
-import cn.com.qmth.stmms.biz.report.model.ReportSubjectCollege;
-import cn.com.qmth.stmms.biz.report.query.ReportSubjectQuery;
-import cn.com.qmth.stmms.biz.report.service.ReportSubjectCollegeService;
-import cn.com.qmth.stmms.common.domain.WebUser;
-import cn.com.qmth.stmms.common.utils.RequestUtils;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -13,9 +12,15 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
-import javax.servlet.http.HttpServletRequest;
-import java.util.List;
+import cn.com.qmth.stmms.admin.exam.BaseExamController;
+import cn.com.qmth.stmms.biz.report.model.ReportSubjectCollege;
+import cn.com.qmth.stmms.biz.report.query.ReportSubjectQuery;
+import cn.com.qmth.stmms.biz.report.service.ReportSubjectCollegeService;
+import cn.com.qmth.stmms.common.domain.WebUser;
+import cn.com.qmth.stmms.common.utils.ExportExcel;
+import cn.com.qmth.stmms.common.utils.RequestUtils;
 
 /**
  * 课程学院成绩分析
@@ -32,12 +37,10 @@ public class ReportSubjectCollegeController extends BaseExamController {
     @Autowired
     private ReportSubjectCollegeService reportSubjectCollegeService;
 
-
     @RequestMapping
     public String list(Model model, HttpServletRequest request, ReportSubjectQuery query) {
         WebUser webuser = RequestUtils.getWebUser(request);
         int examId = getSessionExamId(request);
-//        reportSubjectCollegeService.saveReportSubjectCollegeData(1,"1118802");
         query.setExamId(examId);
         if (StringUtils.isNotBlank(query.getSubjectCode())) {
             List<ReportSubjectCollege> reportSubjectColleges = reportSubjectCollegeService.findByQuery(query);
@@ -48,5 +51,22 @@ public class ReportSubjectCollegeController extends BaseExamController {
         return "modules/report/reportSubjectCollege";
     }
 
-
+    @RequestMapping("/export")
+    public String export(ReportSubjectQuery query, HttpServletRequest request, HttpServletResponse response,
+            RedirectAttributes redirectAttributes) {
+        int examId = getSessionExamId(request);
+        query.setExamId(examId);
+        query.setPageNumber(1);
+        query.setPageSize(Integer.MAX_VALUE);
+        List<ReportSubjectCollege> list = reportSubjectCollegeService.findByQuery(query);
+        String fileName = "课程学院成绩分析.xlsx";
+        try {
+            new ExportExcel("课程学院成绩分析", ReportSubjectCollege.class).setDataList(list).write(response, fileName)
+                    .dispose();
+            return null;
+        } catch (Exception e) {
+            addMessage(redirectAttributes, "导出成绩失败!" + e.getMessage());
+            return "redirect:/admin/exam/reportSubjectCollege";
+        }
+    }
 }

+ 31 - 11
stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectController.java

@@ -1,19 +1,25 @@
 package cn.com.qmth.stmms.admin.report;
 
-import cn.com.qmth.stmms.admin.exam.BaseExamController;
-import cn.com.qmth.stmms.biz.report.query.ReportSubjectQuery;
-import cn.com.qmth.stmms.biz.report.service.ReportSubjectService;
-import cn.com.qmth.stmms.common.domain.WebUser;
-import cn.com.qmth.stmms.common.utils.Paginator;
-import cn.com.qmth.stmms.common.utils.RequestUtils;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
-import javax.servlet.http.HttpServletRequest;
+import cn.com.qmth.stmms.admin.exam.BaseExamController;
+import cn.com.qmth.stmms.biz.report.model.ReportSubject;
+import cn.com.qmth.stmms.biz.report.query.ReportSubjectQuery;
+import cn.com.qmth.stmms.biz.report.service.ReportSubjectService;
+import cn.com.qmth.stmms.common.domain.WebUser;
+import cn.com.qmth.stmms.common.utils.ExportExcel;
+import cn.com.qmth.stmms.common.utils.RequestUtils;
 
 /**
  * 课程总量统计
@@ -30,23 +36,37 @@ public class ReportSubjectController extends BaseExamController {
     @Autowired
     private ReportSubjectService reportSubjectService;
 
-
     @RequestMapping
     public String list(Model model, HttpServletRequest request, ReportSubjectQuery query) {
         WebUser webuser = RequestUtils.getWebUser(request);
         int examId = getSessionExamId(request);
-//        reportSubjectService.saveReportSubjectData(examId);
         query.setExamId(examId);
         query = reportSubjectService.findByQuery(query);
         if (query.getCurrentCount() > 0) {
             model.addAttribute("list", query.getResult());
-            model.addAttribute("paginator",
-                    new Paginator(query.getPageNumber(), query.getPageSize(), (int) query.getTotalCount()));
         }
         model.addAttribute("subjectList", getExamSubject(examId, webuser));
         model.addAttribute("query", query);
         return "modules/report/reportSubject";
     }
 
+    @RequestMapping("/export")
+    public String export(ReportSubjectQuery query, HttpServletRequest request, HttpServletResponse response,
+            RedirectAttributes redirectAttributes) {
+        int examId = getSessionExamId(request);
+        query.setExamId(examId);
+        query.setPageNumber(1);
+        query.setPageSize(Integer.MAX_VALUE);
+        query = reportSubjectService.findByQuery(query);
+        List<ReportSubject> list = query.getResult();
+        String fileName = "课程总量统计.xlsx";
+        try {
+            new ExportExcel("课程总量统计", ReportSubject.class).setDataList(list).write(response, fileName).dispose();
+            return null;
+        } catch (Exception e) {
+            addMessage(redirectAttributes, "导出成绩失败!" + e.getMessage());
+            return "redirect:/admin/exam/reportSubject";
+        }
+    }
 
 }

+ 31 - 9
stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectGroupController.java

@@ -1,11 +1,10 @@
 package cn.com.qmth.stmms.admin.report;
 
-import cn.com.qmth.stmms.admin.exam.BaseExamController;
-import cn.com.qmth.stmms.biz.report.model.ReportSubjectGroup;
-import cn.com.qmth.stmms.biz.report.query.ReportSubjectQuery;
-import cn.com.qmth.stmms.biz.report.service.ReportSubjectGroupService;
-import cn.com.qmth.stmms.common.domain.WebUser;
-import cn.com.qmth.stmms.common.utils.RequestUtils;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -13,9 +12,15 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
-import javax.servlet.http.HttpServletRequest;
-import java.util.List;
+import cn.com.qmth.stmms.admin.exam.BaseExamController;
+import cn.com.qmth.stmms.biz.report.model.ReportSubjectGroup;
+import cn.com.qmth.stmms.biz.report.query.ReportSubjectQuery;
+import cn.com.qmth.stmms.biz.report.service.ReportSubjectGroupService;
+import cn.com.qmth.stmms.common.domain.WebUser;
+import cn.com.qmth.stmms.common.utils.ExportExcel;
+import cn.com.qmth.stmms.common.utils.RequestUtils;
 
 /**
  * 大题统计分析
@@ -36,7 +41,6 @@ public class ReportSubjectGroupController extends BaseExamController {
     public String list(Model model, HttpServletRequest request, ReportSubjectQuery query) {
         WebUser webuser = RequestUtils.getWebUser(request);
         int examId = getSessionExamId(request);
-//        reportSubjectGroupService.saveReportSubjectGroupData(1, "1118802");
         query.setExamId(examId);
         if (StringUtils.isNotBlank(query.getSubjectCode())) {
             List<ReportSubjectGroup> groups = reportSubjectGroupService.findByQuery(query);
@@ -47,4 +51,22 @@ public class ReportSubjectGroupController extends BaseExamController {
         return "modules/report/reportSubjectGroup";
     }
 
+    @RequestMapping("/export")
+    public String export(ReportSubjectQuery query, HttpServletRequest request, HttpServletResponse response,
+            RedirectAttributes redirectAttributes) {
+        int examId = getSessionExamId(request);
+        query.setExamId(examId);
+        query.setPageNumber(1);
+        query.setPageSize(Integer.MAX_VALUE);
+        List<ReportSubjectGroup> list = reportSubjectGroupService.findByQuery(query);
+        String fileName = "大题统计分析.xlsx";
+        try {
+            new ExportExcel("大题统计分析", ReportSubjectGroup.class).setDataList(list).write(response, fileName).dispose();
+            return null;
+        } catch (Exception e) {
+            addMessage(redirectAttributes, "导出成绩失败!" + e.getMessage());
+            return "redirect:/admin/exam/reportSubjectGroup";
+        }
+    }
+
 }

+ 31 - 11
stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectQuestionController.java

@@ -1,11 +1,10 @@
 package cn.com.qmth.stmms.admin.report;
 
-import cn.com.qmth.stmms.admin.exam.BaseExamController;
-import cn.com.qmth.stmms.biz.report.model.ReportSubjectQuestion;
-import cn.com.qmth.stmms.biz.report.query.ReportSubjectQuery;
-import cn.com.qmth.stmms.biz.report.service.ReportSubjectQuestionService;
-import cn.com.qmth.stmms.common.domain.WebUser;
-import cn.com.qmth.stmms.common.utils.RequestUtils;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -13,9 +12,15 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
-import javax.servlet.http.HttpServletRequest;
-import java.util.List;
+import cn.com.qmth.stmms.admin.exam.BaseExamController;
+import cn.com.qmth.stmms.biz.report.model.ReportSubjectQuestion;
+import cn.com.qmth.stmms.biz.report.query.ReportSubjectQuery;
+import cn.com.qmth.stmms.biz.report.service.ReportSubjectQuestionService;
+import cn.com.qmth.stmms.common.domain.WebUser;
+import cn.com.qmth.stmms.common.utils.ExportExcel;
+import cn.com.qmth.stmms.common.utils.RequestUtils;
 
 /**
  * 客、主观题 成绩分析
@@ -37,9 +42,8 @@ public class ReportSubjectQuestionController extends BaseExamController {
     public String list(Model model, HttpServletRequest request, ReportSubjectQuery query) {
         WebUser webuser = RequestUtils.getWebUser(request);
         int examId = getSessionExamId(request);
-//        reportSubjectQuestionService.saveReportSubjectObjectiveQuestionData(1, "1118802", query.getObjective());
         query.setExamId(examId);
-        if (StringUtils.isNotBlank(query.getSubjectCode())) {
+        if (StringUtils.isNotBlank(query.getSubjectCode())&&query.getObjective()!=null) {
             List<ReportSubjectQuestion> questions = reportSubjectQuestionService.findByQuery(query);
             model.addAttribute("list", questions);
         }
@@ -48,5 +52,21 @@ public class ReportSubjectQuestionController extends BaseExamController {
         return "modules/report/reportSubjectQuestion";
     }
 
-
+    @RequestMapping("/export")
+    public String export(ReportSubjectQuery query, HttpServletRequest request, HttpServletResponse response,
+            RedirectAttributes redirectAttributes) {
+        int examId = getSessionExamId(request);
+        query.setExamId(examId);
+        query.setPageNumber(1);
+        query.setPageSize(Integer.MAX_VALUE);
+        List<ReportSubjectQuestion> list = reportSubjectQuestionService.findByQuery(query);
+        String fileName = query.getObjective()?"客观题统计分析.xlsx":"主观题统计分析.xlsx";
+        try {
+            new ExportExcel(query.getObjective()?"客观题统计分析":"主观题统计分析", ReportSubjectQuestion.class).setDataList(list).write(response, fileName).dispose();
+            return null;
+        } catch (Exception e) {
+            addMessage(redirectAttributes, "导出成绩失败!" + e.getMessage());
+            return "redirect:/admin/exam/reportSubjectQuestion";
+        }
+    }
 }

+ 34 - 15
stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectRangeController.java

@@ -1,23 +1,28 @@
 package cn.com.qmth.stmms.admin.report;
 
-import cn.com.qmth.stmms.admin.exam.BaseExamController;
-import cn.com.qmth.stmms.biz.report.query.ReportSubjectQuery;
-import cn.com.qmth.stmms.biz.report.service.ReportSubjectRangeService;
-import cn.com.qmth.stmms.biz.user.model.User;
-import cn.com.qmth.stmms.common.domain.WebUser;
-import cn.com.qmth.stmms.common.utils.Paginator;
-import cn.com.qmth.stmms.common.utils.RequestUtils;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
-import javax.servlet.http.HttpServletRequest;
+import cn.com.qmth.stmms.admin.exam.BaseExamController;
+import cn.com.qmth.stmms.biz.report.model.ReportSubjectRange;
+import cn.com.qmth.stmms.biz.report.query.ReportSubjectRangeQuery;
+import cn.com.qmth.stmms.biz.report.service.ReportSubjectRangeService;
+import cn.com.qmth.stmms.common.domain.WebUser;
+import cn.com.qmth.stmms.common.utils.ExportExcel;
+import cn.com.qmth.stmms.common.utils.RequestUtils;
 
 /**
- * 课程总量统计
+ * 课程分段统计
  *
  * @author xuwenjin
  * @date 2019-04-12 17:05
@@ -31,24 +36,38 @@ public class ReportSubjectRangeController extends BaseExamController {
     @Autowired
     private ReportSubjectRangeService reportSubjectRangeService;
 
-
     @RequestMapping
-    public String list(Model model, HttpServletRequest request, ReportSubjectQuery query) {
+    public String list(Model model, HttpServletRequest request, ReportSubjectRangeQuery query) {
         WebUser webuser = RequestUtils.getWebUser(request);
         int examId = getSessionExamId(request);
-//        reportSubjectRangeService.saveReportRangeSubjectData(1);
-        User user = RequestUtils.getWebUser(request).getUser();
+        // reportSubjectRangeService.saveReportRangeSubjectData(1);
         query.setExamId(examId);
         query = reportSubjectRangeService.findByQuery(query);
         if (query.getCurrentCount() > 0) {
             model.addAttribute("list", query.getResult());
-            model.addAttribute("paginator",
-                    new Paginator(query.getPageNumber(), query.getPageSize(), (int) query.getTotalCount()));
         }
         model.addAttribute("subjectList", getExamSubject(examId, webuser));
         model.addAttribute("query", query);
         return "modules/report/reportSubjectRange";
     }
 
+    @RequestMapping("/export")
+    public String export(ReportSubjectRangeQuery query, HttpServletRequest request, HttpServletResponse response,
+            RedirectAttributes redirectAttributes) {
+        int examId = getSessionExamId(request);
+        query.setExamId(examId);
+        query.setPageNumber(1);
+        query.setPageSize(Integer.MAX_VALUE);
+        query = reportSubjectRangeService.findByQuery(query);
+        List<ReportSubjectRange> list = query.getResult();
+        String fileName = "课程分段统计.xlsx";
+        try {
+            new ExportExcel("课程分段统计", ReportSubjectRange.class).setDataList(list).write(response, fileName).dispose();
+            return null;
+        } catch (Exception e) {
+            addMessage(redirectAttributes, "导出成绩失败!" + e.getMessage());
+            return "redirect:/admin/exam/reportSubjectRange";
+        }
+    }
 
 }

+ 32 - 12
stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectTeacherClassController.java

@@ -1,13 +1,10 @@
 package cn.com.qmth.stmms.admin.report;
 
-import cn.com.qmth.stmms.admin.exam.BaseExamController;
-import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
-import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
-import cn.com.qmth.stmms.biz.report.model.ReportSubjectTeacherClass;
-import cn.com.qmth.stmms.biz.report.query.ReportSubjectQuery;
-import cn.com.qmth.stmms.biz.report.service.ReportSubjectTeacherClassService;
-import cn.com.qmth.stmms.common.domain.WebUser;
-import cn.com.qmth.stmms.common.utils.RequestUtils;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -15,9 +12,17 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
-import javax.servlet.http.HttpServletRequest;
-import java.util.List;
+import cn.com.qmth.stmms.admin.exam.BaseExamController;
+import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
+import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
+import cn.com.qmth.stmms.biz.report.model.ReportSubjectTeacherClass;
+import cn.com.qmth.stmms.biz.report.query.ReportSubjectQuery;
+import cn.com.qmth.stmms.biz.report.service.ReportSubjectTeacherClassService;
+import cn.com.qmth.stmms.common.domain.WebUser;
+import cn.com.qmth.stmms.common.utils.ExportExcel;
+import cn.com.qmth.stmms.common.utils.RequestUtils;
 
 /**
  * 课程老师班级 成绩分析
@@ -42,7 +47,6 @@ public class ReportSubjectTeacherClassController extends BaseExamController {
     public String list(Model model, HttpServletRequest request, ReportSubjectQuery query) {
         WebUser webuser = RequestUtils.getWebUser(request);
         int examId = getSessionExamId(request);
-//        reportSubjectTeacherClassService.saveReportSubjectTeacherClassData(1,"1118802");
         query.setExamId(examId);
         if (StringUtils.isNotBlank(query.getSubjectCode()) && StringUtils.isNotBlank(query.getTeacherName())) {
             List<ReportSubjectTeacherClass> reportSubjectTeacherClasses = reportSubjectTeacherClassService.findByQuery(query);
@@ -56,5 +60,21 @@ public class ReportSubjectTeacherClassController extends BaseExamController {
         return "modules/report/reportSubjectTeacherClass";
     }
 
-
+    @RequestMapping("/export")
+    public String export(ReportSubjectQuery query, HttpServletRequest request, HttpServletResponse response,
+            RedirectAttributes redirectAttributes) {
+        int examId = getSessionExamId(request);
+        query.setExamId(examId);
+        query.setPageNumber(1);
+        query.setPageSize(Integer.MAX_VALUE);
+        List<ReportSubjectTeacherClass> list = reportSubjectTeacherClassService.findByQuery(query);
+        String fileName = "课程老师班级成绩分析.xlsx";
+        try {
+            new ExportExcel("课程老师班级成绩分析", ReportSubjectTeacherClass.class).setDataList(list).write(response, fileName).dispose();
+            return null;
+        } catch (Exception e) {
+            addMessage(redirectAttributes, "导出成绩失败!" + e.getMessage());
+            return "redirect:/admin/exam/reportSubjectTeacherClass";
+        }
+    }
 }

+ 32 - 11
stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectTeacherController.java

@@ -1,11 +1,10 @@
 package cn.com.qmth.stmms.admin.report;
 
-import cn.com.qmth.stmms.admin.exam.BaseExamController;
-import cn.com.qmth.stmms.biz.report.model.ReportSubjectTeacher;
-import cn.com.qmth.stmms.biz.report.query.ReportSubjectQuery;
-import cn.com.qmth.stmms.biz.report.service.ReportSubjectTeacherService;
-import cn.com.qmth.stmms.common.domain.WebUser;
-import cn.com.qmth.stmms.common.utils.RequestUtils;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -13,9 +12,15 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
-import javax.servlet.http.HttpServletRequest;
-import java.util.List;
+import cn.com.qmth.stmms.admin.exam.BaseExamController;
+import cn.com.qmth.stmms.biz.report.model.ReportSubjectTeacher;
+import cn.com.qmth.stmms.biz.report.query.ReportSubjectQuery;
+import cn.com.qmth.stmms.biz.report.service.ReportSubjectTeacherService;
+import cn.com.qmth.stmms.common.domain.WebUser;
+import cn.com.qmth.stmms.common.utils.ExportExcel;
+import cn.com.qmth.stmms.common.utils.RequestUtils;
 
 /**
  * 课程老师成绩分析
@@ -32,12 +37,11 @@ public class ReportSubjectTeacherController extends BaseExamController {
     @Autowired
     private ReportSubjectTeacherService reportSubjectTeacherService;
 
-
     @RequestMapping
     public String list(Model model, HttpServletRequest request, ReportSubjectQuery query) {
         WebUser webuser = RequestUtils.getWebUser(request);
         int examId = getSessionExamId(request);
-//        reportSubjectTeacherService.saveReportSubjectTeacherData(1,"1118802");
+        // reportSubjectTeacherService.saveReportSubjectTeacherData(1,"1118802");
         query.setExamId(examId);
         if (StringUtils.isNotBlank(query.getSubjectCode())) {
             List<ReportSubjectTeacher> reportSubjectTeacherList = reportSubjectTeacherService.findByQuery(query);
@@ -48,5 +52,22 @@ public class ReportSubjectTeacherController extends BaseExamController {
         return "modules/report/reportSubjectTeacher";
     }
 
-
+    @RequestMapping("/export")
+    public String export(ReportSubjectQuery query, HttpServletRequest request, HttpServletResponse response,
+            RedirectAttributes redirectAttributes) {
+        int examId = getSessionExamId(request);
+        query.setExamId(examId);
+        query.setPageNumber(1);
+        query.setPageSize(Integer.MAX_VALUE);
+        List<ReportSubjectTeacher> list = reportSubjectTeacherService.findByQuery(query);
+        String fileName = "课程老师成绩分析.xlsx";
+        try {
+            new ExportExcel("课程老师成绩分析", ReportSubjectTeacher.class).setDataList(list).write(response, fileName)
+                    .dispose();
+            return null;
+        } catch (Exception e) {
+            addMessage(redirectAttributes, "导出成绩失败!" + e.getMessage());
+            return "redirect:/admin/exam/reportSubjectTeacherClass";
+        }
+    }
 }

+ 12 - 0
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/examEdit.jsp

@@ -54,6 +54,18 @@
 				<input name="forceSpecialTag" type="checkbox" <c:if test="${exam.forceSpecialTag}">checked</c:if>/>
 			</div>
 		</div>
+		<div class="control-group">
+			<label class="control-label">及格分</label>
+			<div class="controls">
+				<input name="passScore" type="number" value="${exam.passScore }"/>
+			</div>
+		</div>
+		<div class="control-group">
+			<label class="control-label">优秀分</label>
+			<div class="controls">
+				<input name="excellentScore" type="number" value="${exam.excellentScore }"/>
+			</div>
+		</div>
 		<c:if test="${exam.id!=null }">
 		<div class="control-group">
 			<label class="control-label">状态</label>

+ 12 - 0
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/examForm.jsp

@@ -53,6 +53,18 @@
 				<input name="forceSpecialTag" type="checkbox" <c:if test="${exam.forceSpecialTag}">checked</c:if>/>
 			</div>
 		</div>
+		<div class="control-group">
+			<label class="control-label">及格分</label>
+			<div class="controls">
+				<input name="passScore" type="number" value="${exam.passScore }"/>
+			</div>
+		</div>
+		<div class="control-group">
+			<label class="control-label">优秀分</label>
+			<div class="controls">
+				<input name="excellentScore" type="number" value="${exam.excellentScore }"/>
+			</div>
+		</div>
 		<c:if test="${exam.id!=null }">
 		<div class="control-group">
 			<label class="control-label">状态</label>

+ 25 - 15
stmms-web/src/main/webapp/WEB-INF/views/modules/report/reportSubject.jsp

@@ -2,7 +2,7 @@
 <%@ include file="/WEB-INF/views/include/taglib.jsp"%>
 <html>
 <head>
-	<title>报表查询</title>
+	<title>成绩分析</title>
 	<meta name="decorator" content="default"/>
 	<%@include file="/WEB-INF/views/include/head.jsp" %>
 	<%@include file="/WEB-INF/views/include/dialog.jsp" %>
@@ -13,20 +13,23 @@
 		<li><a href="${ctx}/admin/exam/reportSubjectRange">课程分段统计</a></li>
 		<li class="active"><a href="${ctx}/admin/exam/reportSubject">课程总量统计表</a></li>
 	</ul>
-	<form id="searchForm"  action="${ctx}/admin/exam/reportSubject" method="post" class="breadcrumb form-search">
-		<input id="pageNumber" name="pageNumber" type="hidden"/>
-		<input id="pageSize" name="pageSize" type="hidden"/>
-		<div>
-			<label>科目:</label>
-			<select class="input-large" id="subjectCode" name="subjectCode">
-				<option value="">请选择</option>
-				<c:forEach items="${subjectList }" var="subject">
-					<option value="${subject.code }" <c:if test="${query.subjectCode eq subject.code }">selected</c:if>>${subject.code}-${subject.name}</option>
-				</c:forEach>
-			</select>
+	<form id="searchForm" action="${ctx}/admin/exam/reportSubject" method="post" class="breadcrumb form-search">
+	    <input type="hidden" id="pageNumber" name="pageNumber" value="${query.pageNumber }"/>
+	    <input type="hidden" id="pageSize" name="pageSize" value="${query.pageSize }"/>
+	    <div>
+	        <label>科目</label>
+	        <select class="input-large" id="subjectCode" name="subjectCode">
+	            <option value="">请选择</option>
+	            <c:forEach items="${subjectList }" var="subject">
+	                <option value="${subject.code }"
+	                        <c:if test="${query.subjectCode eq subject.code }">selected</c:if>>${subject.code}-${subject.name}</option>
+	            </c:forEach>
+	        </select>
 			&nbsp;
-			<input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
-		</div>
+	        <input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
+	        &nbsp;
+			<input id="export-button" class="btn" type="button" value="导出"/>
+	    </div>
 	</form>
 	<tags:message content="${message}"/>
 	<table id="contentTable" class="table table-striped table-bordered table-condensed">
@@ -61,17 +64,24 @@
 		</c:forEach>
 		</tbody>
 	</table>
-	<div class="pagination">${query}</div>
+<div class="pagination">${query}</div>
 <script type="text/javascript">
+$("#export-button").click(function(){
+	$("#searchForm").attr("action","${ctx}/admin/exam/reportSubject/export");
+	$("#searchForm").submit();
+});
+
 function page(n,s){
 	$("#pageNumber").val(n);
 	$("#pageSize").val(s);
+	$("#searchForm").attr("action","${ctx}/admin/exam/reportSubject");
 	$("#searchForm").submit();
 	return false;
 }
 function goSearch(){
 	$("#pageNumber").val(1);
 	$("#pageSize").val('${query.pageSize}');
+	$("#searchForm").attr("action","${ctx}/admin/exam/reportSubject");
 	$("#searchForm").submit();
 	return false;
 }

+ 17 - 3
stmms-web/src/main/webapp/WEB-INF/views/modules/report/reportSubjectClass.jsp

@@ -27,8 +27,8 @@
     <li><a href="${ctx}/admin/exam/reportSubjectGroup?subjectCode=${query.subjectCode}">大题统计分析表</a></li>
 </ul>
 <form id="searchForm" action="${ctx}/admin/exam/reportSubjectClass" method="post" class="breadcrumb form-search">
-    <input id="pageNumber" name="pageNumber" type="hidden"/>
-    <input id="pageSize" name="pageSize" type="hidden"/>
+	    <input type="hidden" id="pageNumber" name="pageNumber" value="${query.pageNumber }"/>
+	    <input type="hidden" id="pageSize" name="pageSize" value="${query.pageSize }"/>
     <div>
         <label>科目:</label>
         <select class="input-large" id="subjectCode" name="subjectCode">
@@ -42,6 +42,9 @@
         <input type="text" name="className" value="${query.className}" maxlength="10" class="input-small"/>
         &nbsp;
         <input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
+        &nbsp;
+		<input id="export-button" class="btn" type="button" value="导出"/>
+		 &nbsp;
         <input class="btn btn-primary" type="button" value="查看统计图" onclick="viewClassEcharts()"/>
     </div>
 </form>
@@ -75,7 +78,6 @@
     </tbody>
 </table>
 <script type="text/javascript">
-
     function viewClassEcharts() {
         var classs = new Array();
         var avgScores = new Array();
@@ -179,6 +181,7 @@
     function page(n, s) {
         $("#pageNumber").val(n);
         $("#pageSize").val(s);
+    	$("#searchForm").attr("action","${ctx}/admin/exam/reportSubjectClass");
         $("#searchForm").submit();
         return false;
     }
@@ -190,6 +193,7 @@
             alert('请选择科目');
             return;
         }
+    	$("#searchForm").attr("action","${ctx}/admin/exam/reportSubjectClass");
         $("#searchForm").submit();
         return false;
     }
@@ -200,6 +204,16 @@
             return false;
         }
     });
+    
+    $("#export-button").click(function(){
+    	$("#pageSize").val('${query.pageSize}');
+        if ($("#subjectCode").val() == null || $("#subjectCode").val() == '') {
+            alert('请选择科目');
+            return;
+        }
+    	$("#searchForm").attr("action","${ctx}/admin/exam/reportSubjectClass/export");
+    	$("#searchForm").submit();
+    });
 </script>
 <div id="echart-view-content" class="container-fluid" style="display:none" align="center">
     <div id="echart-content" style="width: 100%;height:520px;"/>

+ 12 - 2
stmms-web/src/main/webapp/WEB-INF/views/modules/report/reportSubjectCollege.jsp

@@ -29,8 +29,8 @@
     <li><a href="${ctx}/admin/exam/reportSubjectGroup?subjectCode=${query.subjectCode}">大题统计分析表</a></li>
 </ul>
 <form id="searchForm" action="${ctx}/admin/exam/reportSubjectCollege" method="post" class="breadcrumb form-search">
-    <input id="pageNumber" name="pageNumber" type="hidden"/>
-    <input id="pageSize" name="pageSize" type="hidden"/>
+	    <input type="hidden" id="pageNumber" name="pageNumber" value="${query.pageNumber }"/>
+	    <input type="hidden" id="pageSize" name="pageSize" value="${query.pageSize }"/>
     <div>
         <label>科目:</label>
         <select class="input-large" id="subjectCode" name="subjectCode">
@@ -42,6 +42,9 @@
         </select>
         &nbsp;
         <input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
+         &nbsp;
+		<input id="export-button" class="btn" type="button" value="导出"/>
+		 &nbsp;
         <input class="btn btn-primary" type="button" value="查看统计图" onclick="viewCollegeEcharts()"/>
     </div>
 </form>
@@ -73,6 +76,10 @@
     </tbody>
 </table>
 <script type="text/javascript">
+$("#export-button").click(function(){
+	$("#searchForm").attr("action","${ctx}/admin/exam/reportSubjectCollege/export");
+	$("#searchForm").submit();
+});
 
     function viewCollegeEcharts() {
         var colleges = new Array();
@@ -171,6 +178,7 @@
     function page(n, s) {
         $("#pageNumber").val(n);
         $("#pageSize").val(s);
+        $("#searchForm").attr("action","${ctx}/admin/exam/reportSubjectCollege");
         $("#searchForm").submit();
         return false;
     }
@@ -182,6 +190,7 @@
             alert('请选择科目');
             return;
         }
+        $("#searchForm").attr("action","${ctx}/admin/exam/reportSubjectCollege");
         $("#searchForm").submit();
         return false;
     }
@@ -192,6 +201,7 @@
             return false;
         }
     });
+    
 </script>
 
 <div id="echart-view-content" class="container-fluid" style="display:none" align="center">

+ 13 - 2
stmms-web/src/main/webapp/WEB-INF/views/modules/report/reportSubjectGroup.jsp

@@ -38,6 +38,9 @@
         </select>
         &nbsp;
         <input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
+		&nbsp;
+		<input id="export-button" class="btn" type="button" value="导出"/>
+		 &nbsp;
         <input class="btn btn-primary" type="button" value="查看统计图" onclick="viewGroupEcharts()"/>
     </div>
 </form>
@@ -51,7 +54,7 @@
         <th>最低分</th>
         <th>平均分</th>
         <th>标准差</th>
-        <th>差异系数(%)</th>
+        <th>差异系数(%)</th>
         <th>零分人数</th>
         <th>满分人数</th>
     </tr>
@@ -73,7 +76,14 @@
     </tbody>
 </table>
 <script type="text/javascript">
-
+$("#export-button").click(function(){
+    if ($("#subjectCode").val() == null || $("#subjectCode").val() == '') {
+        alert('请选择科目');
+        return;
+    }
+	$("#searchForm").attr("action","${ctx}/admin/exam/reportSubjectGroup/export");
+	$("#searchForm").submit();
+});
 
     function viewGroupEcharts() {
         var groupNames = new Array();
@@ -180,6 +190,7 @@
             alert('请选择科目');
             return;
         }
+    	$("#searchForm").attr("action","${ctx}/admin/exam/reportSubjectGroup");
         $("#searchForm").submit();
         return false;
     }

+ 14 - 1
stmms-web/src/main/webapp/WEB-INF/views/modules/report/reportSubjectQuestion.jsp

@@ -40,7 +40,10 @@
             </c:forEach>
         </select>
         &nbsp;
-        <input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
+        <input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>		
+        &nbsp;
+		<input id="export-button" class="btn" type="button" value="导出"/>
+		 &nbsp;
         <input class="btn btn-primary" type="button" value="查看统计图" onclick="viewQuestionEcharts()"/>
 
     </div>
@@ -71,6 +74,15 @@
     </tbody>
 </table>
 <script type="text/javascript">
+$("#export-button").click(function(){
+    if ($("#subjectCode").val() == null || $("#subjectCode").val() == '') {
+        alert('请选择科目');
+        return;
+    }
+	$("#searchForm").attr("action","${ctx}/admin/exam/reportSubjectQuestion/export");
+	$("#searchForm").submit();
+});
+
     $(document).ready(function () {
         var objective = '${query.objective}';
         if (objective == 'true') {
@@ -172,6 +184,7 @@
             alert('请选择科目');
             return;
         }
+    	$("#searchForm").attr("action","${ctx}/admin/exam/reportSubjectQuestion");
         $("#searchForm").submit();
         return false;
     }

+ 9 - 3
stmms-web/src/main/webapp/WEB-INF/views/modules/report/reportSubjectRange.jsp

@@ -32,8 +32,10 @@
                         <c:if test="${query.subjectCode eq subject.code }">selected</c:if>>${subject.code}-${subject.name}</option>
             </c:forEach>
         </select>
+		&nbsp;
         <input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
         &nbsp;
+		<input id="export-button" class="btn" type="button" value="导出"/>
     </div>
 </form>
 <tags:message content="${message}"/>
@@ -42,7 +44,7 @@
     <tr>
         <th>课程</th>
         <th>层次</th>
-        <th>0-4</th>
+        <th>0-</th>
         <th>0-占比(%)</th>
         <th>50-</th>
         <th>50-占比(%)</th>
@@ -86,8 +88,7 @@
             <td>${subject.mte60}</td>
             <td>${subject.percent_mte60}</td>
             <td>${subject.totalCount}</td>
-            <td><a href="#"
-                   onclick="viewEcharts('${subject.subjectCode}','${subject.subjectName}',${subject.percent0_49},${subject.percent50_59},${subject.percent60_69},${subject.percent70_79},${subject.percent80_89},${subject.percent90_100})">分段图</a>
+            <td><a href="#" onclick="viewEcharts('${subject.subjectCode}','${subject.subjectName}',${subject.percent0_49},${subject.percent50_59},${subject.percent60_69},${subject.percent70_79},${subject.percent80_89},${subject.percent90_100})">分段图</a>
             </td>
         </tr>
     </c:forEach>
@@ -95,6 +96,11 @@
 </table>
 <div class="pagination">${query}</div>
 <script type="text/javascript">
+$("#export-button").click(function(){
+	$("#searchForm").attr("action","${ctx}/admin/exam/reportSubjectRange/export");
+	$("#searchForm").submit();
+});
+
     function page(n, s) {
         $("#pageNumber").val(n);
         $("#pageSize").val(s);

+ 12 - 3
stmms-web/src/main/webapp/WEB-INF/views/modules/report/reportSubjectTeacher.jsp

@@ -28,8 +28,8 @@
     <li><a href="${ctx}/admin/exam/reportSubjectGroup?subjectCode=${query.subjectCode}">大题统计分析表</a></li>
 </ul>
 <form id="searchForm" action="${ctx}/admin/exam/reportSubjectTeacher" method="post" class="breadcrumb form-search">
-    <input id="pageNumber" name="pageNumber" type="hidden"/>
-    <input id="pageSize" name="pageSize" type="hidden"/>
+	    <input type="hidden" id="pageNumber" name="pageNumber" value="${query.pageNumber }"/>
+	    <input type="hidden" id="pageSize" name="pageSize" value="${query.pageSize }"/>
     <div>
         <label>科目:</label>
         <select class="input-large" id="subjectCode" name="subjectCode">
@@ -42,7 +42,10 @@
         <label>任课老师:</label>
         <input type="text" name="teacherName" value="${query.teacherName}" maxlength="10" class="input-small"/>
         &nbsp;
-        <input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
+        <input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>		
+        &nbsp;
+		<input id="export-button" class="btn" type="button" value="导出"/>
+		 &nbsp;
         <input class="btn btn-primary" type="button" value="查看统计图" onclick="viewTeacherEcharts()"/>
     </div>
 </form>
@@ -83,6 +86,10 @@
     </tbody>
 </table>
 <script type="text/javascript">
+$("#export-button").click(function(){
+	$("#searchForm").attr("action","${ctx}/admin/exam/reportSubjectTeacher/export");
+	$("#searchForm").submit();
+});
 
     function viewTeacherEcharts() {
         var tearchers = new Array();
@@ -197,6 +204,7 @@
     function page(n, s) {
         $("#pageNumber").val(n);
         $("#pageSize").val(s);
+    	$("#searchForm").attr("action","${ctx}/admin/exam/reportSubjectTeacher");
         $("#searchForm").submit();
         return false;
     }
@@ -208,6 +216,7 @@
             alert('请选择科目');
             return;
         }
+    	$("#searchForm").attr("action","${ctx}/admin/exam/reportSubjectTeacher");
         $("#searchForm").submit();
         return false;
     }

+ 8 - 0
stmms-web/src/main/webapp/WEB-INF/views/modules/report/reportSubjectTeacherClass.jsp

@@ -21,6 +21,9 @@
 <form id="searchForm" action="${ctx}/admin/exam/reportSubjectTeacher" method="post" class="breadcrumb form-search">
     &nbsp;&nbsp;科目:${subjectName}&nbsp;&nbsp;&nbsp;&nbsp;任课老师:${query.teacherName} &nbsp;&nbsp;
     <a href="#" class="btn btn-primary" onclick="viewTeacherClassEcharts()"/>查看统计图</a>
+    &nbsp;
+	<input id="export-button" class="btn" type="button" value="导出"/>
+	&nbsp;
     <a href="#" class="btn" onclick="javascript:history.go(-1)"/>返回</a>
 </form>
 <tags:message content="${message}"/>
@@ -57,6 +60,11 @@
     </tbody>
 </table>
 <script type="text/javascript">
+$("#export-button").click(function(){
+	$("#searchForm").attr("action","${ctx}/admin/exam/reportSubjectTeacherClass/export");
+	$("#searchForm").submit();
+});
+
 
     function viewTeacherClassEcharts() {
         var classs = new Array();