|
@@ -1,6 +1,9 @@
|
|
|
package cn.com.qmth.stmms.admin.exam;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
|
@@ -12,17 +15,24 @@ import org.springframework.stereotype.Controller;
|
|
|
import org.springframework.ui.Model;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
|
+import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
|
|
|
|
|
+import cn.com.qmth.stmms.admin.vo.MarkerVO;
|
|
|
import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
|
|
|
import cn.com.qmth.stmms.biz.exam.model.MarkGroup;
|
|
|
+import cn.com.qmth.stmms.biz.exam.model.Marker;
|
|
|
import cn.com.qmth.stmms.biz.exam.query.MarkerSearchQuery;
|
|
|
+import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
|
|
|
+import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
|
|
|
import cn.com.qmth.stmms.biz.exam.service.MarkGroupService;
|
|
|
import cn.com.qmth.stmms.biz.exam.service.MarkerService;
|
|
|
import cn.com.qmth.stmms.biz.lock.LockService;
|
|
|
+import cn.com.qmth.stmms.biz.mark.service.MarkLibraryService;
|
|
|
import cn.com.qmth.stmms.biz.mark.service.MarkService;
|
|
|
import cn.com.qmth.stmms.biz.mark.thread.MarkQualityThread;
|
|
|
import cn.com.qmth.stmms.common.domain.WebUser;
|
|
|
+import cn.com.qmth.stmms.common.enums.LibraryStatus;
|
|
|
import cn.com.qmth.stmms.common.enums.LockType;
|
|
|
import cn.com.qmth.stmms.common.utils.Callback;
|
|
|
import cn.com.qmth.stmms.common.utils.RequestUtils;
|
|
@@ -47,6 +57,15 @@ public class MarkQualityController extends BaseExamController {
|
|
|
|
|
|
@Autowired
|
|
|
private AsyncTaskExecutor taskExecutor;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ExamQuestionService questionService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ExamSubjectService subjectService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private MarkLibraryService libraryService;
|
|
|
|
|
|
@RequestMapping
|
|
|
public String list(Model model, HttpServletRequest request, MarkerSearchQuery query) {
|
|
@@ -104,5 +123,76 @@ public class MarkQualityController extends BaseExamController {
|
|
|
private String getLockKey(Integer examId, String subjectCode, Integer groupNumber) {
|
|
|
return examId + "_" + subjectCode + "_" + groupNumber;
|
|
|
}
|
|
|
+
|
|
|
+ @RequestMapping("/chart")
|
|
|
+ public String chart(HttpServletRequest request, Model model,
|
|
|
+ @RequestParam String subjectCode, @RequestParam Integer groupNumber) {
|
|
|
+ int examId = getSessionExamId(request);
|
|
|
+ MarkGroup group = groupService.findOne(examId, subjectCode, groupNumber);
|
|
|
+ if (group != null) {
|
|
|
+ List<MarkerVO> list = new ArrayList<MarkerVO>();
|
|
|
+ List<Marker> markers = markerService.findByExamAndSubjectAndGroup(examId, subjectCode, groupNumber);
|
|
|
+ Double minScore = null;
|
|
|
+ Double maxScore = null;
|
|
|
+ for (Marker marker : markers) {
|
|
|
+ List<Object[]> libraries = libraryService.findScoreCount(examId,subjectCode,groupNumber,marker.getId(),LibraryStatus.MARKED);
|
|
|
+ Map<Double,Long> scoreCount = new HashMap<Double, Long>();
|
|
|
+ for (Object[] array : libraries) {
|
|
|
+ Double score = (Double)array[0];
|
|
|
+ Long count = (Long)array[1];
|
|
|
+ scoreCount.put(score, count);
|
|
|
+ if(minScore == null || maxScore ==null){
|
|
|
+ minScore=score;
|
|
|
+ maxScore=score;
|
|
|
+ }else{
|
|
|
+ if(minScore > score){
|
|
|
+ minScore=score;
|
|
|
+ }
|
|
|
+ if(maxScore < score){
|
|
|
+ maxScore=score;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ MarkerVO vo =new MarkerVO();
|
|
|
+ vo.setLoginName(marker.getLoginName());
|
|
|
+ vo.setName(marker.getName());
|
|
|
+ vo.setScoreCount(scoreCount);
|
|
|
+ list.add(vo);
|
|
|
+ }
|
|
|
+ model.addAttribute("minScore", minScore);
|
|
|
+ model.addAttribute("maxScore", maxScore);
|
|
|
+ model.addAttribute("markers", list);
|
|
|
+ model.addAttribute("group", group);
|
|
|
+ }
|
|
|
+ model.addAttribute("subject", subjectService.find(examId, subjectCode));
|
|
|
+ model.addAttribute("subjectCode", subjectCode);
|
|
|
+ model.addAttribute("groupNumber", groupNumber);
|
|
|
+ return "modules/exam/qualityChart";
|
|
|
+ }
|
|
|
+
|
|
|
+ @RequestMapping("/getChart")
|
|
|
+ @ResponseBody
|
|
|
+ public List<MarkerVO> getChart(HttpServletRequest request, @RequestParam String subjectCode, @RequestParam Integer groupNumber) {
|
|
|
+ int examId = getSessionExamId(request);
|
|
|
+ List<MarkerVO> list = new ArrayList<MarkerVO>();
|
|
|
+ List<Marker> markers = markerService.findByExamAndSubjectAndGroup(examId, subjectCode, groupNumber);
|
|
|
+ for (Marker marker : markers) {
|
|
|
+ List<Object[]> libraries = libraryService.findScoreCount(examId,subjectCode,groupNumber,marker.getId(),LibraryStatus.MARKED);
|
|
|
+ long totalCount = libraryService.countByMarker(marker.getId());
|
|
|
+ Map<Double,Double> scorePercent = new HashMap<Double, Double>();
|
|
|
+ for (Object[] array : libraries) {
|
|
|
+ Double score = (Double)array[0];
|
|
|
+ Long count = (Long)array[1];
|
|
|
+ double percent = count*100/totalCount;
|
|
|
+ scorePercent.put(score, percent);
|
|
|
+ }
|
|
|
+ MarkerVO vo =new MarkerVO();
|
|
|
+ vo.setLoginName(marker.getLoginName());
|
|
|
+ vo.setName(marker.getName());
|
|
|
+ vo.setScorePercent(scorePercent);
|
|
|
+ list.add(vo);
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
|
|
|
}
|