浏览代码

优化成绩分析的分段统计中,加入:计划人数、实考数、0~60分人数及比率、≥60分人数及比率

nikang 7 年之前
父节点
当前提交
fac41c9830

+ 16 - 12
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/ExamStudentDao.java

@@ -68,22 +68,26 @@ public interface ExamStudentDao
     public ExamStudent findBySchoolIdAndSubjectCodeAndStudentCodeAndRemark(Integer schoolId, String subjectCode,
     public ExamStudent findBySchoolIdAndSubjectCodeAndStudentCodeAndRemark(Integer schoolId, String subjectCode,
             String studentCode, String examSeqCode);
             String studentCode, String examSeqCode);
 
 
-    @Query("select sum(case when (s.objectiveScore + s.subjectiveScore) between 0 and 49 then 1 else 0 end),"
-    		+ "sum(case when (s.objectiveScore + s.subjectiveScore) between 50 and 59 then 1 else 0 end) ,"
-    		+ "sum(case when (s.objectiveScore + s.subjectiveScore) between 60 and 69 then 1 else 0 end) ,"
-    		+ "sum(case when (s.objectiveScore + s.subjectiveScore) between 70 and 79 then 1 else 0 end) ,"
-    		+ "sum(case when (s.objectiveScore + s.subjectiveScore) between 80 and 89 then 1 else 0 end) ,"
-    		+ "sum(case when (s.objectiveScore + s.subjectiveScore) between 90 and 100 then 1 else 0 end) "
+    @Query("select sum(case when (s.objectiveScore + s.subjectiveScore) between 0 and 49.5 then 1 else 0 end),"
+    		+ "sum(case when (s.objectiveScore + s.subjectiveScore) between 50 and 59.5 then 1 else 0 end) ,"
+    		+ "sum(case when (s.objectiveScore + s.subjectiveScore) between 60 and 69.5 then 1 else 0 end) ,"
+    		+ "sum(case when (s.objectiveScore + s.subjectiveScore) between 70 and 79.5 then 1 else 0 end) ,"
+    		+ "sum(case when (s.objectiveScore + s.subjectiveScore) between 80 and 89.5 then 1 else 0 end) ,"
+    		+ "sum(case when (s.objectiveScore + s.subjectiveScore) between 90 and 100 then 1 else 0 end),"
+            + "sum(case when (s.objectiveScore + s.subjectiveScore) between 0 and 59.5 then 1 else 0 end), "
+            + "sum(case when (s.objectiveScore + s.subjectiveScore) between 60 and 100 then 1 else 0 end) "
     		+ " from ExamStudent s where s.examId=?1 and s.subjectCode=?2 and s.upload=?3  and s.absent=?4 ")
     		+ " from ExamStudent s where s.examId=?1 and s.subjectCode=?2 and s.upload=?3  and s.absent=?4 ")
 	public List<Object[]> statisticsByExamIdAndSubjectCode(Integer examId,
 	public List<Object[]> statisticsByExamIdAndSubjectCode(Integer examId,
 			String code, Boolean upload, boolean absent);
 			String code, Boolean upload, boolean absent);
 
 
-    @Query("select sum(case when (s.objectiveScore + s.subjectiveScore) between 0 and 49 then 1 else 0 end),"
-    		+ "sum(case when (s.objectiveScore + s.subjectiveScore) between 50 and 59 then 1 else 0 end) ,"
-    		+ "sum(case when (s.objectiveScore + s.subjectiveScore) between 60 and 69 then 1 else 0 end) ,"
-    		+ "sum(case when (s.objectiveScore + s.subjectiveScore) between 70 and 79 then 1 else 0 end) ,"
-    		+ "sum(case when (s.objectiveScore + s.subjectiveScore) between 80 and 89 then 1 else 0 end) ,"
-    		+ "sum(case when (s.objectiveScore + s.subjectiveScore) between 90 and 100 then 1 else 0 end) "
+    @Query("select sum(case when (s.objectiveScore + s.subjectiveScore) between 0 and 49.5 then 1 else 0 end),"
+    		+ "sum(case when (s.objectiveScore + s.subjectiveScore) between 50 and 59.5 then 1 else 0 end) ,"
+    		+ "sum(case when (s.objectiveScore + s.subjectiveScore) between 60 and 69.5 then 1 else 0 end) ,"
+    		+ "sum(case when (s.objectiveScore + s.subjectiveScore) between 70 and 79.5 then 1 else 0 end) ,"
+    		+ "sum(case when (s.objectiveScore + s.subjectiveScore) between 80 and 89.5 then 1 else 0 end) ,"
+    		+ "sum(case when (s.objectiveScore + s.subjectiveScore) between 90 and 100 then 1 else 0 end), "
+            + "sum(case when (s.objectiveScore + s.subjectiveScore) between 0 and 59.5 then 1 else 0 end), "
+            + "sum(case when (s.objectiveScore + s.subjectiveScore) between 60 and 100 then 1 else 0 end) "
     		+ " from ExamStudent s where s.examId=?1 and s.subjectCode=?2 ")
     		+ " from ExamStudent s where s.examId=?1 and s.subjectCode=?2 ")
 	public List<Object[]> statisticsByExamIdAndSubjectCode(Integer examId,
 	public List<Object[]> statisticsByExamIdAndSubjectCode(Integer examId,
 			String code);
 			String code);

+ 4 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/StatisticsController.java

@@ -80,6 +80,8 @@ public class StatisticsController extends BaseParameterController {
 		vo.setCount70_79((long) (list.get(0)[3]==null?0L:list.get(0)[3]));
 		vo.setCount70_79((long) (list.get(0)[3]==null?0L:list.get(0)[3]));
 		vo.setCount80_89((long) (list.get(0)[4]==null?0L:list.get(0)[4]));
 		vo.setCount80_89((long) (list.get(0)[4]==null?0L:list.get(0)[4]));
 		vo.setCount90_100((long) (list.get(0)[5]==null?0L:list.get(0)[5]));
 		vo.setCount90_100((long) (list.get(0)[5]==null?0L:list.get(0)[5]));
+		vo.setCount0_60((long) (list.get(0)[6]==null?0L:list.get(0)[6]));
+		vo.setCount60_100((long) (list.get(0)[7]==null?0L:list.get(0)[7]));
 		if(vo.getStudentCount()!=0){
 		if(vo.getStudentCount()!=0){
 			vo.setPercent0_49(new BigDecimal(vo.getCount0_49()*100.0/vo.getStudentCount()).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue());
 			vo.setPercent0_49(new BigDecimal(vo.getCount0_49()*100.0/vo.getStudentCount()).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue());
 			vo.setPercent50_59(new BigDecimal(vo.getCount50_59()*100.0/vo.getStudentCount()).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue());
 			vo.setPercent50_59(new BigDecimal(vo.getCount50_59()*100.0/vo.getStudentCount()).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue());
@@ -87,6 +89,8 @@ public class StatisticsController extends BaseParameterController {
 			vo.setPercent70_79(new BigDecimal(vo.getCount70_79()*100.0/vo.getStudentCount()).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue());
 			vo.setPercent70_79(new BigDecimal(vo.getCount70_79()*100.0/vo.getStudentCount()).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue());
 			vo.setPercent80_89(new BigDecimal(vo.getCount80_89()*100.0/vo.getStudentCount()).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue());
 			vo.setPercent80_89(new BigDecimal(vo.getCount80_89()*100.0/vo.getStudentCount()).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue());
 			vo.setPercent90_100(new BigDecimal(vo.getCount90_100()*100.0/vo.getStudentCount()).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue());
 			vo.setPercent90_100(new BigDecimal(vo.getCount90_100()*100.0/vo.getStudentCount()).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue());
+			vo.setPercent0_60(new BigDecimal(vo.getCount0_60()*100.0/vo.getStudentCount()).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue());
+			vo.setPercent60_100(new BigDecimal(vo.getCount60_100()*100.0/vo.getStudentCount()).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue());
 		}
 		}
 		return vo;
 		return vo;
 	}
 	}

+ 45 - 2
stmms-web/src/main/java/cn/com/qmth/stmms/admin/vo/StatisticsVO.java

@@ -60,8 +60,20 @@ public class StatisticsVO implements Serializable {
 	@ExcelField(title = "90-100占比(%)", align = 2, sort = 150)
 	@ExcelField(title = "90-100占比(%)", align = 2, sort = 150)
 	private double percent90_100;
 	private double percent90_100;
 	
 	
-	@ExcelField(title = "总数", align = 2, sort = 160)
-	private long studentCount;
+	@ExcelField(title = "0-60",align = 2,sort = 160)
+	private long count0_60;
+
+	@ExcelField(title = "0-60占比(%)", align = 2, sort = 170)
+	private double percent0_60;
+
+	@ExcelField(title = "60_100",align = 2,sort = 180)
+	private long count60_100;
+
+	@ExcelField(title = "60_100占比(%)", align = 2, sort = 190)
+	private double percent60_100;
+
+    @ExcelField(title = "总数", align = 2, sort = 200)
+    private long studentCount;
 
 
 	public StatisticsVO() {
 	public StatisticsVO() {
 	}
 	}
@@ -227,4 +239,35 @@ public class StatisticsVO implements Serializable {
 		this.studentCount = studentCount;
 		this.studentCount = studentCount;
 	}
 	}
 
 
+  public long getCount0_60() {
+    return count0_60;
+  }
+
+  public void setCount0_60(long count0_60) {
+    this.count0_60 = count0_60;
+  }
+
+  public double getPercent0_60() {
+    return percent0_60;
+  }
+
+  public void setPercent0_60(double percent0_60) {
+    this.percent0_60 = percent0_60;
+  }
+
+  public long getCount60_100() {
+    return count60_100;
+  }
+
+  public void setCount60_100(long count60_100) {
+    this.count60_100 = count60_100;
+  }
+
+  public double getPercent60_100() {
+    return percent60_100;
+  }
+
+  public void setPercent60_100(double percent60_100) {
+    this.percent60_100 = percent60_100;
+  }
 }
 }

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

@@ -70,6 +70,10 @@
 				<th>80-89占比</th>
 				<th>80-89占比</th>
 				<th>90-100</th>
 				<th>90-100</th>
 				<th>90-100占比</th>
 				<th>90-100占比</th>
+				<th>&lt;60</th>
+				<th>&lt;60占比</th>
+				<th>&ge;60</th>
+				<th>&ge;60占比</th>
 				<th>总数</th>
 				<th>总数</th>
 			</tr>
 			</tr>
 		</thead>
 		</thead>
@@ -93,6 +97,10 @@
 				<td>${subject.percent80_89}%</td>
 				<td>${subject.percent80_89}%</td>
 				<td>${subject.count90_100}</td>
 				<td>${subject.count90_100}</td>
 				<td>${subject.percent90_100}%</td>
 				<td>${subject.percent90_100}%</td>
+				<td>${subject.count0_60}</td>
+				<td>${subject.percent0_60}%</td>
+				<td>${subject.count60_100}</td>
+				<td>${subject.percent60_100}%</td>
 				<td>${subject.studentCount}</td>
 				<td>${subject.studentCount}</td>
 			</tr>
 			</tr>
 		</c:forEach>
 		</c:forEach>