|
@@ -23,13 +23,11 @@ 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;
|
|
@@ -49,21 +47,15 @@ public class MarkQualityController extends BaseExamController {
|
|
|
@Autowired
|
|
|
private MarkerService markerService;
|
|
|
|
|
|
- @Autowired
|
|
|
- private MarkService markService;
|
|
|
-
|
|
|
@Autowired
|
|
|
private LockService lockService;
|
|
|
|
|
|
@Autowired
|
|
|
private AsyncTaskExecutor taskExecutor;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private ExamQuestionService questionService;
|
|
|
-
|
|
|
+
|
|
|
@Autowired
|
|
|
private ExamSubjectService subjectService;
|
|
|
-
|
|
|
+
|
|
|
@Autowired
|
|
|
private MarkLibraryService libraryService;
|
|
|
|
|
@@ -105,8 +97,7 @@ public class MarkQualityController extends BaseExamController {
|
|
|
final String lockKey = getLockKey(examId, subjectCode, groupNumber);
|
|
|
if (lockService.trylock(LockType.GROUP, lockKey)) {
|
|
|
taskExecutor.submit(new MarkQualityThread(
|
|
|
- markerService.findByExamAndSubjectAndGroup(examId, subjectCode, groupNumber), markService,
|
|
|
- new Callback() {
|
|
|
+ markerService.findByExamAndSubjectAndGroup(examId, subjectCode, groupNumber), new Callback() {
|
|
|
|
|
|
@Override
|
|
|
public void invoke() {
|
|
@@ -123,42 +114,43 @@ 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);
|
|
|
+ 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<MarkerVO> list = new ArrayList<MarkerVO>();
|
|
|
List<Marker> markers = markerService.findByExamAndSubjectAndGroup(examId, subjectCode, groupNumber);
|
|
|
Double minScore = null;
|
|
|
- Double maxScore = 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);
|
|
|
- }
|
|
|
+ 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);
|
|
@@ -169,29 +161,31 @@ public class MarkQualityController extends BaseExamController {
|
|
|
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);
|
|
|
- }
|
|
|
+ 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;
|
|
|
}
|
|
|
|