Bladeren bron

成绩分析导出时改为字符串,用于保留2位小数excel显示

yin 7 maanden geleden
bovenliggende
commit
90266f6c1e

+ 1 - 1
stmms-common/src/main/java/cn/com/qmth/stmms/common/utils/VersionInfo.java

@@ -7,5 +7,5 @@ public class VersionInfo {
 
     public static final String NAME = "1.3.16";
 
-    public static final String DATE = "20241108";
+    public static final String DATE = "20241118";
 }

+ 190 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/dto/ReportSubjectClassDTO.java

@@ -0,0 +1,190 @@
+package cn.com.qmth.stmms.admin.dto;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+
+import cn.com.qmth.stmms.biz.report.model.ReportSubjectClass;
+import cn.com.qmth.stmms.common.annotation.ExcelField;
+
+public class ReportSubjectClassDTO {
+
+    @ExcelField(title = "课程代码", align = 2, sort = 10)
+    private String subjectCode;
+
+    /**
+     * 课程名称
+     */
+    @ExcelField(title = "课程名称", align = 2, sort = 20)
+    private String subjectName;
+
+    /**
+     * 机组
+     */
+    @ExcelField(title = "机组", align = 2, sort = 30)
+    private String className;
+
+    /**
+     * 最高分
+     */
+    @ExcelField(title = "最高分", align = 2, sort = 40)
+    private String maxScore;
+
+    /**
+     * 最低分
+     */
+    @ExcelField(title = "最低分", align = 2, sort = 50)
+    private String minScore;
+
+    /**
+     * 及格人数
+     */
+    @ExcelField(title = "及格人数", align = 2, sort = 60)
+    private int passCount;
+
+    /**
+     * 及格率
+     */
+    @ExcelField(title = "及格率", align = 2, sort = 70)
+    private String passRate;
+
+    /**
+     * 优秀数
+     */
+    @ExcelField(title = "优秀人数", align = 2, sort = 80)
+    private int excellentCount;
+
+    /**
+     * 优秀率
+     */
+    @ExcelField(title = "优秀率", align = 2, sort = 90)
+    private String excellentRate;
+
+    /**
+     * 平均分
+     */
+    @ExcelField(title = "平均分", align = 2, sort = 100)
+    private String avgScore;
+
+    /**
+     * 报考人数
+     */
+    @ExcelField(title = "报考人数", align = 2, sort = 110)
+    private Integer totalCount;
+
+    /**
+     * 有效人数
+     */
+    @ExcelField(title = "有效人数", align = 2, sort = 120)
+    private Integer realityCount;
+
+    public ReportSubjectClassDTO(ReportSubjectClass r) {
+        this.subjectCode = r.getSubjectCode();
+        this.subjectName = r.getSubjectName();
+        this.className = r.getClassName();
+        this.maxScore = new BigDecimal(r.getMaxScore()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.minScore = new BigDecimal(r.getMinScore()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.avgScore = new BigDecimal(r.getAvgScore()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.passRate = new BigDecimal(r.getPassRate()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.excellentRate = new BigDecimal(r.getExcellentRate()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.passCount = r.getPassCount();
+        this.excellentCount = r.getExcellentCount();
+        this.realityCount = r.getRealityCount();
+        this.totalCount = r.getTotalCount();
+    }
+
+    public String getSubjectCode() {
+        return subjectCode;
+    }
+
+    public void setSubjectCode(String subjectCode) {
+        this.subjectCode = subjectCode;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public String getClassName() {
+        return className;
+    }
+
+    public void setClassName(String className) {
+        this.className = className;
+    }
+
+    public String getMaxScore() {
+        return maxScore;
+    }
+
+    public void setMaxScore(String maxScore) {
+        this.maxScore = maxScore;
+    }
+
+    public String getMinScore() {
+        return minScore;
+    }
+
+    public void setMinScore(String minScore) {
+        this.minScore = minScore;
+    }
+
+    public int getPassCount() {
+        return passCount;
+    }
+
+    public void setPassCount(int passCount) {
+        this.passCount = passCount;
+    }
+
+    public String getPassRate() {
+        return passRate;
+    }
+
+    public void setPassRate(String passRate) {
+        this.passRate = passRate;
+    }
+
+    public int getExcellentCount() {
+        return excellentCount;
+    }
+
+    public void setExcellentCount(int excellentCount) {
+        this.excellentCount = excellentCount;
+    }
+
+    public String getExcellentRate() {
+        return excellentRate;
+    }
+
+    public void setExcellentRate(String excellentRate) {
+        this.excellentRate = excellentRate;
+    }
+
+    public String getAvgScore() {
+        return avgScore;
+    }
+
+    public void setAvgScore(String avgScore) {
+        this.avgScore = avgScore;
+    }
+
+    public Integer getTotalCount() {
+        return totalCount;
+    }
+
+    public void setTotalCount(Integer totalCount) {
+        this.totalCount = totalCount;
+    }
+
+    public Integer getRealityCount() {
+        return realityCount;
+    }
+
+    public void setRealityCount(Integer realityCount) {
+        this.realityCount = realityCount;
+    }
+}

+ 212 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/dto/ReportSubjectDTO.java

@@ -0,0 +1,212 @@
+package cn.com.qmth.stmms.admin.dto;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+
+import cn.com.qmth.stmms.biz.report.model.ReportSubject;
+import cn.com.qmth.stmms.common.annotation.ExcelField;
+
+/**
+ * 课程总量分析
+ *
+ */
+public class ReportSubjectDTO {
+
+    /**
+     * 课程编号
+     */
+    @ExcelField(title = "课程代码", align = 2, sort = 10)
+    private String subjectCode;
+
+    /**
+     * 课程名称
+     */
+    @ExcelField(title = "课程名称", align = 2, sort = 20)
+    private String subjectName;
+
+    /**
+     * 最高分
+     */
+    @ExcelField(title = "最高分", align = 2, sort = 30)
+    private String maxScore;
+
+    /**
+     * 最低分
+     */
+    @ExcelField(title = "最低分", align = 2, sort = 40)
+    private String minScore;
+
+    /**
+     * 平均分
+     */
+    @ExcelField(title = "平均分", align = 2, sort = 50)
+    private String avgScore;
+
+    /**
+     * 报考人数
+     */
+    @ExcelField(title = "报考人数", align = 2, sort = 60)
+    private Integer totalCount;
+
+    /**
+     * 及格人数
+     */
+    @ExcelField(title = "及格人数", align = 2, sort = 70)
+    private Integer passCount;
+
+    /**
+     * 及格率
+     */
+    @ExcelField(title = "及格率(%)", align = 2, sort = 80)
+    private String passRate;
+
+    /**
+     * 优秀率
+     */
+    @ExcelField(title = "优秀率(%)", align = 2, sort = 90)
+    private String excellentRate;
+
+    /**
+     * 优秀人数
+     */
+    @ExcelField(title = "优秀人数", align = 2, sort = 100)
+    private Integer excellentCount;
+
+    /**
+     * 缺考人数
+     */
+    @ExcelField(title = "缺考人数", align = 2, sort = 110)
+    private Integer absentCount;
+
+    /**
+     * 违纪人数
+     */
+    @ExcelField(title = "违纪人数", align = 2, sort = 120)
+    private Integer breachCount;
+
+    /**
+     * 有效人数
+     */
+    @ExcelField(title = "有效人数", align = 2, sort = 130)
+    private Integer realityCount;
+
+    public ReportSubjectDTO(ReportSubject r) {
+        this.subjectCode = r.getSubjectCode();
+        this.subjectName = r.getSubjectName();
+        this.maxScore = new BigDecimal(r.getMaxScore()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.minScore = new BigDecimal(r.getMinScore()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.avgScore = new BigDecimal(r.getAvgScore()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.passRate = new BigDecimal(r.getPassRate()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.excellentRate = new BigDecimal(r.getExcellentRate()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.passCount = r.getPassCount();
+        this.excellentCount = r.getExcellentCount();
+        this.realityCount = r.getRealityCount();
+        this.absentCount = r.getAbsentCount();
+        this.breachCount = r.getBreachCount();
+        this.totalCount = r.getTotalCount();
+    }
+
+    public String getSubjectCode() {
+        return subjectCode;
+    }
+
+    public void setSubjectCode(String subjectCode) {
+        this.subjectCode = subjectCode;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public String getMaxScore() {
+        return maxScore;
+    }
+
+    public void setMaxScore(String maxScore) {
+        this.maxScore = maxScore;
+    }
+
+    public String getMinScore() {
+        return minScore;
+    }
+
+    public void setMinScore(String minScore) {
+        this.minScore = minScore;
+    }
+
+    public String getAvgScore() {
+        return avgScore;
+    }
+
+    public void setAvgScore(String avgScore) {
+        this.avgScore = avgScore;
+    }
+
+    public Integer getTotalCount() {
+        return totalCount;
+    }
+
+    public void setTotalCount(Integer totalCount) {
+        this.totalCount = totalCount;
+    }
+
+    public Integer getPassCount() {
+        return passCount;
+    }
+
+    public void setPassCount(Integer passCount) {
+        this.passCount = passCount;
+    }
+
+    public String getPassRate() {
+        return passRate;
+    }
+
+    public void setPassRate(String passRate) {
+        this.passRate = passRate;
+    }
+
+    public String getExcellentRate() {
+        return excellentRate;
+    }
+
+    public void setExcellentRate(String excellentRate) {
+        this.excellentRate = excellentRate;
+    }
+
+    public Integer getExcellentCount() {
+        return excellentCount;
+    }
+
+    public void setExcellentCount(Integer excellentCount) {
+        this.excellentCount = excellentCount;
+    }
+
+    public Integer getAbsentCount() {
+        return absentCount;
+    }
+
+    public void setAbsentCount(Integer absentCount) {
+        this.absentCount = absentCount;
+    }
+
+    public Integer getBreachCount() {
+        return breachCount;
+    }
+
+    public void setBreachCount(Integer breachCount) {
+        this.breachCount = breachCount;
+    }
+
+    public Integer getRealityCount() {
+        return realityCount;
+    }
+
+    public void setRealityCount(Integer realityCount) {
+        this.realityCount = realityCount;
+    }
+}

+ 211 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/dto/ReportSubjectGroupDTO.java

@@ -0,0 +1,211 @@
+package cn.com.qmth.stmms.admin.dto;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+
+import cn.com.qmth.stmms.biz.report.model.ReportSubjectGroup;
+import cn.com.qmth.stmms.common.annotation.ExcelField;
+
+/**
+ * 大题维度分析
+ */
+public class ReportSubjectGroupDTO {
+
+    /**
+     * 课程编号
+     */
+    @ExcelField(title = "课程代码", align = 2, sort = 10)
+    private String subjectCode;
+
+    /**
+     * 课程名称
+     */
+    @ExcelField(title = "课程名称", align = 2, sort = 20)
+    private String subjectName;
+
+    /**
+     * 大题型
+     */
+    @ExcelField(title = "大题名称", align = 2, sort = 30)
+    private String groupName;
+
+    /**
+     * 大题号
+     */
+    @ExcelField(title = "大题号", align = 2, sort = 40)
+    private Integer groupNumber;
+
+    /**
+     * 最高分
+     */
+    @ExcelField(title = "最高分", align = 2, sort = 50)
+    private String maxScore;
+
+    /**
+     * 最低分
+     */
+    @ExcelField(title = "最低分", align = 2, sort = 60)
+    private String minScore;
+
+    /**
+     * 平均分
+     */
+    @ExcelField(title = "平均分", align = 2, sort = 70)
+    private String avgScore;
+
+    /**
+     * 满分
+     */
+    @ExcelField(title = "满分", align = 2, sort = 80)
+    private String totalScore;
+
+    /**
+     * 标准差
+     */
+    @ExcelField(title = "标准差", align = 2, sort = 90)
+    private String stdev;
+
+    /**
+     * 差异系数
+     */
+    @ExcelField(title = "差异系数(%)", align = 2, sort = 100)
+    private String coefficient;
+
+    /**
+     * 得分率
+     */
+    @ExcelField(title = "得分率", align = 2, sort = 110)
+    private String scoreRate;
+
+    /**
+     * 零分人数
+     */
+    @ExcelField(title = "零分人数", align = 2, sort = 120)
+    private Integer zeroCount;
+
+    /**
+     * 满分人数
+     */
+    @ExcelField(title = "满分人数", align = 2, sort = 130)
+    private Integer fullCount;
+
+    public ReportSubjectGroupDTO(ReportSubjectGroup r) {
+        this.subjectCode = r.getSubjectCode();
+        this.subjectName = r.getSubjectName();
+        this.groupName = r.getGroupName();
+        this.groupNumber = r.getGroupNumber();
+        this.maxScore = new BigDecimal(r.getMaxScore()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.minScore = new BigDecimal(r.getMinScore()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.avgScore = new BigDecimal(r.getAvgScore()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.totalScore = new BigDecimal(r.getTotalScore()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.scoreRate = new BigDecimal(r.getScoreRate()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.stdev = new BigDecimal(r.getStdev()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.coefficient = new BigDecimal(r.getCoefficient()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.zeroCount = r.getZeroCount();
+        this.fullCount = r.getFullCount();
+    }
+
+    public String getSubjectCode() {
+        return subjectCode;
+    }
+
+    public void setSubjectCode(String subjectCode) {
+        this.subjectCode = subjectCode;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public String getGroupName() {
+        return groupName;
+    }
+
+    public void setGroupName(String groupName) {
+        this.groupName = groupName;
+    }
+
+    public Integer getGroupNumber() {
+        return groupNumber;
+    }
+
+    public void setGroupNumber(Integer groupNumber) {
+        this.groupNumber = groupNumber;
+    }
+
+    public String getMaxScore() {
+        return maxScore;
+    }
+
+    public void setMaxScore(String maxScore) {
+        this.maxScore = maxScore;
+    }
+
+    public String getMinScore() {
+        return minScore;
+    }
+
+    public void setMinScore(String minScore) {
+        this.minScore = minScore;
+    }
+
+    public String getAvgScore() {
+        return avgScore;
+    }
+
+    public void setAvgScore(String avgScore) {
+        this.avgScore = avgScore;
+    }
+
+    public String getTotalScore() {
+        return totalScore;
+    }
+
+    public void setTotalScore(String totalScore) {
+        this.totalScore = totalScore;
+    }
+
+    public String getStdev() {
+        return stdev;
+    }
+
+    public void setStdev(String stdev) {
+        this.stdev = stdev;
+    }
+
+    public String getCoefficient() {
+        return coefficient;
+    }
+
+    public void setCoefficient(String coefficient) {
+        this.coefficient = coefficient;
+    }
+
+    public String getScoreRate() {
+        return scoreRate;
+    }
+
+    public void setScoreRate(String scoreRate) {
+        this.scoreRate = scoreRate;
+    }
+
+    public Integer getZeroCount() {
+        return zeroCount;
+    }
+
+    public void setZeroCount(Integer zeroCount) {
+        this.zeroCount = zeroCount;
+    }
+
+    public Integer getFullCount() {
+        return fullCount;
+    }
+
+    public void setFullCount(Integer fullCount) {
+        this.fullCount = fullCount;
+    }
+}

+ 182 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/dto/ReportSubjectQuestionDTO.java

@@ -0,0 +1,182 @@
+package cn.com.qmth.stmms.admin.dto;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+
+import cn.com.qmth.stmms.biz.report.model.ReportSubjectQuestion;
+import cn.com.qmth.stmms.common.annotation.ExcelField;
+
+/**
+ * 客观 主观题 成绩分析
+ *
+ */
+public class ReportSubjectQuestionDTO {
+
+    /**
+     * 课程编号
+     */
+    @ExcelField(title = "课程代码", align = 2, sort = 10)
+    private String subjectCode;
+
+    /**
+     * 课程名称
+     */
+    @ExcelField(title = "课程名称", align = 2, sort = 20)
+    private String subjectName;
+
+    /**
+     * 题目名称
+     */
+    @ExcelField(title = "题目名称", align = 2, sort = 30)
+    private String questionName;
+
+    /**
+     * 大题号
+     */
+    @ExcelField(title = "大题号", align = 2, sort = 40)
+    private Integer mainNumber;
+
+    /**
+     * 小题号
+     */
+    @ExcelField(title = "小题号", align = 2, sort = 50)
+    private String subNumber;
+
+    /**
+     * 总分
+     */
+    @ExcelField(title = "总分", align = 2, sort = 60)
+    private String totalScore;
+
+    /**
+     * 平均分
+     */
+    @ExcelField(title = "平均分", align = 2, sort = 70)
+    private String avgScore;
+
+    /**
+     * 标准差
+     */
+    @ExcelField(title = "标准差", align = 2, sort = 80)
+    private String stdev;
+
+    /**
+     * 得分率
+     */
+    @ExcelField(title = "得分率", align = 2, sort = 90)
+    private String scoreRate;
+
+    /**
+     * 满分率
+     */
+    @ExcelField(title = "满分率", align = 2, sort = 100)
+    private String fullScoreRate;
+
+    /**
+     * 卷型
+     */
+    @ExcelField(title = "卷型", align = 2, sort = 110)
+    private String paperType;
+
+    public ReportSubjectQuestionDTO(ReportSubjectQuestion r) {
+        this.subjectCode = r.getSubjectCode();
+        this.subjectName = r.getSubjectName();
+        this.questionName = r.getQuestionName();
+        this.mainNumber = r.getMainNumber();
+        this.subNumber = r.getSubNumber();
+        this.totalScore = new BigDecimal(r.getTotalScore()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.stdev = new BigDecimal(r.getStdev()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.scoreRate = new BigDecimal(r.getScoreRate()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.fullScoreRate = new BigDecimal(r.getFullScoreRate()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.avgScore = new BigDecimal(r.getAvgScore()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.paperType = r.getPaperType();
+    }
+
+    public String getSubjectCode() {
+        return subjectCode;
+    }
+
+    public void setSubjectCode(String subjectCode) {
+        this.subjectCode = subjectCode;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public String getQuestionName() {
+        return questionName;
+    }
+
+    public void setQuestionName(String questionName) {
+        this.questionName = questionName;
+    }
+
+    public Integer getMainNumber() {
+        return mainNumber;
+    }
+
+    public void setMainNumber(Integer mainNumber) {
+        this.mainNumber = mainNumber;
+    }
+
+    public String getSubNumber() {
+        return subNumber;
+    }
+
+    public void setSubNumber(String subNumber) {
+        this.subNumber = subNumber;
+    }
+
+    public String getTotalScore() {
+        return totalScore;
+    }
+
+    public void setTotalScore(String totalScore) {
+        this.totalScore = totalScore;
+    }
+
+    public String getAvgScore() {
+        return avgScore;
+    }
+
+    public void setAvgScore(String avgScore) {
+        this.avgScore = avgScore;
+    }
+
+    public String getStdev() {
+        return stdev;
+    }
+
+    public void setStdev(String stdev) {
+        this.stdev = stdev;
+    }
+
+    public String getScoreRate() {
+        return scoreRate;
+    }
+
+    public void setScoreRate(String scoreRate) {
+        this.scoreRate = scoreRate;
+    }
+
+    public String getFullScoreRate() {
+        return fullScoreRate;
+    }
+
+    public void setFullScoreRate(String fullScoreRate) {
+        this.fullScoreRate = fullScoreRate;
+    }
+
+    public String getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+}

+ 212 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/dto/ReportSubjectTeacherClassDTO.java

@@ -0,0 +1,212 @@
+package cn.com.qmth.stmms.admin.dto;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+
+import cn.com.qmth.stmms.biz.report.model.ReportSubjectTeacherClass;
+import cn.com.qmth.stmms.common.annotation.ExcelField;
+
+/**
+ * 课程总评机组成绩分析
+ *
+ */
+public class ReportSubjectTeacherClassDTO {
+
+    /**
+     * 课程编号
+     */
+    @ExcelField(title = "课程代码", align = 2, sort = 10)
+    private String subjectCode;
+
+    /**
+     * 课程名称
+     */
+    @ExcelField(title = "课程名称", align = 2, sort = 20)
+    private String subjectName;
+
+    /**
+     * 教师
+     */
+    @ExcelField(title = "总评", align = 2, sort = 30)
+    private String teacherName;
+
+    /**
+     * 机组
+     */
+    @ExcelField(title = "机组", align = 2, sort = 40)
+    private String className;
+
+    /**
+     * 有效人数
+     */
+    @ExcelField(title = "有效人数", align = 2, sort = 50)
+    private int realityCount;
+
+    /**
+     * 最高分
+     */
+    @ExcelField(title = "最高分", align = 2, sort = 60)
+    private String maxScore;
+
+    /**
+     * 最低分
+     */
+    @ExcelField(title = "最低分", align = 2, sort = 70)
+    private String minScore;
+
+    /**
+     * 及格人数
+     */
+    @ExcelField(title = "及格人数", align = 2, sort = 80)
+    private int passCount;
+
+    /**
+     * 及格率
+     */
+    @ExcelField(title = "及格率", align = 2, sort = 90)
+    private String passRate;
+
+    /**
+     * 优秀数
+     */
+    @ExcelField(title = "优秀人数", align = 2, sort = 100)
+    private int excellentCount;
+
+    /**
+     * 优秀率
+     */
+    @ExcelField(title = "优秀率", align = 2, sort = 110)
+    private String excellentRate;
+
+    /**
+     * 平均分
+     */
+    @ExcelField(title = "平均分", align = 2, sort = 120)
+    private String avgScore;
+
+    /**
+     * 平均相对分
+     */
+    @ExcelField(title = "平均相对分", align = 2, sort = 130)
+    private String relativeAvgScore;
+
+    public ReportSubjectTeacherClassDTO(ReportSubjectTeacherClass r) {
+        this.subjectCode = r.getSubjectCode();
+        this.subjectName = r.getSubjectName();
+        this.className = r.getClassName();
+        this.teacherName = r.getTeacherName();
+        this.maxScore = new BigDecimal(r.getMaxScore()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.minScore = new BigDecimal(r.getMinScore()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.avgScore = new BigDecimal(r.getAvgScore()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.passRate = new BigDecimal(r.getPassRate()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.excellentRate = new BigDecimal(r.getExcellentRate()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.relativeAvgScore = new BigDecimal(r.getRelativeAvgScore()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.passCount = r.getPassCount();
+        this.excellentCount = r.getExcellentCount();
+        this.realityCount = r.getRealityCount();
+    }
+
+    public String getSubjectCode() {
+        return subjectCode;
+    }
+
+    public void setSubjectCode(String subjectCode) {
+        this.subjectCode = subjectCode;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public String getClassName() {
+        return className;
+    }
+
+    public void setClassName(String className) {
+        this.className = className;
+    }
+
+    public int getRealityCount() {
+        return realityCount;
+    }
+
+    public void setRealityCount(int realityCount) {
+        this.realityCount = realityCount;
+    }
+
+    public String getMaxScore() {
+        return maxScore;
+    }
+
+    public void setMaxScore(String maxScore) {
+        this.maxScore = maxScore;
+    }
+
+    public String getMinScore() {
+        return minScore;
+    }
+
+    public void setMinScore(String minScore) {
+        this.minScore = minScore;
+    }
+
+    public int getPassCount() {
+        return passCount;
+    }
+
+    public void setPassCount(int passCount) {
+        this.passCount = passCount;
+    }
+
+    public String getPassRate() {
+        return passRate;
+    }
+
+    public void setPassRate(String passRate) {
+        this.passRate = passRate;
+    }
+
+    public int getExcellentCount() {
+        return excellentCount;
+    }
+
+    public void setExcellentCount(int excellentCount) {
+        this.excellentCount = excellentCount;
+    }
+
+    public String getExcellentRate() {
+        return excellentRate;
+    }
+
+    public void setExcellentRate(String excellentRate) {
+        this.excellentRate = excellentRate;
+    }
+
+    public String getAvgScore() {
+        return avgScore;
+    }
+
+    public void setAvgScore(String avgScore) {
+        this.avgScore = avgScore;
+    }
+
+    public String getRelativeAvgScore() {
+        return relativeAvgScore;
+    }
+
+    public void setRelativeAvgScore(String relativeAvgScore) {
+        this.relativeAvgScore = relativeAvgScore;
+    }
+}

+ 211 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/dto/ReportSubjectTeacherDTO.java

@@ -0,0 +1,211 @@
+package cn.com.qmth.stmms.admin.dto;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+
+import cn.com.qmth.stmms.biz.report.model.ReportSubjectTeacher;
+import cn.com.qmth.stmms.common.annotation.ExcelField;
+
+/**
+ * 课程总评成绩分析
+ */
+public class ReportSubjectTeacherDTO {
+
+    /**
+     * 课程编号
+     */
+    @ExcelField(title = "课程代码", align = 2, sort = 10)
+    private String subjectCode;
+
+    /**
+     * 课程名称
+     */
+    @ExcelField(title = "课程名称", align = 2, sort = 20)
+    private String subjectName;
+
+    /**
+     * 教师
+     */
+    @ExcelField(title = "总评", align = 2, sort = 30)
+    private String teacherName;
+
+    /**
+     * 最高分
+     */
+    @ExcelField(title = "最高分", align = 2, sort = 40)
+    private String maxScore;
+
+    /**
+     * 最低分
+     */
+    @ExcelField(title = "最低分", align = 2, sort = 50)
+    private String minScore;
+
+    /**
+     * 及格人数
+     */
+    @ExcelField(title = "及格人数", align = 2, sort = 60)
+    private int passCount;
+
+    /**
+     * 及格率
+     */
+    @ExcelField(title = "及格率", align = 2, sort = 70)
+    private String passRate;
+
+    /**
+     * 优秀数
+     */
+    @ExcelField(title = "优秀人数", align = 2, sort = 80)
+    private int excellentCount;
+
+    /**
+     * 优秀率
+     */
+    @ExcelField(title = "优秀率", align = 2, sort = 90)
+    private String excellentRate;
+
+    /**
+     * 平均分
+     */
+    @ExcelField(title = "平均分", align = 2, sort = 100)
+    private String avgScore;
+
+    /**
+     * 平均相对分
+     */
+    @ExcelField(title = "平均相对分", align = 2, sort = 110)
+    private String relativeAvgScore;
+
+    /**
+     * 报考人数
+     */
+    @ExcelField(title = "报考人数", align = 2, sort = 120)
+    private Integer totalCount;
+
+    /**
+     * 有效人数
+     */
+    @ExcelField(title = "有效人数", align = 2, sort = 130)
+    private Integer realityCount;
+
+    public ReportSubjectTeacherDTO(ReportSubjectTeacher r) {
+        this.subjectCode = r.getSubjectCode();
+        this.subjectName = r.getSubjectName();
+        this.teacherName = r.getTeacherName();
+        this.maxScore = new BigDecimal(r.getMaxScore()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.minScore = new BigDecimal(r.getMinScore()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.avgScore = new BigDecimal(r.getAvgScore()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.passRate = new BigDecimal(r.getPassRate()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.excellentRate = new BigDecimal(r.getExcellentRate()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.relativeAvgScore = new BigDecimal(r.getRelativeAvgScore()).setScale(2, RoundingMode.HALF_UP).toString();
+        this.passCount = r.getPassCount();
+        this.excellentCount = r.getExcellentCount();
+        this.realityCount = r.getRealityCount();
+        this.totalCount = r.getTotalCount();
+    }
+
+    public String getSubjectCode() {
+        return subjectCode;
+    }
+
+    public void setSubjectCode(String subjectCode) {
+        this.subjectCode = subjectCode;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public String getMaxScore() {
+        return maxScore;
+    }
+
+    public void setMaxScore(String maxScore) {
+        this.maxScore = maxScore;
+    }
+
+    public String getMinScore() {
+        return minScore;
+    }
+
+    public void setMinScore(String minScore) {
+        this.minScore = minScore;
+    }
+
+    public int getPassCount() {
+        return passCount;
+    }
+
+    public void setPassCount(int passCount) {
+        this.passCount = passCount;
+    }
+
+    public String getPassRate() {
+        return passRate;
+    }
+
+    public void setPassRate(String passRate) {
+        this.passRate = passRate;
+    }
+
+    public int getExcellentCount() {
+        return excellentCount;
+    }
+
+    public void setExcellentCount(int excellentCount) {
+        this.excellentCount = excellentCount;
+    }
+
+    public String getExcellentRate() {
+        return excellentRate;
+    }
+
+    public void setExcellentRate(String excellentRate) {
+        this.excellentRate = excellentRate;
+    }
+
+    public String getAvgScore() {
+        return avgScore;
+    }
+
+    public void setAvgScore(String avgScore) {
+        this.avgScore = avgScore;
+    }
+
+    public String getRelativeAvgScore() {
+        return relativeAvgScore;
+    }
+
+    public void setRelativeAvgScore(String relativeAvgScore) {
+        this.relativeAvgScore = relativeAvgScore;
+    }
+
+    public Integer getTotalCount() {
+        return totalCount;
+    }
+
+    public void setTotalCount(Integer totalCount) {
+        this.totalCount = totalCount;
+    }
+
+    public Integer getRealityCount() {
+        return realityCount;
+    }
+
+    public void setRealityCount(Integer realityCount) {
+        this.realityCount = realityCount;
+    }
+}

+ 8 - 10
stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectClassController.java

@@ -1,7 +1,6 @@
 package cn.com.qmth.stmms.admin.report;
 
-import java.math.BigDecimal;
-import java.math.RoundingMode;
+import java.util.ArrayList;
 import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
@@ -16,6 +15,7 @@ import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
+import cn.com.qmth.stmms.admin.dto.ReportSubjectClassDTO;
 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;
@@ -66,17 +66,15 @@ public class ReportSubjectClassController extends BaseExamController {
         query.setExamId(examId);
         query.setPageNumber(1);
         query.setPageSize(Integer.MAX_VALUE);
-        List<ReportSubjectClass> list = reportSubjectClassService.findByQuery(query);
-        for (ReportSubjectClass r : list) {
-            r.setMaxScore(new BigDecimal(r.getMaxScore()).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            r.setMinScore(new BigDecimal(r.getMinScore()).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            r.setAvgScore(new BigDecimal(r.getAvgScore()).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            r.setExcellentRate(new BigDecimal(r.getExcellentRate()).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            r.setPassRate(new BigDecimal(r.getPassRate()).setScale(2, RoundingMode.HALF_UP).doubleValue());
+        List<ReportSubjectClass> result = reportSubjectClassService.findByQuery(query);
+        List<ReportSubjectClassDTO> list = new ArrayList<>();
+        for (ReportSubjectClass r : result) {
+            list.add(new ReportSubjectClassDTO(r));
         }
         String fileName = "课程机组成绩分析.xlsx";
         try {
-            new ExportExcel("课程机组成绩分析", ReportSubjectClass.class).setDataList(list).write(response, fileName).dispose();
+            new ExportExcel("课程机组成绩分析", ReportSubjectClassDTO.class).setDataList(list).write(response, fileName)
+                    .dispose();
             return null;
         } catch (Exception e) {
             addMessage(redirectAttributes, "导出成绩失败!" + e.getMessage());

+ 6 - 10
stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectController.java

@@ -1,7 +1,6 @@
 package cn.com.qmth.stmms.admin.report;
 
-import java.math.BigDecimal;
-import java.math.RoundingMode;
+import java.util.ArrayList;
 import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
@@ -16,6 +15,7 @@ import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
+import cn.com.qmth.stmms.admin.dto.ReportSubjectDTO;
 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;
@@ -74,17 +74,13 @@ public class ReportSubjectController extends BaseExamController {
         query.setPageNumber(1);
         query.setPageSize(Integer.MAX_VALUE);
         query = reportSubjectService.findByQuery(query);
-        List<ReportSubject> list = query.getResult();
-        for (ReportSubject r : list) {
-            r.setMaxScore(new BigDecimal(r.getMaxScore()).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            r.setMinScore(new BigDecimal(r.getMinScore()).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            r.setAvgScore(new BigDecimal(r.getAvgScore()).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            r.setPassRate(new BigDecimal(r.getPassRate()).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            r.setExcellentRate(new BigDecimal(r.getExcellentRate()).setScale(2, RoundingMode.HALF_UP).doubleValue());
+        List<ReportSubjectDTO> list = new ArrayList<>();
+        for (ReportSubject r : query.getResult()) {
+            list.add(new ReportSubjectDTO(r));
         }
         String fileName = "课程总量统计.xlsx";
         try {
-            new ExportExcel("课程总量统计", ReportSubject.class).setDataList(list).write(response, fileName).dispose();
+            new ExportExcel("课程总量统计", ReportSubjectDTO.class).setDataList(list).write(response, fileName).dispose();
             return null;
         } catch (Exception e) {
             addMessage(redirectAttributes, "导出成绩失败!" + e.getMessage());

+ 8 - 12
stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectGroupController.java

@@ -1,7 +1,6 @@
 package cn.com.qmth.stmms.admin.report;
 
-import java.math.BigDecimal;
-import java.math.RoundingMode;
+import java.util.ArrayList;
 import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
@@ -16,6 +15,7 @@ import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
+import cn.com.qmth.stmms.admin.dto.ReportSubjectGroupDTO;
 import cn.com.qmth.stmms.admin.exam.BaseExamController;
 import cn.com.qmth.stmms.biz.exam.model.MarkGroup;
 import cn.com.qmth.stmms.biz.exam.service.MarkGroupService;
@@ -73,19 +73,15 @@ public class ReportSubjectGroupController extends BaseExamController {
         query.setExamId(examId);
         query.setPageNumber(1);
         query.setPageSize(Integer.MAX_VALUE);
-        List<ReportSubjectGroup> list = reportSubjectGroupService.findByQuery(query);
-        for (ReportSubjectGroup r : list) {
-            r.setMaxScore(new BigDecimal(r.getMaxScore()).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            r.setMinScore(new BigDecimal(r.getMinScore()).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            r.setTotalScore(new BigDecimal(r.getTotalScore()).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            r.setAvgScore(new BigDecimal(r.getAvgScore()).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            r.setScoreRate(new BigDecimal(r.getScoreRate()).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            r.setStdev(new BigDecimal(r.getStdev()).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            r.setCoefficient(new BigDecimal(r.getCoefficient()).setScale(2, RoundingMode.HALF_UP).doubleValue());
+        List<ReportSubjectGroup> result = reportSubjectGroupService.findByQuery(query);
+        List<ReportSubjectGroupDTO> list = new ArrayList<>();
+        for (ReportSubjectGroup r : result) {
+            list.add(new ReportSubjectGroupDTO(r));
         }
         String fileName = "大题统计分析.xlsx";
         try {
-            new ExportExcel("大题统计分析", ReportSubjectGroup.class).setDataList(list).write(response, fileName).dispose();
+            new ExportExcel("大题统计分析", ReportSubjectGroupDTO.class).setDataList(list).write(response, fileName)
+                    .dispose();
             return null;
         } catch (Exception e) {
             addMessage(redirectAttributes, "导出成绩失败!" + e.getMessage());

+ 7 - 10
stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectQuestionController.java

@@ -1,7 +1,6 @@
 package cn.com.qmth.stmms.admin.report;
 
-import java.math.BigDecimal;
-import java.math.RoundingMode;
+import java.util.ArrayList;
 import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
@@ -16,6 +15,7 @@ import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
+import cn.com.qmth.stmms.admin.dto.ReportSubjectQuestionDTO;
 import cn.com.qmth.stmms.admin.exam.BaseExamController;
 import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
 import cn.com.qmth.stmms.biz.report.model.ReportSubjectQuestion;
@@ -71,17 +71,14 @@ public class ReportSubjectQuestionController extends BaseExamController {
         query.setExamId(examId);
         query.setPageNumber(1);
         query.setPageSize(Integer.MAX_VALUE);
-        List<ReportSubjectQuestion> list = reportSubjectQuestionService.findByQuery(query);
-        for (ReportSubjectQuestion r : list) {
-            r.setTotalScore(new BigDecimal(r.getTotalScore()).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            r.setAvgScore(new BigDecimal(r.getAvgScore()).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            r.setStdev(new BigDecimal(r.getStdev()).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            r.setScoreRate(new BigDecimal(r.getScoreRate()).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            r.setFullScoreRate(new BigDecimal(r.getFullScoreRate()).setScale(2, RoundingMode.HALF_UP).doubleValue());
+        List<ReportSubjectQuestion> result = reportSubjectQuestionService.findByQuery(query);
+        List<ReportSubjectQuestionDTO> list = new ArrayList<>();
+        for (ReportSubjectQuestion r : result) {
+            list.add(new ReportSubjectQuestionDTO(r));
         }
         String fileName = query.getObjective() ? "客观题统计分析.xlsx" : "主观题统计分析.xlsx";
         try {
-            new ExportExcel(query.getObjective() ? "客观题统计分析" : "主观题统计分析", ReportSubjectQuestion.class)
+            new ExportExcel(query.getObjective() ? "客观题统计分析" : "主观题统计分析", ReportSubjectQuestionDTO.class)
                     .setDataList(list).write(response, fileName).dispose();
             return null;
         } catch (Exception e) {

+ 16 - 33
stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectRangeController.java

@@ -2,7 +2,11 @@ package cn.com.qmth.stmms.admin.report;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
-import java.util.*;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -25,13 +29,15 @@ import cn.com.qmth.stmms.admin.exam.BaseExamController;
 import cn.com.qmth.stmms.admin.thread.ScoreReportThread;
 import cn.com.qmth.stmms.biz.exam.model.Exam;
 import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
-import cn.com.qmth.stmms.biz.exam.service.*;
+import cn.com.qmth.stmms.biz.exam.service.ExamService;
+import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
 import cn.com.qmth.stmms.biz.file.enums.FormatType;
 import cn.com.qmth.stmms.biz.file.service.FileService;
 import cn.com.qmth.stmms.biz.lock.LockService;
 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.*;
+import cn.com.qmth.stmms.biz.report.service.ReportService;
+import cn.com.qmth.stmms.biz.report.service.ReportSubjectService;
 import cn.com.qmth.stmms.common.annotation.Logging;
 import cn.com.qmth.stmms.common.annotation.RoleRequire;
 import cn.com.qmth.stmms.common.domain.WebUser;
@@ -61,9 +67,6 @@ public class ReportSubjectRangeController extends BaseExamController {
     @Autowired
     private ExamSubjectService subjectService;
 
-    @Autowired
-    private ExamQuestionService questionService;
-
     @Autowired
     private LockService lockService;
 
@@ -71,12 +74,6 @@ public class ReportSubjectRangeController extends BaseExamController {
     @Autowired
     private AsyncTaskExecutor taskExecutor;
 
-    @Autowired
-    private ExamStudentService studentService;
-
-    @Autowired
-    private MarkGroupService groupService;
-
     @Autowired
     private ExamService examService;
 
@@ -86,24 +83,10 @@ public class ReportSubjectRangeController extends BaseExamController {
     @Autowired
     private FileService fileService;
 
-    @Autowired
-    private ReportSubjectQuestionService reportSubjectQuestionService;
-
-    @Autowired
-    private ReportSubjectClassService reportSubjectClassService;
-
-    @Autowired
-    private ReportSubjectTeacherService reportSubjectTeacherService;
-
-    @Autowired
-    private ReportSubjectCollegeService reportSubjectCollegeService;
-
-    @Autowired
-    private ReportSubjectGroupService reportSubjectGroupService;
-
     @Logging(menu = "课程分段统计", type = LogType.QUERY)
     @RequestMapping
-    public String list(Model model, HttpServletRequest request, ReportSubjectQuery query,RedirectAttributes redirectAttributes) {
+    public String list(Model model, HttpServletRequest request, ReportSubjectQuery query,
+            RedirectAttributes redirectAttributes) {
         WebUser wu = RequestUtils.getWebUser(request);
         int examId = getSessionExamId(request);
         List<ExamSubject> sList = getExamSubject(examId, wu);
@@ -111,11 +94,11 @@ public class ReportSubjectRangeController extends BaseExamController {
             ReportSubject subject = reportSubjectService.findOne(examId, query.getSubjectCode());
             if (subject != null && subject.getScoreRange() != null && subject.getTotalScore() != null
                     && subject.getRealityCount() != null) {
-                try{
+                try {
                     JSONArray total = getScoreRange(subject.getScoreRange(), subject.getTotalScore(),
                             subject.getRealityCount(), query.getRange());
-                    model.addAttribute("total",total );
-                }catch (Exception e){
+                    model.addAttribute("total", total);
+                } catch (Exception e) {
                     e.printStackTrace();
                     addMessage(redirectAttributes, "分析失败!请检查科目分值是否正确,并重新计算后查看");
                     return "redirect:/admin/exam/reportSubjectRange";
@@ -191,7 +174,7 @@ public class ReportSubjectRangeController extends BaseExamController {
     @RequestMapping("/report")
     @RoleRequire({ Role.SCHOOL_ADMIN, Role.SUBJECT_HEADER, Role.COLLEGE_ADMIN })
     public String calculate(HttpServletRequest request, RedirectAttributes redirectAttributes,
-            @RequestParam String subjectCode,@RequestParam(required = false)Double range) {
+            @RequestParam String subjectCode, @RequestParam(required = false) Double range) {
         int examId = getSessionExamId(request);
         Set<String> subjectSet = new HashSet<String>();
         if (!lockService.isLocked(LockType.SCORE_CALCULATE, examId, subjectCode)) {
@@ -203,7 +186,7 @@ public class ReportSubjectRangeController extends BaseExamController {
             ScoreReportThread thread = new ScoreReportThread(map, reportService, false);
             taskExecutor.submit(thread);
         }
-        return "redirect:/admin/exam/reportSubjectRange?subjectCode=" + subjectCode+"&range="+range;
+        return "redirect:/admin/exam/reportSubjectRange?subjectCode=" + subjectCode + "&range=" + range;
     }
 
     private JSONArray getScoreRange(String scoreRange, double totalScore, Integer totalCount, double range) {

+ 8 - 13
stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectTeacherClassController.java

@@ -1,7 +1,6 @@
 package cn.com.qmth.stmms.admin.report;
 
-import java.math.BigDecimal;
-import java.math.RoundingMode;
+import java.util.ArrayList;
 import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
@@ -16,6 +15,7 @@ import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
+import cn.com.qmth.stmms.admin.dto.ReportSubjectTeacherClassDTO;
 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;
@@ -75,20 +75,15 @@ public class ReportSubjectTeacherClassController extends BaseExamController {
         query.setExamId(examId);
         query.setPageNumber(1);
         query.setPageSize(Integer.MAX_VALUE);
-        List<ReportSubjectTeacherClass> list = reportSubjectTeacherClassService.findByQuery(query);
-        for (ReportSubjectTeacherClass r : list) {
-            r.setMaxScore(new BigDecimal(r.getMaxScore()).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            r.setMinScore(new BigDecimal(r.getMinScore()).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            r.setAvgScore(new BigDecimal(r.getAvgScore()).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            r.setExcellentRate(new BigDecimal(r.getExcellentRate()).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            r.setPassRate(new BigDecimal(r.getPassRate()).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            r.setRelativeAvgScore(new BigDecimal(r.getRelativeAvgScore()).setScale(2, RoundingMode.HALF_UP)
-                    .doubleValue());
+        List<ReportSubjectTeacherClass> result = reportSubjectTeacherClassService.findByQuery(query);
+        List<ReportSubjectTeacherClassDTO> list = new ArrayList<>();
+        for (ReportSubjectTeacherClass r : result) {
+            list.add(new ReportSubjectTeacherClassDTO(r));
         }
         String fileName = "课程总评机组成绩分析.xlsx";
         try {
-            new ExportExcel("课程总评机组成绩分析", ReportSubjectTeacherClass.class).setDataList(list).write(response, fileName)
-                    .dispose();
+            new ExportExcel("课程总评机组成绩分析", ReportSubjectTeacherClassDTO.class).setDataList(list)
+                    .write(response, fileName).dispose();
             return null;
         } catch (Exception e) {
             addMessage(redirectAttributes, "导出成绩失败!" + e.getMessage());

+ 7 - 12
stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectTeacherController.java

@@ -1,7 +1,6 @@
 package cn.com.qmth.stmms.admin.report;
 
-import java.math.BigDecimal;
-import java.math.RoundingMode;
+import java.util.ArrayList;
 import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
@@ -16,6 +15,7 @@ import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
+import cn.com.qmth.stmms.admin.dto.ReportSubjectTeacherDTO;
 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;
@@ -66,19 +66,14 @@ public class ReportSubjectTeacherController extends BaseExamController {
         query.setExamId(examId);
         query.setPageNumber(1);
         query.setPageSize(Integer.MAX_VALUE);
-        List<ReportSubjectTeacher> list = reportSubjectTeacherService.findByQuery(query);
-        for (ReportSubjectTeacher r : list) {
-            r.setMaxScore(new BigDecimal(r.getMaxScore()).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            r.setMinScore(new BigDecimal(r.getMinScore()).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            r.setAvgScore(new BigDecimal(r.getAvgScore()).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            r.setExcellentRate(new BigDecimal(r.getExcellentRate()).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            r.setPassRate(new BigDecimal(r.getPassRate()).setScale(2, RoundingMode.HALF_UP).doubleValue());
-            r.setRelativeAvgScore(new BigDecimal(r.getRelativeAvgScore()).setScale(2, RoundingMode.HALF_UP)
-                    .doubleValue());
+        List<ReportSubjectTeacher> result = reportSubjectTeacherService.findByQuery(query);
+        List<ReportSubjectTeacherDTO> list = new ArrayList<>();
+        for (ReportSubjectTeacher r : result) {
+            list.add(new ReportSubjectTeacherDTO(r));
         }
         String fileName = "课程总评成绩分析.xlsx";
         try {
-            new ExportExcel("课程总评成绩分析", ReportSubjectTeacher.class).setDataList(list).write(response, fileName)
+            new ExportExcel("课程总评成绩分析", ReportSubjectTeacherDTO.class).setDataList(list).write(response, fileName)
                     .dispose();
             return null;
         } catch (Exception e) {