diff --git a/WebRoot/WEB-INF/jsp/sunvote/paper/paper_list5.jsp b/WebRoot/WEB-INF/jsp/sunvote/paper/paper_list5.jsp index 8b682f9..be92301 100644 --- a/WebRoot/WEB-INF/jsp/sunvote/paper/paper_list5.jsp +++ b/WebRoot/WEB-INF/jsp/sunvote/paper/paper_list5.jsp @@ -57,15 +57,15 @@
- + - - + + @@ -84,15 +84,15 @@
序号
- + - - + + @@ -108,6 +108,7 @@ diff --git a/WebRoot/WEB-INF/jsp/sunvote/paper/test_list1.jsp b/WebRoot/WEB-INF/jsp/sunvote/paper/test_list1.jsp index 0690f37..70eaff7 100644 --- a/WebRoot/WEB-INF/jsp/sunvote/paper/test_list1.jsp +++ b/WebRoot/WEB-INF/jsp/sunvote/paper/test_list1.jsp @@ -179,6 +179,7 @@ 查看成绩 + diff --git a/WebRoot/WEB-INF/jsp/sunvote/paper/test_list3.jsp b/WebRoot/WEB-INF/jsp/sunvote/paper/test_list3.jsp new file mode 100644 index 0000000..b4f5d93 --- /dev/null +++ b/WebRoot/WEB-INF/jsp/sunvote/paper/test_list3.jsp @@ -0,0 +1,250 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> +<%@ taglib prefix="myelfun" uri="/WEB-INF/tld/elfun.tld"%> +<% + String path = request.getContextPath(); + String basePath = request.getScheme() + "://" + + request.getServerName() + ":" + request.getServerPort() + path + "/"; +%> + + + + + +教育管理系统 + + + + + + + + + + + + + + + + + + +
+
+
+

+ 试卷测验列表 +

+
+ +
+ + +
+ +
+
+ +
+
+
+ + ${pd.MB1=="nj"?"年级卷":"个人卷"} > 班级对比 > 答题分析 +
+
+
+   + 试卷名称:${pd.PAPER_NAME} +
+
  + 试卷总分:${pd.SCORE} + + + +
+
${var.SCORE} disabled style="pointer-events:none;color:#ccc" href="<%=basePath%>paper/paperRep.do?MB1=nj&paper_id=${var.PAPER_ID}">查看成绩 + 年级分析
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
学生姓名
班级
综合排名
个人平均得分
个人平均得分率
个人得分
测验平均分
测验时间
${var.STUDENT_NAME}${var.CLASS_NAME}${vs.index+1}%
${var1.SCORE } ${var1.AVG_SCORE } ${var1.CREATE_DATE }
没有相关数据
+ + + + +
+ + + +<%@ include file="../../system/index/foot2.jsp"%> + + + + + + \ No newline at end of file diff --git a/WebRoot/WEB-INF/jsp/sunvote/sclass/sclass_list2.jsp b/WebRoot/WEB-INF/jsp/sunvote/sclass/sclass_list2.jsp index e1cf121..ca366a9 100644 --- a/WebRoot/WEB-INF/jsp/sunvote/sclass/sclass_list2.jsp +++ b/WebRoot/WEB-INF/jsp/sunvote/sclass/sclass_list2.jsp @@ -86,7 +86,7 @@ ${vs.index+1} - ${var.CLASS_NAME} + ${var.CLASS_NAME} ${myelfun:findClassTypeName(var.CLASS_TYPE)} <%-- ${var.CLASS_CODE} --%> ${myelfun:findBasestationName(var.BASESTATION_ID)} diff --git a/WebRoot/WEB-INF/jsp/sunvote/student/student_edit2.jsp b/WebRoot/WEB-INF/jsp/sunvote/student/student_edit2.jsp index 62a7f20..d280cea 100644 --- a/WebRoot/WEB-INF/jsp/sunvote/student/student_edit2.jsp +++ b/WebRoot/WEB-INF/jsp/sunvote/student/student_edit2.jsp @@ -14,7 +14,7 @@ - +
- - + +
diff --git a/resources/mybatis1/sunvote/StudentMapper.xml b/resources/mybatis1/sunvote/StudentMapper.xml index 1025a13..ac9c257 100644 --- a/resources/mybatis1/sunvote/StudentMapper.xml +++ b/resources/mybatis1/sunvote/StudentMapper.xml @@ -89,13 +89,27 @@ diff --git a/src/com/fh/controller/base/BaseController.java b/src/com/fh/controller/base/BaseController.java index 4088066..022df6d 100644 --- a/src/com/fh/controller/base/BaseController.java +++ b/src/com/fh/controller/base/BaseController.java @@ -224,7 +224,7 @@ public class BaseController { */ public Integer indexOfStrInList(List list,String str){ for(int i = 0 ;i templist = new ArrayList(); + List temp = new ArrayList(); PageData saveData = new PageData(); ResponseGson res = new ResponseGson(); pd = this.getPageData(); if(pd.containsKey("PAPER_ID")){ + List list = studenttestService.findTestInfoByPid(pd); - List temp = new ArrayList(); + PageData paper = paperService.findById(pd); + if(paper!=null){ + pd.put("SCORE", paper.get("SCORE")); + pd.put("PAPER_NAME", paper.get("TITLE")); + } List sid = new ArrayList(); + Integer test_num = 0; + Integer lost_num = 0; for(PageData item : list){ Integer index = this.indexOfStrInList(sid, item.getString("STUDENT_ID")); if(index!=-1){ + test_num++; + List test_list = (List) temp.get(index).get("TEST_LIST"); + PageData test = new PageData(); + test.put("CREATE_DATE", item.get("CREATE_DATE")); + if(item.getString("LOST_TEST").isEmpty()){ + test.put("SCORE", item.get("SCORE")); + }else{ + test.put("SCORE", "--"); + temp.get(index).put("LOST_NUM", Integer.valueOf(temp.get(index).getString("LOST_NUM"))+1); + } + test.put("AVG_SCORE", item.get("AVG_SCORE")); + test_list.add(test); + Float total = Float.valueOf(temp.get(index).getString("STUDENT_TOTAL")); + temp.get(index).put("STUDENT_TOTAL",total+Float.valueOf(item.getString("SCORE"))); + temp.get(index).put("TEST_LIST", test_list); + temp.get(index).put("TEST_NUM", test_list.size()-Integer.valueOf(temp.get(index).getString("LOST_NUM"))); + }else{ + test_num=1; + lost_num=0; PageData stu = new PageData(); stu.put("STUDENT_NAME", item.get("STUDENT_NAME")); stu.put("CLASS_NAME", item.get("CLASS_NAME")); - List test = new ArrayList(); - test.get(0).put("CREAT_DATE", item.get("CREAT_DATE")); - test.get(0).put("SCORE", item.get("SCORE")); - test.get(0).put("AVG_SCORE", item.get("AVG_SCORE")); - stu.put("TEST_LIST", test); + List testList = new ArrayList(); + PageData test = new PageData(); + test.put("CREATE_DATE", item.get("CREATE_DATE")); + if(item.getString("LOST_TEST").isEmpty()){ + test.put("SCORE", item.get("SCORE")); + }else{ + test.put("SCORE", "--"); + lost_num++; + } + test.put("AVG_SCORE", item.get("AVG_SCORE")); + testList.add(test); + stu.put("STUDENT_TOTAL",item.get("SCORE")); + stu.put("TEST_LIST", testList); + stu.put("TEST_NUM", testList.size()-lost_num); + stu.put("LOST_NUM", lost_num); + sid.add(item.getString("STUDENT_ID")); temp.add(stu); } - } } + Collections.sort(temp,new Comparator(){ + + @Override + public int compare(PageData o1, PageData o2) { + Float o1GetScore = Float.valueOf(o1.getString("STUDENT_TOTAL"))/Float.valueOf(o1.getString("TEST_NUM")); + Float o2GetScore = Float.valueOf(o2.getString("STUDENT_TOTAL"))/Float.valueOf(o2.getString("TEST_NUM")); + return o2GetScore.compareTo(o1GetScore); + } + + }); mv.setViewName("sunvote/paper/test_list3"); - mv.addObject("varList", templist); + mv.addObject("varList", temp); mv.addObject("pd",pd); res.setData(saveData); return mv; } + @RequestMapping(value="/export3") + public ModelAndView export3() throws Exception{ + ModelAndView mv = this.getModelAndView(); + PageData pd = new PageData(); + List temp = new ArrayList(); + PageData saveData = new PageData(); + + ResponseGson res = new ResponseGson(); + pd = this.getPageData(); + if(pd.containsKey("PAPER_ID")){ + + List list = studenttestService.findTestInfoByPid(pd); + PageData paper = paperService.findById(pd); + if(paper!=null){ + pd.put("SCORE", paper.get("SCORE")); + pd.put("PAPER_NAME", paper.get("TITLE")); + } + List sid = new ArrayList(); + Integer test_num = 0; + Integer lost_num = 0; + for(PageData item : list){ + + Integer index = this.indexOfStrInList(sid, item.getString("STUDENT_ID")); + if(index!=-1){ + + test_num++; + List test_list = (List) temp.get(index).get("TEST_LIST"); + PageData test = new PageData(); + test.put("CREATE_DATE", item.get("CREATE_DATE")); + if(item.getString("LOST_TEST").isEmpty()){ + test.put("SCORE", item.get("SCORE")); + }else{ + test.put("SCORE", "--"); + temp.get(index).put("LOST_NUM", Integer.valueOf(temp.get(index).getString("LOST_NUM"))+1); + } + test.put("AVG_SCORE", item.get("AVG_SCORE")); + test_list.add(test); + Float total = Float.valueOf(temp.get(index).getString("STUDENT_TOTAL")); + temp.get(index).put("STUDENT_TOTAL",total+Float.valueOf(item.getString("SCORE"))); + temp.get(index).put("TEST_LIST", test_list); + temp.get(index).put("TEST_NUM", test_list.size()-Integer.valueOf(temp.get(index).getString("LOST_NUM"))); + + }else{ + test_num=1; + lost_num=0; + PageData stu = new PageData(); + stu.put("STUDENT_NAME", item.get("STUDENT_NAME")); + stu.put("CLASS_NAME", item.get("CLASS_NAME")); + List testList = new ArrayList(); + PageData test = new PageData(); + test.put("CREATE_DATE", item.get("CREATE_DATE")); + if(item.getString("LOST_TEST").isEmpty()){ + test.put("SCORE", item.get("SCORE")); + }else{ + test.put("SCORE", "--"); + lost_num++; + } + test.put("AVG_SCORE", item.get("AVG_SCORE")); + testList.add(test); + stu.put("STUDENT_TOTAL",item.get("SCORE")); + stu.put("TEST_LIST", testList); + stu.put("TEST_NUM", testList.size()-lost_num); + stu.put("LOST_NUM", lost_num); + sid.add(item.getString("STUDENT_ID")); + temp.add(stu); + } + + } + } + Collections.sort(temp,new Comparator(){ + + @Override + public int compare(PageData o1, PageData o2) { + Float o1GetScore = Float.valueOf(o1.getString("STUDENT_TOTAL"))/Float.valueOf(o1.getString("TEST_NUM")); + Float o2GetScore = Float.valueOf(o2.getString("STUDENT_TOTAL"))/Float.valueOf(o2.getString("TEST_NUM")); + return o2GetScore.compareTo(o1GetScore); + } + + }); + + mv.addObject("varList", temp); + mv.addObject("pd",pd); + + Map dataMap = new HashMap(); + List titles = new ArrayList(); + titles.add("学生姓名"); //1 + titles.add("班级"); //2 + titles.add("综合排名"); //3 + titles.add("个人平均得分"); //4 + titles.add("个人平均得分率"); //5 + titles.add("个人得分"); //6 + titles.add("测验平均分"); //7 + titles.add("测验时间"); //8 + + dataMap.put("titles", titles); + List varOList = temp; + List varList = new ArrayList(); + DecimalFormat decimalFormat=new DecimalFormat("0.00"); + for(int i=0;i test_list = (List)varOList.get(i).get("TEST_LIST"); + + List score = new ArrayList(); + List AVG_SCORE = new ArrayList(); + List CREATE_DATE = new ArrayList(); + for(int x=0;x lnum = studentService.findByNumberAndKeyPadId(savePd); if(lnum.size()<1){ diff --git a/src/com/fh/service/sunvote/studenttest/impl/StudentTestService.java b/src/com/fh/service/sunvote/studenttest/impl/StudentTestService.java index dd6ff81..01540b0 100644 --- a/src/com/fh/service/sunvote/studenttest/impl/StudentTestService.java +++ b/src/com/fh/service/sunvote/studenttest/impl/StudentTestService.java @@ -78,7 +78,7 @@ public class StudentTestService implements StudentTestManager{ * @throws Exception */ public List findTestInfoByPid(PageData pd)throws Exception{ - return (List)dao.findForObject("StudentTestMapper.findTestInfoByPid", pd); + return (List)dao.findForList("StudentTestMapper.findTestInfoByPid", pd); } /**批量删除 diff --git a/src/com/fh/util/ObjectExcelView2.java b/src/com/fh/util/ObjectExcelView2.java new file mode 100644 index 0000000..aa6d994 --- /dev/null +++ b/src/com/fh/util/ObjectExcelView2.java @@ -0,0 +1,97 @@ +package com.fh.util; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.poi.hssf.usermodel.HSSFCell; +import org.apache.poi.hssf.usermodel.HSSFCellStyle; +import org.apache.poi.hssf.usermodel.HSSFFont; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.hssf.util.CellRangeAddress; +import org.springframework.web.servlet.view.document.AbstractExcelView; + +import com.fh.util.PageData; +import com.fh.util.Tools; +public class ObjectExcelView2 extends AbstractExcelView{ + + @Override + protected void buildExcelDocument(Map model, + HSSFWorkbook workbook, HttpServletRequest request, + HttpServletResponse response) throws Exception { + // TODO Auto-generated method stub + Date date = new Date(); + String filename = Tools.date2Str(date, "yyyyMMddHHmmss"); + HSSFSheet sheet; + HSSFCell cell; + response.setContentType("application/octet-stream"); + response.setHeader("Content-Disposition", "attachment;filename="+filename+".xls"); + if(model.get("class")!=null && !model.get("class").toString().isEmpty()){ + sheet = workbook.createSheet(model.get("class").toString()); + }else{ + sheet = workbook.createSheet("sheet1"); + } + + + List titles = (List) model.get("titles"); + int len = titles.size(); + HSSFCellStyle headerStyle = workbook.createCellStyle(); //标题样式 + headerStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); + headerStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); + HSSFFont headerFont = workbook.createFont(); //标题字体 + headerFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); + headerFont.setFontHeightInPoints((short)11); + headerStyle.setFont(headerFont); + short width = 20,height=25*20; + sheet.setDefaultColumnWidth(width); + for(int i=0; i varList = (List) model.get("varList"); + int varCount = varList.size(); + for(int i=0; i score = (List)vpd.get("var6"); + if(score.size()>0){ + CellRangeAddress region = new CellRangeAddress(i*score.size()+1, i*score.size()+score.size(), j, j); + sheet.addMergedRegion(region); + } + + String varstr = vpd.getString("var"+(j+1)) != null ? vpd.getString("var"+(j+1)) : ""; + cell = getCell(sheet, i*score.size()+1, j); + cell.setCellStyle(contentStyle); + setText(cell,varstr); + }else{ + List score = (List)vpd.get("var6"); + for(int x=0;x