فهرست منبع

多媒体增加评卷质量

ting.yin 5 سال پیش
والد
کامیت
330ff5501c

+ 41 - 21
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/MarkQualityController.java

@@ -22,11 +22,13 @@ 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.Exam;
 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.ExamService;
 import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
 import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
 import cn.com.qmth.stmms.biz.exam.service.MarkGroupService;
@@ -42,6 +44,7 @@ import cn.com.qmth.stmms.biz.mark.service.TrialService;
 import cn.com.qmth.stmms.biz.mark.thread.MarkQualityThread;
 import cn.com.qmth.stmms.common.auth.annotation.RoleRequire;
 import cn.com.qmth.stmms.common.domain.WebUser;
+import cn.com.qmth.stmms.common.enums.ExamType;
 import cn.com.qmth.stmms.common.enums.LibraryStatus;
 import cn.com.qmth.stmms.common.enums.LockType;
 import cn.com.qmth.stmms.common.enums.MarkStatus;
@@ -85,6 +88,9 @@ public class MarkQualityController extends BaseExamController {
     @Autowired
     private ExamStudentService studentService;
 
+    @Autowired
+    private ExamService examService;
+
     @Value("${slice.image.server}")
     private String sliceServer;
 
@@ -94,6 +100,9 @@ public class MarkQualityController extends BaseExamController {
     @Value("${card.server}")
     private String cardServer;
 
+    @Value("${json.server}")
+    private String jsonServer;
+
     @RequestMapping
     public String list(Model model, HttpServletRequest request, MarkerSearchQuery query) {
         int examId = getSessionExamId(request);
@@ -114,8 +123,10 @@ public class MarkQualityController extends BaseExamController {
         }
         if (query.getSubjectCode() != null && query.getGroupNumber() != null) {
             query = markerService.findByQuery(query);
-            model.addAttribute("running",
-                    lockService.isLocked(LockType.BATCH_QUALITY, getLockKey(examId, query.getSubjectCode(), query.getGroupNumber())));
+            model.addAttribute(
+                    "running",
+                    lockService.isLocked(LockType.BATCH_QUALITY,
+                            getLockKey(examId, query.getSubjectCode(), query.getGroupNumber())));
         }
         model.addAttribute("query", query);
         model.addAttribute("subjectList", subjectList);
@@ -124,15 +135,15 @@ public class MarkQualityController extends BaseExamController {
     }
 
     @RequestMapping("/update")
-    public String update(HttpServletRequest request, RedirectAttributes redirectAttributes, @RequestParam String subjectCode,
-            @RequestParam Integer groupNumber) {
+    public String update(HttpServletRequest request, RedirectAttributes redirectAttributes,
+            @RequestParam String subjectCode, @RequestParam Integer groupNumber) {
         int examId = getSessionExamId(request);
         MarkGroup group = groupService.findOne(examId, subjectCode, groupNumber);
         if (group != null) {
             final String lockKey = getLockKey(examId, subjectCode, groupNumber);
             if (lockService.trylock(LockType.BATCH_QUALITY, lockKey)) {
-                taskExecutor.submit(new MarkQualityThread(markerService.findByExamAndSubjectAndGroup(examId, subjectCode, groupNumber),
-                        lockKey));
+                taskExecutor.submit(new MarkQualityThread(markerService.findByExamAndSubjectAndGroup(examId,
+                        subjectCode, groupNumber), lockKey));
             }
             redirectAttributes.addAttribute("groupNumber", groupNumber);
         }
@@ -145,16 +156,18 @@ public class MarkQualityController extends BaseExamController {
     }
 
     @RequestMapping("/chart")
-    public String chart(HttpServletRequest request, Model model, @RequestParam String subjectCode, @RequestParam Integer groupNumber) {
+    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);
-            List<Double> scores = libraryService.findScore(examId, subjectCode, groupNumber, LibraryStatus.MARKED, LibraryStatus.INSPECTED);
+            List<Double> scores = libraryService.findScore(examId, subjectCode, groupNumber, LibraryStatus.MARKED,
+                    LibraryStatus.INSPECTED);
             for (Marker marker : markers) {
-                List<Object[]> libraries = libraryService
-                        .findScoreCount(examId, subjectCode, groupNumber, marker.getId(), LibraryStatus.MARKED, LibraryStatus.INSPECTED);
+                List<Object[]> libraries = libraryService.findScoreCount(examId, subjectCode, groupNumber,
+                        marker.getId(), LibraryStatus.MARKED, LibraryStatus.INSPECTED);
                 Map<Double, Long> scoreCount = new HashMap<Double, Long>();
                 for (Object[] array : libraries) {
                     Double score = (Double) array[0];
@@ -168,8 +181,8 @@ public class MarkQualityController extends BaseExamController {
                 vo.setScoreCount(scoreCount);
                 list.add(vo);
             }
-            group.setQuestionList(
-                    questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId, subjectCode, false, group.getNumber()));
+            group.setQuestionList(questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId, subjectCode,
+                    false, group.getNumber()));
             model.addAttribute("scores", scores);
             model.addAttribute("markers", list);
             model.addAttribute("group", group);
@@ -182,13 +195,14 @@ public class MarkQualityController extends BaseExamController {
 
     @RequestMapping("/getChart")
     @ResponseBody
-    public List<MarkerVO> getChart(HttpServletRequest request, @RequestParam String subjectCode, @RequestParam Integer groupNumber) {
+    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, LibraryStatus.INSPECTED);
+            List<Object[]> libraries = libraryService.findScoreCount(examId, subjectCode, groupNumber, marker.getId(),
+                    LibraryStatus.MARKED, LibraryStatus.INSPECTED);
             MarkLibrarySearchQuery query = new MarkLibrarySearchQuery();
             query.setMarkerId(marker.getId());
             query.addStatus(LibraryStatus.MARKED);
@@ -216,7 +230,8 @@ public class MarkQualityController extends BaseExamController {
 
     @RequestMapping("/batchProcess")
     @RoleRequire({ Role.SCHOOL_ADMIN, Role.SUBJECT_HEADER })
-    public String batchProcess(Model model, HttpServletRequest request, @RequestParam Integer markerId, @RequestParam Double markerScore) {
+    public String batchProcess(Model model, HttpServletRequest request, @RequestParam Integer markerId,
+            @RequestParam Double markerScore) {
         int examId = getSessionExamId(request);
         Marker marker = markerService.findById(markerId);
         WebUser wu = RequestUtils.getWebUser(request);
@@ -230,18 +245,24 @@ public class MarkQualityController extends BaseExamController {
         model.addAttribute("sheetServer", sheetServer);
         model.addAttribute("sliceServer", sliceServer);
         model.addAttribute("cardServer", cardServer);
+        model.addAttribute("jsonServer", jsonServer);
         model.addAttribute("subject", subjectService.find(group.getExamId(), group.getSubjectCode()));
         model.addAttribute("group", group);
         model.addAttribute("markerId", markerId);
         model.addAttribute("markerScore", markerScore);
+        Exam exam = examService.findById(examId);
+        if (ExamType.MULTI_MEDIA.equals(exam.getType())) {
+            return "modules/exam/qualityProcessJson";
+        }
         return "modules/exam/qualityProcess";
     }
 
     @RequestMapping(value = "/history", method = RequestMethod.POST)
     @ResponseBody
     @RoleRequire({ Role.SCHOOL_ADMIN, Role.SUBJECT_HEADER })
-    public List<Task> getTask(HttpServletRequest request, @RequestParam Integer markerId, @RequestParam Double markerScore,
-            @RequestParam(required = false) Integer pageNumber, @RequestParam(required = false) Integer pageSize) {
+    public List<Task> getTask(HttpServletRequest request, @RequestParam Integer markerId,
+            @RequestParam Double markerScore, @RequestParam(required = false) Integer pageNumber,
+            @RequestParam(required = false) Integer pageSize) {
         Marker marker = markerService.findById(markerId);
         List<Task> list = new ArrayList<>();
         MarkGroup group = groupService.findOne(marker.getExamId(), marker.getSubjectCode(), marker.getGroupNumber());
@@ -272,9 +293,8 @@ public class MarkQualityController extends BaseExamController {
         } else if (group != null && group.getStatus() == MarkStatus.TRIAL) {
             // 试评查找给分历史记录
             List<TrialHistory> historyList = new ArrayList<TrialHistory>();
-            historyList = trialService
-                    .findHistory(marker.getExamId(), marker.getSubjectCode(), marker.getGroupNumber(), marker.getId(), pageNumber, pageSize,
-                            null, markerScore);
+            historyList = trialService.findHistory(marker.getExamId(), marker.getSubjectCode(),
+                    marker.getGroupNumber(), marker.getId(), pageNumber, pageSize, null, markerScore);
             for (TrialHistory history : historyList) {
                 TrialLibrary library = trialService.findLibrary(history.getLibraryId());
                 if (library != null) {

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

@@ -0,0 +1,80 @@
+<%@ page language="java" pageEncoding="utf-8"%>
+<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>云阅卷高校版</title>
+<link href="${ctxStatic}/mark-new/css/bootstrap.css" rel="stylesheet" type="text/css" />
+<link href="${ctxStatic}/mark-new/css/style.css" rel="stylesheet" type="text/css" />
+
+<script type="text/javascript" src="${ctxStatic}/mark-new/js/json2.js"></script>
+
+<script type="text/javascript" src="${ctxStatic}/mark-new/js/jquery.min.js"></script>
+<script type="text/javascript" src="${ctxStatic}/mark-new/js/jquery-ui.min.js "></script>
+<script type="text/javascript" src="${ctxStatic}/mark-new/js/jquery.mousewheel.min.js"></script>
+
+<script type="text/javascript" src="${ctxStatic}/iviewer/jquery.iviewer.js"></script>
+<link rel="stylesheet" href="${ctxStatic}/iviewer/jquery.iviewer.css" rel="stylesheet" />
+
+<script src="${ctxStatic}/perfect-scrollbar/min/perfect-scrollbar.min.js"></script>
+<link href="${ctxStatic}/perfect-scrollbar/min/perfect-scrollbar.min.css" rel="stylesheet">
+
+<script src="${ctxStatic}/i18n/jquery.i18n.properties.js" type="text/javascript"></script>
+<script src="${ctxStatic}/i18n/load.js" type="text/javascript"></script>
+
+<script src="${ctxStatic}/rich-text/js/render.js"></script>
+<link href="${ctxStatic}/rich-text/css/rich-text.css" rel="stylesheet">
+<script type="text/javascript" src="${ctxStatic}/viewer/viewer.js"></script>
+<link href="${ctxStatic}/viewer/viewer.css" rel="stylesheet">
+
+<script type="text/javascript" src="${ctxStatic}/mark-json/js/mark-control.js"></script>
+<script type="text/javascript" src="${ctxStatic}/mark-json/js/json-view.js"></script>
+<script type="text/javascript" src="${ctxStatic}/mark-json/js/json-loader.js"></script>
+<script type="text/javascript" src="${ctxStatic}/mark-new/js/task-control.js"></script>
+<script type="text/javascript" src="${ctxStatic}/mark-new/js/modules/header-mark-status.js"></script>
+<script type="text/javascript" src="${ctxStatic}/mark-new/js/modules/image-builder.js"></script>
+<script type="text/javascript" src="${ctxStatic}/mark-new/js/modules/warning-info.js"></script>
+<script type="text/javascript" src="${ctxStatic}/mark-new/js/modules/thumbnail.js"></script>
+<script type="text/javascript" src="${ctxStatic}/mark-new/js/modules/single-image-view.js"></script>
+<script type="text/javascript" src="${ctxStatic}/mark-new/js/modules/view-sidebar.js"></script>
+<script type="text/javascript" src="${ctxStatic}/mark-new/js/modules/quality-process.js"></script>
+
+</head>
+<body>
+	<div class="container-fluid" id="container"></div>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			var mc = new MarkControl({
+				container : $('#container'),
+				staticServer : '${ctxStatic}',
+				imageServer : '${sliceServer}',
+				userName : '${web_user.name}',
+				logoutTitle: '关闭',
+				logoutUrl: 'javascript:window.close()',
+				modules : {
+					'json-loader': {
+	                    jsonServer: '${jsonServer}'
+	                },
+	                'json-view': {},
+					'header-mark-status': {
+						title : '${subject.code}_${subject.name}_${group.title}'
+					},
+					'quality-process': {
+					},
+					'warning-info': {
+					},
+					'view-sidebar':{
+						list: [
+							{title:'试卷',  url:'<c:if test="${subject.hasPaper==true}">${cardServer}${subject.paperUrl}</c:if>'},
+							{title:'答案',  url:'<c:if test="${subject.hasAnswer==true}">${cardServer}${subject.answerUrl}</c:if>'}
+						]
+					}
+				}
+			});
+            $.post('${ctx}/admin/exam/quality/history?markerId=${markerId}&markerScore=${markerScore}&pageSize=1', {}, function(taskList){
+                mc.setTask(taskList[0]);
+            });
+		});
+	</script>
+</body>
+</html>