Ver Fonte

增加对小数点保留2位的处理;增加客观题的paperType筛选条件;修复查询后导出失败的bug

ting.yin há 6 anos atrás
pai
commit
ba80d72944
27 ficheiros alterados com 196 adições e 48 exclusões
  1. 4 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/ExamQuestionDao.java
  2. 2 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/ExamQuestionService.java
  3. 5 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ExamQuestionServiceImpl.java
  4. 10 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/query/ReportSubjectQuery.java
  5. 3 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/impl/ReportSubjectCollegeServiceImpl.java
  6. 4 1
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/impl/ReportSubjectQuestionServiceImpl.java
  7. 4 3
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/impl/ReportSubjectServiceImpl.java
  8. 3 2
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/impl/ReportSubjectTeacherClassServiceImpl.java
  9. 3 2
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/impl/ReportSubjectTeacherServiceImpl.java
  10. 20 0
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/PaperController.java
  11. 6 6
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/ScoreController.java
  12. 7 0
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectClassController.java
  13. 7 0
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectCollegeController.java
  14. 6 0
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectController.java
  15. 8 0
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectGroupController.java
  16. 13 1
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectQuestionController.java
  17. 12 0
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectRangeController.java
  18. 8 0
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectTeacherClassController.java
  19. 8 0
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectTeacherController.java
  20. 3 2
      stmms-web/src/main/webapp/WEB-INF/views/modules/report/reportSubject.jsp
  21. 3 3
      stmms-web/src/main/webapp/WEB-INF/views/modules/report/reportSubjectClass.jsp
  22. 3 3
      stmms-web/src/main/webapp/WEB-INF/views/modules/report/reportSubjectCollege.jsp
  23. 4 4
      stmms-web/src/main/webapp/WEB-INF/views/modules/report/reportSubjectGroup.jsp
  24. 32 4
      stmms-web/src/main/webapp/WEB-INF/views/modules/report/reportSubjectQuestion.jsp
  25. 8 8
      stmms-web/src/main/webapp/WEB-INF/views/modules/report/reportSubjectRange.jsp
  26. 4 4
      stmms-web/src/main/webapp/WEB-INF/views/modules/report/reportSubjectTeacher.jsp
  27. 6 5
      stmms-web/src/main/webapp/WEB-INF/views/modules/report/reportSubjectTeacherClass.jsp

+ 4 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/ExamQuestionDao.java

@@ -55,4 +55,8 @@ public interface ExamQuestionDao extends JpaRepository<ExamQuestion, Integer>, J
     public void updateMainTitleByExamIdAndSubjectCodeAndObjectiveAndMainNumber(Integer examId, String subjectCode,
             boolean objective, Integer mainNumber, String mainTitle);
 
+    @Query("select DISTINCT q.paperType from ExamQuestion q where q.examId=?1 and  q.subjectCode=?2 and q.objective=?3 "
+            + "order by q.paperType")
+    public List<String> getPaperType(int examId, String subjectCode,boolean objective);
+
 }

+ 2 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/ExamQuestionService.java

@@ -31,4 +31,6 @@ public interface ExamQuestionService {
     List<ExamQuestion> findByExamAndSubjectAndObjectiveAndPaperTypeAndMainNumber(Integer examId, String subjectCode,
             boolean objective, String paperType, Integer mainNumber);
 
+    List<String> getPaperType(int examId, String subjectCode);
+
 }

+ 5 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ExamQuestionServiceImpl.java

@@ -131,4 +131,9 @@ public class ExamQuestionServiceImpl extends BaseQueryService<ExamQuestion> impl
         };
     }
 
+    @Override
+    public List<String> getPaperType(int examId, String subjectCode) {
+        return questionDao.getPaperType(examId,subjectCode,true);
+    }
+
 }

+ 10 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/query/ReportSubjectQuery.java

@@ -28,6 +28,8 @@ public class ReportSubjectQuery extends BaseQuery {
 
     private Boolean objective;
 
+    private String paperType;
+
     public Integer getExamId() {
         return examId;
     }
@@ -100,4 +102,12 @@ public class ReportSubjectQuery extends BaseQuery {
         this.subNumber = subNumber;
     }
 
+    public String getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
 }

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

@@ -11,6 +11,8 @@ 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.domain.Sort;
+import org.springframework.data.domain.Sort.Direction;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -46,6 +48,7 @@ public class ReportSubjectCollegeServiceImpl extends BaseQueryService<ReportSubj
 
     @Override
     public List<ReportSubjectCollege> findByQuery(final ReportSubjectQuery query) {
+        query.setSort(new Sort(Direction.ASC, "collegeName"));
         List<ReportSubjectCollege> result = reportSubjectCollegeDao.findAll(new Specification<ReportSubjectCollege>() {
 
             @Override

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

@@ -70,7 +70,7 @@ public class ReportSubjectQuestionServiceImpl extends BaseQueryService<ReportSub
 
     @Override
     public List<ReportSubjectQuestion> findByQuery(final ReportSubjectQuery query) {
-        query.setSort(new Sort(Direction.ASC, "mainNumber", "subNumber"));
+        query.setSort(new Sort(Direction.ASC, "paperType","mainNumber", "subNumber"));
         Page<ReportSubjectQuestion> result = reportSubjectQuestionDao.findAll(new Specification<ReportSubjectQuestion>() {
             @Override
             public Predicate toPredicate(Root<ReportSubjectQuestion> root, CriteriaQuery<?> cQuery, CriteriaBuilder cb) {
@@ -78,6 +78,9 @@ public class ReportSubjectQuestionServiceImpl extends BaseQueryService<ReportSub
                 if (query.getExamId() != null) {
                     predicates.add(cb.equal(root.get("examId"), query.getExamId()));
                 }
+                if (StringUtils.isNotBlank(query.getPaperType())) {
+                    predicates.add(cb.equal(root.get("paperType"), query.getPaperType()));
+                }
                 if (StringUtils.isNotBlank(query.getSubjectCode())) {
                     predicates.add(cb.equal(root.get("subjectCode"), query.getSubjectCode()));
                 }

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

@@ -60,8 +60,8 @@ public class ReportSubjectServiceImpl extends BaseQueryService<ReportSubject> im
                 if (StringUtils.isNotBlank(query.getSubjectCode())) {
                     predicates.add(cb.equal(root.get("subjectCode"), query.getSubjectCode()));
                 }
-                return predicates.isEmpty() ? cb.conjunction()
-                        : cb.and(predicates.toArray(new Predicate[predicates.size()]));
+                return predicates.isEmpty() ? cb.conjunction() : cb.and(predicates.toArray(new Predicate[predicates
+                        .size()]));
             }
         }, query);
         fillResult(result, query);
@@ -85,7 +85,8 @@ public class ReportSubjectServiceImpl extends BaseQueryService<ReportSubject> im
             subject.setMinScore(Double.parseDouble(rs[8].toString()));
             subject.setAvgScore(DoubleUtil.format(Double.parseDouble(rs[9].toString()), "0.00"));
             subject.setPassCount(Integer.parseInt(rs[10].toString()));
-            subject.setPassRate(DoubleUtil.div(Integer.parseInt(rs[10].toString()), Integer.parseInt(rs[6].toString()), 2));
+            subject.setPassRate(DoubleUtil.div(Integer.parseInt(rs[10].toString()), Integer.parseInt(rs[6].toString()),
+                    2));
             reportSubjectDao.save(subject);
         }
     }

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

@@ -10,19 +10,19 @@ import javax.persistence.criteria.Root;
 
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.domain.Sort.Direction;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import cn.com.qmth.stmms.biz.common.BaseQueryService;
 import cn.com.qmth.stmms.biz.exam.dao.ExamSubjectDao;
-import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
 import cn.com.qmth.stmms.biz.report.dao.ReportSubjectDao;
 import cn.com.qmth.stmms.biz.report.dao.ReportSubjectTeacherClassDao;
 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.biz.utils.DoubleUtil;
 
 /**
  * 课程老师班级成绩 分析service实现
@@ -51,6 +51,7 @@ public class ReportSubjectTeacherClassServiceImpl extends BaseQueryService<Repor
 
     @Override
     public List<ReportSubjectTeacherClass> findByQuery(final ReportSubjectQuery query) {
+        query.setSort(new Sort(Direction.ASC, "teacherName","className"));
         List<ReportSubjectTeacherClass> result = reportSubjectTeacherClassDao
                 .findAll(new Specification<ReportSubjectTeacherClass>() {
 

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

@@ -10,19 +10,19 @@ import javax.persistence.criteria.Root;
 
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.domain.Sort.Direction;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import cn.com.qmth.stmms.biz.common.BaseQueryService;
 import cn.com.qmth.stmms.biz.exam.dao.ExamSubjectDao;
-import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
 import cn.com.qmth.stmms.biz.report.dao.ReportSubjectDao;
 import cn.com.qmth.stmms.biz.report.dao.ReportSubjectTeacherDao;
 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.biz.utils.DoubleUtil;
 
 /**
  * 课程学院分析 service实现
@@ -51,6 +51,7 @@ public class ReportSubjectTeacherServiceImpl extends BaseQueryService<ReportSubj
 
     @Override
     public List<ReportSubjectTeacher> findByQuery(final ReportSubjectQuery query) {
+        query.setSort(new Sort(Direction.ASC, "teacherName"));
         List<ReportSubjectTeacher> result = reportSubjectTeacherDao.findAll(new Specification<ReportSubjectTeacher>() {
 
             @Override

+ 20 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/PaperController.java

@@ -8,6 +8,9 @@ import java.util.Map;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -18,6 +21,7 @@ import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
@@ -248,4 +252,20 @@ public class PaperController extends BaseExamController {
         }
         return map;
     }
+    
+    @RequestMapping("/getPaperType")
+    @ResponseBody
+    public JSONArray query(HttpServletRequest request, @RequestParam String subjectCode) {
+        int examId = getSessionExamId(request);
+        JSONArray array = new JSONArray();
+        List<String> list = this.questionService.getPaperType(examId, subjectCode);
+        for (String paperType : list) {
+            JSONObject obj = new JSONObject();
+            if(paperType!=null){
+                obj.accumulate("paperType", paperType);
+                array.add(obj);
+            }
+        }
+        return array;
+    }
 }

+ 6 - 6
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/ScoreController.java

@@ -125,7 +125,7 @@ public class ScoreController extends BaseExamController {
             buildPackageUrl(student);
             buildAnswerUrl(student);
         }
-        String exportMessage = enableExport(examId);
+        String exportMessage = StringUtils.isNotBlank(query.getSubjectCode())?enableExport(examId,query.getSubjectCode()):enableExport(examId);
         if (exportMessage != null) {
             view.addObject("exportMessage", exportMessage);
             view.addObject("enableExport", false);
@@ -214,12 +214,12 @@ public class ScoreController extends BaseExamController {
             RedirectAttributes redirectAttributes) {
         WebUser wu = RequestUtils.getWebUser(request);
         int examId = getSessionExamId(request);
-        String exporMmessage = enableExport(examId);
-        if (exporMmessage == null && StringUtils.isNotBlank(query.getStudentCode())) {
-            exporMmessage = enableExport(examId, query.getStudentCode());
+        String exportMessage = StringUtils.isNotBlank(query.getSubjectCode())?enableExport(examId,query.getSubjectCode()):enableExport(examId);
+        if (exportMessage == null && StringUtils.isNotBlank(query.getStudentCode())) {
+            exportMessage = enableExport(examId, query.getStudentCode());
         }
-        if (exporMmessage != null) {
-            addMessage(redirectAttributes, "评卷未结束不能导出成绩 " + exporMmessage);
+        if (exportMessage != null) {
+            addMessage(redirectAttributes, "评卷未结束不能导出成绩 " + exportMessage);
             return "redirect:/admin/exam/score";
         }
         String subjectCode = RequestUtils.getSession(request).getParameter("subjectCode");

+ 7 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectClassController.java

@@ -1,5 +1,7 @@
 package cn.com.qmth.stmms.admin.report;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
@@ -62,6 +64,11 @@ public class ReportSubjectClassController extends BaseExamController {
         query.setPageNumber(1);
         query.setPageSize(Integer.MAX_VALUE);
         List<ReportSubjectClass> list = reportSubjectClassService.findByQuery(query);
+        for (ReportSubjectClass r : list) {
+            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());
+        }
         String fileName = "课程班级成绩分析.xlsx";
         try {
             new ExportExcel("课程班级成绩分析", ReportSubjectClass.class).setDataList(list).write(response, fileName).dispose();

+ 7 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectCollegeController.java

@@ -1,5 +1,7 @@
 package cn.com.qmth.stmms.admin.report;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
@@ -61,6 +63,11 @@ public class ReportSubjectCollegeController extends BaseExamController {
         query.setPageNumber(1);
         query.setPageSize(Integer.MAX_VALUE);
         List<ReportSubjectCollege> list = reportSubjectCollegeService.findByQuery(query);
+        for (ReportSubjectCollege r : list) {
+            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());
+        }
         String fileName = "课程学院成绩分析.xlsx";
         try {
             new ExportExcel("课程学院成绩分析", ReportSubjectCollege.class).setDataList(list).write(response, fileName)

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

@@ -1,5 +1,7 @@
 package cn.com.qmth.stmms.admin.report;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
@@ -59,6 +61,10 @@ public class ReportSubjectController extends BaseExamController {
         query.setPageSize(Integer.MAX_VALUE);
         query = reportSubjectService.findByQuery(query);
         List<ReportSubject> list = query.getResult();
+        for (ReportSubject r : list) {
+            r.setAvgScore(new BigDecimal(r.getAvgScore()).setScale(2, RoundingMode.HALF_UP).doubleValue());
+            r.setPassRate(new BigDecimal(r.getPassRate()).setScale(2, RoundingMode.HALF_UP).doubleValue());
+        }
         String fileName = "课程总量统计.xlsx";
         try {
             new ExportExcel("课程总量统计", ReportSubject.class).setDataList(list).write(response, fileName).dispose();

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

@@ -1,5 +1,7 @@
 package cn.com.qmth.stmms.admin.report;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
@@ -68,6 +70,12 @@ public class ReportSubjectGroupController extends BaseExamController {
         query.setPageNumber(1);
         query.setPageSize(Integer.MAX_VALUE);
         List<ReportSubjectGroup> list = reportSubjectGroupService.findByQuery(query);
+        for (ReportSubjectGroup r : list) {
+            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());
+        }
         String fileName = "大题统计分析.xlsx";
         try {
             new ExportExcel("大题统计分析", ReportSubjectGroup.class).setDataList(list).write(response, fileName).dispose();

+ 13 - 1
stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectQuestionController.java

@@ -1,5 +1,7 @@
 package cn.com.qmth.stmms.admin.report;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
@@ -15,6 +17,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
 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;
 import cn.com.qmth.stmms.biz.report.query.ReportSubjectQuery;
 import cn.com.qmth.stmms.biz.report.service.ReportSubjectQuestionService;
@@ -36,7 +39,9 @@ public class ReportSubjectQuestionController extends BaseExamController {
 
     @Autowired
     private ReportSubjectQuestionService reportSubjectQuestionService;
-
+    
+    @Autowired
+    private ExamQuestionService questionService;
 
     @RequestMapping
     public String list(Model model, HttpServletRequest request, ReportSubjectQuery query) {
@@ -48,6 +53,7 @@ public class ReportSubjectQuestionController extends BaseExamController {
         if (StringUtils.isNotBlank(query.getSubjectCode())&&query.getObjective()!=null) {
             List<ReportSubjectQuestion> questions = reportSubjectQuestionService.findByQuery(query);
             model.addAttribute("list", questions);
+            model.addAttribute("typeList", questionService.getPaperType(examId, query.getSubjectCode()));
         }
         model.addAttribute("subjectList", getExamSubject(examId, webuser));
         model.addAttribute("query", query);
@@ -62,6 +68,12 @@ public class ReportSubjectQuestionController extends BaseExamController {
         query.setPageNumber(1);
         query.setPageSize(Integer.MAX_VALUE);
         List<ReportSubjectQuestion> list = reportSubjectQuestionService.findByQuery(query);
+        for (ReportSubjectQuestion r : list) {
+            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());
+        }
         String fileName = query.getObjective()?"客观题统计分析.xlsx":"主观题统计分析.xlsx";
         try {
             new ExportExcel(query.getObjective()?"客观题统计分析":"主观题统计分析", ReportSubjectQuestion.class).setDataList(list).write(response, fileName).dispose();

+ 12 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectRangeController.java

@@ -1,5 +1,7 @@
 package cn.com.qmth.stmms.admin.report;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
@@ -60,6 +62,16 @@ public class ReportSubjectRangeController extends BaseExamController {
         query.setPageSize(Integer.MAX_VALUE);
         query = reportSubjectRangeService.findByQuery(query);
         List<ReportSubjectRange> list = query.getResult();
+        for (ReportSubjectRange r : list) {
+            r.setPercent0_49(new BigDecimal(r.getPercent0_49()).setScale(2, RoundingMode.HALF_UP).doubleValue());
+            r.setPercent50_59(new BigDecimal(r.getPercent50_59()).setScale(2, RoundingMode.HALF_UP).doubleValue());
+            r.setPercent60_69(new BigDecimal(r.getPercent60_69()).setScale(2, RoundingMode.HALF_UP).doubleValue());
+            r.setPercent70_79(new BigDecimal(r.getPercent70_79()).setScale(2, RoundingMode.HALF_UP).doubleValue());
+            r.setPercent80_89(new BigDecimal(r.getPercent80_89()).setScale(2, RoundingMode.HALF_UP).doubleValue());
+            r.setPercent90_100(new BigDecimal(r.getPercent90_100()).setScale(2, RoundingMode.HALF_UP).doubleValue());
+            r.setPercent_lt60(new BigDecimal(r.getPercent_lt60()).setScale(2, RoundingMode.HALF_UP).doubleValue());
+            r.setPercent_mte60(new BigDecimal(r.getPercent_mte60()).setScale(2, RoundingMode.HALF_UP).doubleValue());
+        }
         String fileName = "课程分段统计.xlsx";
         try {
             new ExportExcel("课程分段统计", ReportSubjectRange.class).setDataList(list).write(response, fileName).dispose();

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

@@ -1,5 +1,7 @@
 package cn.com.qmth.stmms.admin.report;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
@@ -70,6 +72,12 @@ public class ReportSubjectTeacherClassController extends BaseExamController {
         query.setPageNumber(1);
         query.setPageSize(Integer.MAX_VALUE);
         List<ReportSubjectTeacherClass> list = reportSubjectTeacherClassService.findByQuery(query);
+        for (ReportSubjectTeacherClass r : list) {
+            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());
+        }
         String fileName = "课程老师班级成绩分析.xlsx";
         try {
             new ExportExcel("课程老师班级成绩分析", ReportSubjectTeacherClass.class).setDataList(list).write(response, fileName).dispose();

+ 8 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectTeacherController.java

@@ -1,5 +1,7 @@
 package cn.com.qmth.stmms.admin.report;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
@@ -61,6 +63,12 @@ public class ReportSubjectTeacherController extends BaseExamController {
         query.setPageNumber(1);
         query.setPageSize(Integer.MAX_VALUE);
         List<ReportSubjectTeacher> list = reportSubjectTeacherService.findByQuery(query);
+        for (ReportSubjectTeacher r : list) {
+            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());
+        }
         String fileName = "课程老师成绩分析.xlsx";
         try {
             new ExportExcel("课程老师成绩分析", ReportSubjectTeacher.class).setDataList(list).write(response, fileName)

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

@@ -1,5 +1,6 @@
 <%@ page contentType="text/html;charset=UTF-8" %>
 <%@ include file="/WEB-INF/views/include/taglib.jsp"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> 
 <html>
 <head>
 	<title>成绩分析</title>
@@ -55,11 +56,11 @@
 				<td>${reportSubject.absentCount}</td>
 				<td>${reportSubject.breachCount}</td>
 				<td>${reportSubject.realityCount}</td>
-				<td>${reportSubject.avgScore}</td>
+				<td><fmt:formatNumber type="number" value="${reportSubject.avgScore}" pattern="0.00" maxFractionDigits="2"/></td>
 				<td>${reportSubject.maxScore}</td>
 				<td>${reportSubject.minScore}</td>
 				<td>${reportSubject.passCount}</td>
-				<td>${reportSubject.passRate}</td>
+				<td><fmt:formatNumber type="number" value="${reportSubject.passRate}" pattern="0.00" maxFractionDigits="2"/></td>
 			</tr>
 		</c:forEach>
 		</tbody>

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

@@ -66,13 +66,13 @@
     <c:forEach items="${list}" var="reportSubjectClass">
         <tr>
             <td>${reportSubjectClass.className}</td>
-            <td>${reportSubjectClass.avgScore}</td>
+            <td><fmt:formatNumber type="number" value="${reportSubjectClass.avgScore}" pattern="0.00" maxFractionDigits="2"/></td>
             <td>${reportSubjectClass.maxScore}</td>
             <td>${reportSubjectClass.minScore}</td>
             <td>${reportSubjectClass.passCount}</td>
-            <td>${reportSubjectClass.passRate}</td>
+            <td><fmt:formatNumber type="number" value="${reportSubjectClass.passRate}" pattern="0.00" maxFractionDigits="2"/></td>
             <td>${reportSubjectClass.excellentCount}</td>
-            <td>${reportSubjectClass.excellentRate}</td>
+            <td><fmt:formatNumber type="number" value="${reportSubjectClass.excellentRate}" pattern="0.00" maxFractionDigits="2"/></td>
         </tr>
     </c:forEach>
     </tbody>

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

@@ -68,12 +68,12 @@
     <c:forEach items="${list}" var="reportSubjectCollege">
         <tr>
             <td>${reportSubjectCollege.collegeName}</td>
-            <td>${reportSubjectCollege.avgScore}</td>
+            <td><fmt:formatNumber type="number" value="${reportSubjectCollege.avgScore}" pattern="0.00" maxFractionDigits="2"/></td>
             <td>${reportSubjectCollege.maxScore}</td>
             <td>${reportSubjectCollege.minScore}</td>
             <td>${reportSubjectCollege.passCount}</td>
-            <td>${reportSubjectCollege.passRate}</td>
-            <td>${reportSubjectCollege.excellentRate}</td>
+            <td><fmt:formatNumber type="number" value="${reportSubjectCollege.passRate}" pattern="0.00" maxFractionDigits="2"/></td>
+            <td><fmt:formatNumber type="number" value="${reportSubjectCollege.excellentRate}" pattern="0.00" maxFractionDigits="2"/></td>
         </tr>
     </c:forEach>
     </tbody>

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

@@ -72,10 +72,10 @@
             <td>${group.totalScore}</td>
             <td>${group.maxScore}</td>
             <td>${group.minScore}</td>
-            <td>${group.avgScore}</td>
-            <td>${group.stdev}</td>
-            <td>${group.coefficient}</td>
-            <td>${group.scoreRate}</td>
+            <td><fmt:formatNumber type="number" value="${group.avgScore}" pattern="0.00" maxFractionDigits="2"/></td>
+            <td><fmt:formatNumber type="number" value="${group.stdev}" pattern="0.00" maxFractionDigits="2"/></td>
+            <td><fmt:formatNumber type="number" value="${group.coefficient}" pattern="0.00" maxFractionDigits="2"/></td>
+            <td><fmt:formatNumber type="number" value="${group.scoreRate}" pattern="0.00" maxFractionDigits="2"/></td>
             <td>${group.zeroCount}</td>
             <td>${group.fullCount}</td>
         </tr>

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

@@ -39,6 +39,16 @@
                         <c:if test="${query.subjectCode eq subject.code }">selected</c:if>>${subject.code}-${subject.name}</option>
             </c:forEach>
         </select>
+        <c:if test="${query.objective}">
+        <label>卷型:</label>
+        <select class="input-large" id="type-select" name="paperType">
+            <option value="">请选择</option>
+            <c:forEach items="${typeList }" var="paperType">
+                <option value="${paperType}"
+                        <c:if test="${query.paperType eq paperType }">selected</c:if>>${paperType}</option>
+            </c:forEach>
+        </select>
+        </c:if>
         &nbsp;
         <input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>		
         &nbsp;
@@ -72,10 +82,10 @@
             <td>${question.mainNumber}</td>
             <td>${question.subNumber}</td>
             <td>${question.totalScore}</td>
-            <td>${question.avgScore}</td>
-            <td>${question.stdev}</td>
-            <td>${question.scoreRate}</td>
-            <td>${question.fullScoreRate}</td>
+            <td><fmt:formatNumber type="number" value="${question.avgScore}" pattern="0.00" maxFractionDigits="2"/></td>
+            <td><fmt:formatNumber type="number" value="${question.stdev}" pattern="0.00" maxFractionDigits="2"/></td>
+            <td><fmt:formatNumber type="number" value="${question.scoreRate}" pattern="0.00" maxFractionDigits="2"/></td>
+            <td><fmt:formatNumber type="number" value="${question.fullScoreRate}" pattern="0.00" maxFractionDigits="2"/></td>
 			<c:if test="${query.objective}">
             <td>${question.paperType}</td>
             </c:if>
@@ -86,6 +96,24 @@
 <script type="text/javascript">
 var objective = '${query.objective}';
 
+$('#subjectCode').change(function(){
+    var code = $(this).val();
+    $('#type-select').empty();
+    $('#type-select').append('<option value="">请选择</option>');
+    if(code==''){
+        $('#type-select').val('0').trigger('change');
+        return;
+    }
+    $.post('${ctx}/admin/exam/paper/getPaperType', {subjectCode: code}, function(result){
+        var parent = $('#type-select');
+        for(var i=0;i<result.length;i++){
+            var json = result[i];
+            var dom = $('<option value="'+json.paperType+'">'+json.paperType+'</option>').appendTo(parent);
+        }
+        parent.trigger('change');
+    });
+});
+
 $("#export-button").click(function(){
     if ($("#subjectCode").val() == null || $("#subjectCode").val() == '') {
         alert('请选择科目');

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

@@ -72,21 +72,21 @@
             </td>
             <td>${subject.level}</td>
             <td>${subject.count0_49}</td>
-            <td>${subject.percent0_49}</td>
+            <td><fmt:formatNumber type="number" value="${subject.percent0_49}" pattern="0.00" maxFractionDigits="2"/></td>
             <td>${subject.count50_59}</td>
-            <td>${subject.percent50_59}</td>
+            <td><fmt:formatNumber type="number" value="${subject.percent50_59}" pattern="0.00" maxFractionDigits="2"/></td>
             <td>${subject.count60_69}</td>
-            <td>${subject.percent60_69}</td>
+            <td><fmt:formatNumber type="number" value="${subject.percent60_69}" pattern="0.00" maxFractionDigits="2"/></td>
             <td>${subject.count70_79}</td>
-            <td>${subject.percent70_79}</td>
+            <td><fmt:formatNumber type="number" value="${subject.percent70_79}" pattern="0.00" maxFractionDigits="2"/></td>
             <td>${subject.count80_89}</td>
-            <td>${subject.percent80_89}</td>
+            <td><fmt:formatNumber type="number" value="${subject.percent80_89}" pattern="0.00" maxFractionDigits="2"/></td>
             <td>${subject.count90_100}</td>
-            <td>${subject.percent90_100}</td>
+            <td><fmt:formatNumber type="number" value="${subject.percent90_100}" pattern="0.00" maxFractionDigits="2"/></td>
             <td>${subject.lt60}</td>
-            <td>${subject.percent_lt60}</td>
+            <td><fmt:formatNumber type="number" value="${subject.percent_lt60}" pattern="0.00" maxFractionDigits="2"/></td>
             <td>${subject.mte60}</td>
-            <td>${subject.percent_mte60}</td>
+            <td><fmt:formatNumber type="number" value="${subject.percent_mte60}" pattern="0.00" maxFractionDigits="2"/></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>

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

@@ -77,10 +77,10 @@
             <td>${reportSubjectteacher.excellentCount}</td>
             <td>${reportSubjectteacher.maxScore}</td>
             <td>${reportSubjectteacher.minScore}</td>
-            <td>${reportSubjectteacher.passRate}</td>
-            <td>${reportSubjectteacher.excellentRate}</td>
-            <td>${reportSubjectteacher.avgScore}</td>
-            <td>${reportSubjectteacher.relativeAvgScore}</td>
+            <td><fmt:formatNumber type="number" value="${reportSubjectteacher.passRate}" pattern="0.00" maxFractionDigits="2"/></td>
+            <td><fmt:formatNumber type="number" value="${reportSubjectteacher.excellentRate}" pattern="0.00" maxFractionDigits="2"/></td>
+            <td><fmt:formatNumber type="number" value="${reportSubjectteacher.avgScore}" pattern="0.00" maxFractionDigits="2"/></td>
+            <td><fmt:formatNumber type="number" value="${reportSubjectteacher.relativeAvgScore}" pattern="0.00" maxFractionDigits="2"/></td>
         </tr>
     </c:forEach>
     </tbody>

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

@@ -19,6 +19,7 @@
     <li class="active"><a href="#">任课老师班级分析</a></li>
 </ul>
 <form id="searchForm" action="${ctx}/admin/exam/reportSubjectTeacher" method="post" class="breadcrumb form-search">
+		<input type="hidden" id="teacherName" name="teacherName" value="${query.teacherName }"/>
     &nbsp;&nbsp;科目:${subjectName}&nbsp;&nbsp;&nbsp;&nbsp;任课老师:${query.teacherName} &nbsp;&nbsp;
     <a href="#" class="btn btn-primary" onclick="viewTeacherClassEcharts()"/>查看统计图</a>
     &nbsp;
@@ -38,7 +39,7 @@
         <th>最低分</th>
         <th>及格率</th>
         <th>优秀率</th>
-        <th>平均</th>
+        <th>平均</th>
         <th>平均相对分</th>
     </tr>
     </thead>
@@ -51,10 +52,10 @@
             <td>${reportSubjectteacher.excellentCount}</td>
             <td>${reportSubjectteacher.maxScore}</td>
             <td>${reportSubjectteacher.minScore}</td>
-            <td>${reportSubjectteacher.passRate}</td>
-            <td>${reportSubjectteacher.excellentRate}</td>
-            <td>${reportSubjectteacher.avgScore}</td>
-            <td>${reportSubjectteacher.relativeAvgScore}</td>
+            <td><fmt:formatNumber type="number" value="${reportSubjectteacher.passRate}" pattern="0.00" maxFractionDigits="2"/></td>
+            <td><fmt:formatNumber type="number" value="${reportSubjectteacher.excellentRate}" pattern="0.00" maxFractionDigits="2"/></td>
+            <td><fmt:formatNumber type="number" value="${reportSubjectteacher.avgScore}" pattern="0.00" maxFractionDigits="2"/></td>
+            <td><fmt:formatNumber type="number" value="${reportSubjectteacher.relativeAvgScore}" pattern="0.00" maxFractionDigits="2"/></td>
         </tr>
     </c:forEach>
     </tbody>