Commit e9f47f909e29b1ed90a04a0d34523f36011bdf53
1 parent
96009ee8
优化个人成绩报表
Showing
7 changed files
with
116 additions
and
112 deletions
WebRoot/WEB-INF/jsp/sunvote/teacher/stduent_report.jsp
| @@ -117,7 +117,7 @@ li { | @@ -117,7 +117,7 @@ li { | ||
| 117 | <script type=""> | 117 | <script type=""> |
| 118 | var URL = '<%=basePath%>${URL}'; | 118 | var URL = '<%=basePath%>${URL}'; |
| 119 | </script> | 119 | </script> |
| 120 | - <script src="../static/js/control1.js?a=4"></script> | 120 | + <script src="../static/js/control1.js?a=1"></script> |
| 121 | <!-- 日期框 --> | 121 | <!-- 日期框 --> |
| 122 | <script> | 122 | <script> |
| 123 | //lay('#version').html('-v'+ laydate.v); | 123 | //lay('#version').html('-v'+ laydate.v); |
WebRoot/WEB-INF/jsp/sunvote/teacher/teacher_report_1.jsp
| @@ -118,7 +118,7 @@ | @@ -118,7 +118,7 @@ | ||
| 118 | href="report/student_report?studentid=${var.ID}&class_id=${info.CLASS_ID}">${var.NAME}</a> | 118 | href="report/student_report?studentid=${var.ID}&class_id=${info.CLASS_ID}">${var.NAME}</a> |
| 119 | </td> --%> | 119 | </td> --%> |
| 120 | <td class="center"><div style="width:150px;cursor:hand"><a | 120 | <td class="center"><div style="width:150px;cursor:hand"><a |
| 121 | - onclick="student('${info.CLASS_ID}','${var.ID}')">${var.NAME}</a></div> | 121 | + onclick="student('${info.CLASS_ID}','${var.STUDENT_ID}')">${var.NAME}</a></div> |
| 122 | </td> | 122 | </td> |
| 123 | <td class="center"><div style="width:150px;"><fmt:formatNumber type="number" | 123 | <td class="center"><div style="width:150px;"><fmt:formatNumber type="number" |
| 124 | value="${var.TOTALSCORE == 0 ? 0: (var.GETSCORE / var.TOTALSCORE * 100)}" | 124 | value="${var.TOTALSCORE == 0 ? 0: (var.GETSCORE / var.TOTALSCORE * 100)}" |
WebRoot/static/js/control1.js
| @@ -96,11 +96,11 @@ | @@ -96,11 +96,11 @@ | ||
| 96 | function dataMethod(index,data){ | 96 | function dataMethod(index,data){ |
| 97 | console.log(data); | 97 | console.log(data); |
| 98 | //data0=[];data1=[];data2=[];data3=[]; | 98 | //data0=[];data1=[];data2=[];data3=[]; |
| 99 | - var GETSCORE = parseInt(data.data.studentList[index].GETSCORE); | ||
| 100 | - var TOTALSCORE = parseInt(data.data.TOTAL_SCORE); | 99 | + var GETSCORE = parseFloat(data.data.studentList[index].GETSCORE); |
| 100 | + var TOTALSCORE = parseFloat(data.data.TOTAL_SCORE); | ||
| 101 | var ratio=(GETSCORE/TOTALSCORE*100).toFixed(2); | 101 | var ratio=(GETSCORE/TOTALSCORE*100).toFixed(2); |
| 102 | - var class_avg= (parseInt(data.data.AVG_SCORE)/ parseInt(data.data.TOTAL_SCORE)*100).toFixed(2); | ||
| 103 | - var class_max=(parseInt(data.data.MAX_SCORE)/ parseInt(data.data.TOTAL_SCORE)*100).toFixed(2); | 102 | + var class_avg= (parseFloat(data.data.AVG_SCORE)/ parseFloat(data.data.TOTAL_SCORE)*100).toFixed(2); |
| 103 | + var class_max=(parseFloat(data.data.MAX_SCORE)/ parseFloat(data.data.TOTAL_SCORE)*100).toFixed(2); | ||
| 104 | 104 | ||
| 105 | var test_num=data.data.studentList[index].testList.length; | 105 | var test_num=data.data.studentList[index].testList.length; |
| 106 | var part_num=test_num; | 106 | var part_num=test_num; |
resources/mybatis1/sunvote/StudentTestMapper.xml
| @@ -164,6 +164,47 @@ | @@ -164,6 +164,47 @@ | ||
| 164 | 164 | ||
| 165 | </select> | 165 | </select> |
| 166 | 166 | ||
| 167 | + | ||
| 168 | + <select id="reportClassListData" parameterType="pd" resultType="pd"> | ||
| 169 | + SELECT | ||
| 170 | + sv_student.ID, | ||
| 171 | + sv_student.`NAME` AS NAME, | ||
| 172 | + sv_testpaper.`NAME` AS TNAME, | ||
| 173 | + sv_studenttest.SCORE AS SCORE, | ||
| 174 | + sv_testpaper.TOTAL_SCORE AS TOTAL_SCORE, | ||
| 175 | + sv_testpaper.CREATE_DATE, | ||
| 176 | + sv_testpaper.AVG_SCORE AS AVG_SCORE, | ||
| 177 | + sv_testpaper.HIGHT_SCORE AS MAX_SCORE | ||
| 178 | + FROM | ||
| 179 | + sv_student | ||
| 180 | + LEFT JOIN sv_studenttest ON sv_student.ID = sv_studenttest.STUDENT_ID | ||
| 181 | + LEFT JOIN sv_testpaper ON sv_testpaper.TESTPAPER_ID = sv_studenttest.TEST_ID | ||
| 182 | + WHERE 1 = 1 | ||
| 183 | + <if test="CLASS_ID != null and CLASS_ID != ''"> | ||
| 184 | + AND sv_student.CLASS_ID = #{CLASS_ID} | ||
| 185 | + AND sv_testpaper.SCLASS_ID = #{CLASS_ID} | ||
| 186 | + </if> | ||
| 187 | + AND sv_testpaper.`NAME` IS NOT NULL | ||
| 188 | + <if test="TEACHER_ID != null and TEACHER_ID != ''"> | ||
| 189 | + and sv_testpaper.TEACHER_ID = #{TEACHER_ID} | ||
| 190 | + </if> | ||
| 191 | + <if test="TEST_TYPE != null and TEST_TYPE != ''"> | ||
| 192 | + and sv_testpaper.TEST_TYPE = #{TEST_TYPE} | ||
| 193 | + </if> | ||
| 194 | + <if test="START_DATE != null and START_DATE != ''"><!-- 关键词检索 --> | ||
| 195 | + and (CREATE_DATE > #{START_DATE}) | ||
| 196 | + </if> | ||
| 197 | + <if test="END_DATE != null and END_DATE != ''"><!-- 关键词检索 --> | ||
| 198 | + and (CREATE_DATE < #{END_DATE}) | ||
| 199 | + </if> | ||
| 200 | + <if test="SUBJECT_ID != null and SUBJECT_ID != ''"><!-- 关键词检索 --> | ||
| 201 | + and (sv_testpaper.SUBJECT_ID = #{SUBJECT_ID}) | ||
| 202 | + </if> | ||
| 203 | + ORDER BY | ||
| 204 | + sv_student.NUMBER, | ||
| 205 | + sv_testpaper.CREATE_DATE | ||
| 206 | + </select> | ||
| 207 | + | ||
| 167 | <select id="reportListDataCalc" parameterType="pd" resultType="pd"> | 208 | <select id="reportListDataCalc" parameterType="pd" resultType="pd"> |
| 168 | 209 | ||
| 169 | SELECT | 210 | SELECT |
src/com/fh/controller/sunvote/report/ReportController.java
| @@ -94,13 +94,8 @@ public class ReportController extends BaseController { | @@ -94,13 +94,8 @@ public class ReportController extends BaseController { | ||
| 94 | info.put("CLASS_CODE", classPageData.getString("CLASS_CODE")); | 94 | info.put("CLASS_CODE", classPageData.getString("CLASS_CODE")); |
| 95 | info.put("CLASS_ID", classPageData.getString("ID")); | 95 | info.put("CLASS_ID", classPageData.getString("ID")); |
| 96 | pd.put("CLASS_ID", pd.get("CLASSID")); | 96 | pd.put("CLASS_ID", pd.get("CLASSID")); |
| 97 | - | ||
| 98 | // 2查询班级考试 | 97 | // 2查询班级考试 |
| 99 | pd.put("TEST_TYPE", "1"); | 98 | pd.put("TEST_TYPE", "1"); |
| 100 | -// List<PageData> testpaperList = testpaperService.listAll(pd); | ||
| 101 | -// mv.addObject("testpaperList", testpaperList); | ||
| 102 | -// info.put("testsize", testpaperList != null ? testpaperList.size() : 0); | ||
| 103 | - | ||
| 104 | // modify 根據班級查詢班級報表 | 99 | // modify 根據班級查詢班級報表 |
| 105 | List<PageData> reportData = v1Service.classReport(pd); | 100 | List<PageData> reportData = v1Service.classReport(pd); |
| 106 | List<PageData> testpaperList = new ArrayList(); | 101 | List<PageData> testpaperList = new ArrayList(); |
| @@ -199,48 +194,6 @@ public class ReportController extends BaseController { | @@ -199,48 +194,6 @@ public class ReportController extends BaseController { | ||
| 199 | mv.addObject("testpaperList", testpaperList); | 194 | mv.addObject("testpaperList", testpaperList); |
| 200 | info.put("testsize", testpaperList != null ? testpaperList.size() : 0); | 195 | info.put("testsize", testpaperList != null ? testpaperList.size() : 0); |
| 201 | 196 | ||
| 202 | - /* | ||
| 203 | - List<PageData> studentList = studentService.listAllClass(pd); | ||
| 204 | - // 查询学生名单及人数 | ||
| 205 | - if(studentList != null && studentList.size() > 0){ | ||
| 206 | - for(PageData studentPageData : studentList){ | ||
| 207 | - studentPageData.put("STUDENT_ID", studentPageData.getString("ID")); | ||
| 208 | - List<PageData> studentTestList = studenttestService.listAll(studentPageData); | ||
| 209 | - for(PageData studentTestPageData :studentTestList){ | ||
| 210 | - String score = studentTestPageData.getString("SCORE"); | ||
| 211 | - if(!"0".equals(score)){ | ||
| 212 | - studentPageData.put(studentTestPageData.getString("TEST_ID"), studentTestPageData.getString("SCORE")); | ||
| 213 | - }else{ | ||
| 214 | - studentPageData.put(studentTestPageData.getString("TEST_ID"), "--"); | ||
| 215 | - } | ||
| 216 | - } | ||
| 217 | - int totalScore = 0 ; | ||
| 218 | - int getScore = 0 ; | ||
| 219 | - for(PageData testPaperPageData:testpaperList){ | ||
| 220 | - String totalScoreStr = testPaperPageData.getString("TOTAL_SCORE"); | ||
| 221 | - if(totalScoreStr != null){ | ||
| 222 | - try{ | ||
| 223 | - totalScore += Integer.parseInt(totalScoreStr); | ||
| 224 | - }catch(Exception ex){ | ||
| 225 | - logger.info(ex); | ||
| 226 | - } | ||
| 227 | - } | ||
| 228 | - String getScoreStr = studentPageData.getString(testPaperPageData.getString("TESTPAPER_ID")); | ||
| 229 | - if(getScoreStr != null){ | ||
| 230 | - try{ | ||
| 231 | - getScore += Integer.parseInt(getScoreStr); | ||
| 232 | - }catch(Exception ex){ | ||
| 233 | - logger.info(ex); | ||
| 234 | - } | ||
| 235 | - } | ||
| 236 | - } | ||
| 237 | - studentPageData.put("TOTALSCORE", totalScore); | ||
| 238 | - studentPageData.put("GETSCORE", getScore); | ||
| 239 | - | ||
| 240 | - } | ||
| 241 | - }*/ | ||
| 242 | - // 课程平均得分率 | ||
| 243 | - // 课程总分 | ||
| 244 | mv.addObject("studentList", studentList); | 197 | mv.addObject("studentList", studentList); |
| 245 | info.put("STUDENT_NUM", studentList != null ? studentList.size() : 0); | 198 | info.put("STUDENT_NUM", studentList != null ? studentList.size() : 0); |
| 246 | mv.addObject("info", info); | 199 | mv.addObject("info", info); |
| @@ -294,17 +247,72 @@ public class ReportController extends BaseController { | @@ -294,17 +247,72 @@ public class ReportController extends BaseController { | ||
| 294 | logBefore(logger, Jurisdiction.getUsername()+"学生报表数据"); | 247 | logBefore(logger, Jurisdiction.getUsername()+"学生报表数据"); |
| 295 | PageData pd = getPageData(); | 248 | PageData pd = getPageData(); |
| 296 | ResponseGson<PageData> ret = new ResponseGson(); | 249 | ResponseGson<PageData> ret = new ResponseGson(); |
| 297 | -// pd.put("CLASS_ID", pd.get("CLASSID")); | ||
| 298 | - List<PageData> studentList = studentService.listAllClass(pd); | ||
| 299 | if ("teacher".equals(getRole())) { | 250 | if ("teacher".equals(getRole())) { |
| 300 | pd.put("TEACHER_ID", getUserID()); | 251 | pd.put("TEACHER_ID", getUserID()); |
| 301 | } | 252 | } |
| 302 | - List<PageData> testpaperList = testpaperService.listAll(pd); | 253 | + pd.put("TEST_TYPE", "1"); |
| 254 | + List<PageData> dataList = studenttestService.reportClassListData(pd); | ||
| 255 | + List<PageData> studentList = new ArrayList(); | ||
| 256 | + List<PageData> studentTestList = new ArrayList(); | ||
| 257 | + PageData studentPd = null; | ||
| 258 | + float getScore = 0f ; | ||
| 259 | + float allGetScore = 0; | ||
| 260 | + float maxScore = 0 ; | ||
| 261 | + for(PageData tmp : dataList){ | ||
| 262 | + if(studentPd != null && tmp.get("ID").equals(studentPd.get("ID"))){ | ||
| 263 | + String getScoreStr = tmp.getString("SCORE"); | ||
| 264 | + float score = 0 ; | ||
| 265 | + if(getScoreStr != null){ | ||
| 266 | + try{ | ||
| 267 | + score = Float.parseFloat(getScoreStr); | ||
| 268 | + }catch(Exception ex){ | ||
| 269 | + logger.info(ex); | ||
| 270 | + } | ||
| 271 | + } | ||
| 272 | + getScore += score; | ||
| 273 | + allGetScore += score; | ||
| 274 | + tmp.put("NAME", tmp.get("TNAME")); | ||
| 275 | + studentTestList.add(tmp); | ||
| 276 | + }else{ | ||
| 277 | + if(studentPd != null){ | ||
| 278 | + if(getScore > maxScore){ | ||
| 279 | + maxScore = getScore ; | ||
| 280 | + } | ||
| 281 | + studentPd.put("GETSCORE", getScore); | ||
| 282 | + studentPd.put("testList", studentTestList); | ||
| 283 | + studentList.add(studentPd); | ||
| 284 | + } | ||
| 285 | + studentPd = new PageData(); | ||
| 286 | + studentTestList = new ArrayList(); | ||
| 287 | + getScore = 0 ; | ||
| 288 | + String getScoreStr = tmp.getString("SCORE"); | ||
| 289 | + float score = 0 ; | ||
| 290 | + if(getScoreStr != null){ | ||
| 291 | + try{ | ||
| 292 | + score = Float.parseFloat(getScoreStr); | ||
| 293 | + }catch(Exception ex){ | ||
| 294 | + logger.info(ex); | ||
| 295 | + } | ||
| 296 | + } | ||
| 297 | + getScore += score; | ||
| 298 | + allGetScore += score; | ||
| 299 | + studentPd.put("NAME", tmp.get("NAME")); | ||
| 300 | + studentPd.put("ID", tmp.get("ID")); | ||
| 301 | + tmp.put("NAME", tmp.get("TNAME")); | ||
| 302 | + studentTestList.add(tmp); | ||
| 303 | + | ||
| 304 | + } | ||
| 305 | + } | ||
| 306 | + if(studentPd != null){ | ||
| 307 | + studentPd.put("GETSCORE", getScore); | ||
| 308 | + studentPd.put("testList", studentTestList); | ||
| 309 | + studentList.add(studentPd); | ||
| 310 | + } | ||
| 303 | pd.put("ID", pd.get("CLASS_ID")); | 311 | pd.put("ID", pd.get("CLASS_ID")); |
| 304 | PageData classPageData = sclassService.findById(pd); | 312 | PageData classPageData = sclassService.findById(pd); |
| 305 | float totalScore = 0 ; | 313 | float totalScore = 0 ; |
| 306 | float avgScore = 0; | 314 | float avgScore = 0; |
| 307 | - for(PageData testPaperPageData:testpaperList){ | 315 | + for(PageData testPaperPageData:studentTestList){ |
| 308 | String totalScoreStr = testPaperPageData.getString("TOTAL_SCORE"); | 316 | String totalScoreStr = testPaperPageData.getString("TOTAL_SCORE"); |
| 309 | if(totalScoreStr != null){ | 317 | if(totalScoreStr != null){ |
| 310 | try{ | 318 | try{ |
| @@ -323,61 +331,7 @@ public class ReportController extends BaseController { | @@ -323,61 +331,7 @@ public class ReportController extends BaseController { | ||
| 323 | } | 331 | } |
| 324 | 332 | ||
| 325 | } | 333 | } |
| 326 | - float allGetScore = 0; | ||
| 327 | - float maxScore = 0 ; | ||
| 328 | - // 查询学生名单及人数 | ||
| 329 | - if(studentList != null && studentList.size() > 0){ | ||
| 330 | - for(PageData studentPageData : studentList){ | ||
| 331 | - PageData search = new PageData(); | ||
| 332 | - search.put("STUDENT_ID", studentPageData.getString("ID")); | ||
| 333 | - if(pd.containsKey("START_DATE")){ | ||
| 334 | - search.put("START_DATE", pd.getString("START_DATE")); | ||
| 335 | - } | ||
| 336 | - if(pd.containsKey("END_DATE")){ | ||
| 337 | - search.put("END_DATE", pd.getString("END_DATE")); | ||
| 338 | - } | ||
| 339 | - if("teacher".equals(getRole())){ | ||
| 340 | - search.put("TEACHER_ID", getUserID()); | ||
| 341 | - } | ||
| 342 | - if(pd.containsKey("SUBJECT_ID")){ | ||
| 343 | - search.put("SUBJECT_ID", pd.getString("SUBJECT_ID")); | ||
| 344 | - } | ||
| 345 | - List<PageData> studentTestList = studenttestService.reportListData(search); | ||
| 346 | - studentPageData.put("testList", studentTestList); | ||
| 347 | - | ||
| 348 | - float getScore = 0 ; | ||
| 349 | - for(PageData studentTestPageData:studentTestList){ | ||
| 350 | - String getScoreStr = studentTestPageData.getString("SCORE"); | ||
| 351 | - if(getScoreStr != null){ | ||
| 352 | - try{ | ||
| 353 | - getScore += Float.parseFloat(getScoreStr); | ||
| 354 | - }catch(Exception ex){ | ||
| 355 | - logger.info(ex); | ||
| 356 | - } | ||
| 357 | - } | ||
| 358 | - | ||
| 359 | - studentTestPageData.getString("TEST_ID"); | ||
| 360 | - | ||
| 361 | - } | ||
| 362 | -// studentPageData.put("TOTALSCORE", totalScore); | ||
| 363 | - studentPageData.put("GETSCORE", getScore); | ||
| 364 | - studentPageData.remove("GROUPID"); | ||
| 365 | - studentPageData.remove("REMARK"); | ||
| 366 | - studentPageData.remove("PARENT_PHONE"); | ||
| 367 | - studentPageData.remove("PARENT_NAME"); | ||
| 368 | - studentPageData.remove("NUMBER"); | ||
| 369 | - studentPageData.remove("SIGN_NO"); | ||
| 370 | - studentPageData.remove("KEYPAD_ID"); | ||
| 371 | - studentPageData.remove("SNO"); | ||
| 372 | - studentPageData.remove("SEX"); | ||
| 373 | - | ||
| 374 | - allGetScore += getScore; | ||
| 375 | - if(getScore > maxScore){ | ||
| 376 | - maxScore = getScore ; | ||
| 377 | - } | ||
| 378 | - | ||
| 379 | - } | ||
| 380 | - } | 334 | + |
| 381 | classPageData.remove("SCHOOL_ID"); | 335 | classPageData.remove("SCHOOL_ID"); |
| 382 | classPageData.remove("GRADE_ID"); | 336 | classPageData.remove("GRADE_ID"); |
| 383 | classPageData.remove("BASESTATION_ID"); | 337 | classPageData.remove("BASESTATION_ID"); |
src/com/fh/service/sunvote/studenttest/StudentTestManager.java
| 1 | package com.fh.service.sunvote.studenttest; | 1 | package com.fh.service.sunvote.studenttest; |
| 2 | 2 | ||
| 3 | import java.util.List; | 3 | import java.util.List; |
| 4 | + | ||
| 4 | import com.fh.entity.Page; | 5 | import com.fh.entity.Page; |
| 5 | import com.fh.util.PageData; | 6 | import com.fh.util.PageData; |
| 6 | 7 | ||
| @@ -59,5 +60,8 @@ public interface StudentTestManager{ | @@ -59,5 +60,8 @@ public interface StudentTestManager{ | ||
| 59 | */ | 60 | */ |
| 60 | public void deleteAll(String[] ArrayDATA_IDS)throws Exception; | 61 | public void deleteAll(String[] ArrayDATA_IDS)throws Exception; |
| 61 | 62 | ||
| 63 | + | ||
| 64 | + public List<PageData> reportClassListData(PageData pd) throws Exception; | ||
| 65 | + | ||
| 62 | } | 66 | } |
| 63 | 67 |
src/com/fh/service/sunvote/studenttest/impl/StudentTestService.java
| @@ -86,5 +86,10 @@ public class StudentTestService implements StudentTestManager{ | @@ -86,5 +86,10 @@ public class StudentTestService implements StudentTestManager{ | ||
| 86 | return (List<PageData>)dao.findForList("StudentTestMapper.reportListData", pd); | 86 | return (List<PageData>)dao.findForList("StudentTestMapper.reportListData", pd); |
| 87 | } | 87 | } |
| 88 | 88 | ||
| 89 | + @Override | ||
| 90 | + public List<PageData> reportClassListData(PageData pd) throws Exception { | ||
| 91 | + return (List<PageData>)dao.findForList("StudentTestMapper.reportClassListData", pd); | ||
| 92 | + } | ||
| 93 | + | ||
| 89 | } | 94 | } |
| 90 | 95 |