ting.yin 4 anni fa
parent
commit
be7251e668

+ 40 - 4
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/model/ArbitrateHistory.java

@@ -1,11 +1,24 @@
 package cn.com.qmth.stmms.biz.mark.model;
 
-import cn.com.qmth.stmms.biz.user.model.User;
-import cn.com.qmth.stmms.common.enums.HistoryStatus;
-
-import javax.persistence.*;
 import java.io.Serializable;
 import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+
+import org.apache.commons.lang.StringUtils;
+
+import cn.com.qmth.stmms.biz.user.model.User;
+import cn.com.qmth.stmms.biz.utils.ScoreItem;
+import cn.com.qmth.stmms.common.enums.HistoryStatus;
 
 /**
  * 多评仲裁记录表
@@ -210,4 +223,27 @@ public class ArbitrateHistory implements Serializable {
         this.user = user;
     }
 
+    public List<ScoreItem> getScoreItemList() {
+        List<ScoreItem> list = new LinkedList<ScoreItem>();
+        if (StringUtils.isNotBlank(scoreList)) {
+            try {
+                String[] values = scoreList.split(",");
+                for (String value : values) {
+                    if (value.equals("")) {
+                        list.add(new ScoreItem(false));
+                    } else {
+                        ScoreItem item = ScoreItem.parse(value, false);
+                        if (item != null) {
+                            list.add(item);
+                        }
+                    }
+                }
+                if (scoreList.endsWith(",")) {
+                    list.add(new ScoreItem(false));
+                }
+            } catch (Exception e) {
+            }
+        }
+        return list;
+    }
 }

+ 30 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/TaskServiceImpl.java

@@ -110,7 +110,7 @@ public class TaskServiceImpl implements TaskService {
         task.setStudentId(history.getStudentId());
         task.setLibraryId(history.getId());
         task.setSecretNumber(history.getSecretNumber());
-        task.setQuestionList(buildMarkStep(group, null));
+        task.setQuestionList(buildArbitrateStep(group, history));
         task.setSliceUrls(fileService.getSliceUris(student.getExamId(), student.getSecretNumber(), 1,
                 student.getSliceCount()));
         task.setSliceConfig(group.getPictureConfigList());
@@ -125,6 +125,35 @@ public class TaskServiceImpl implements TaskService {
         return task;
     }
 
+    private List<MarkStepDTO> buildArbitrateStep(MarkGroup group, ArbitrateHistory history) {
+        List<MarkStepDTO> list = new LinkedList<MarkStepDTO>();
+        List<ExamQuestion> sList = questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(group.getExamId(),
+                group.getSubjectCode(), false, group.getNumber());
+        List<MarkTrack> tracks = new ArrayList<MarkTrack>();
+        List<ScoreItem> sItems = new ArrayList<ScoreItem>();
+        if (history != null) {
+            sItems = history.getScoreItemList();
+        }
+        for (int i = 0; i < sList.size(); i++) {
+            ExamQuestion question = sList.get(i);
+            MarkStepDTO step = buildStep(question);
+            if (history != null) {
+                if (!sItems.isEmpty() && sItems.size() == sList.size()) {
+                    step.setScore(sItems.get(i).getScore());
+                }
+                // 增加阅卷轨迹列表获取
+                String questionNumber = question.getQuestionNumber();
+                for (MarkTrack track : tracks) {
+                    if (track.getQuestionNumber().equals(questionNumber)) {
+                        step.addTrack(new TrackDTO(track));
+                    }
+                }
+            }
+            list.add(step);
+        }
+        return list;
+    }
+
     @Override
     public Task build(MarkLibrary library) {
         Exam exam = examService.findById(library.getExamId());

+ 15 - 1
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/InspectedController.java

@@ -30,6 +30,7 @@ import cn.com.qmth.stmms.biz.exam.query.ExamStudentSearchQuery;
 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.InspectedService;
 import cn.com.qmth.stmms.biz.file.service.FileService;
 import cn.com.qmth.stmms.biz.lock.LockService;
@@ -76,6 +77,9 @@ public class InspectedController extends BaseExamController {
     @Autowired
     private TaskService taskService;
 
+    @Autowired
+    private ExamSubjectService subjectService;
+
     @Value("${slice.split.config}")
     private String splitConfig;
 
@@ -329,12 +333,22 @@ public class InspectedController extends BaseExamController {
 
     @RequestMapping(value = "/getSetting", method = RequestMethod.POST)
     @ResponseBody
-    public JSONObject getSetting(HttpServletRequest request) {
+    public JSONObject getSetting(HttpServletRequest request, @RequestParam(required = false) String subjectCode) {
         JSONObject setting = new JSONObject();
         WebUser wu = RequestUtils.getWebUser(request);
         setting.accumulate("fileServer", fileService.getFileServer());
         setting.accumulate("userName", wu.getName());
         setting.accumulate("splitConfig", getSplitConfig());
+        if (StringUtils.isNotBlank(subjectCode)) {
+            int examId = getSessionExamId(request);
+            ExamSubject examSubject = subjectService.find(examId, subjectCode);
+            JSONObject subject = new JSONObject();
+            subject.accumulate("name", examSubject.getName());
+            subject.accumulate("code", examSubject.getCode());
+            subject.accumulate("paperUrl", examSubject.getPaperUrl() == null ? "" : examSubject.getPaperUrl());
+            subject.accumulate("answerUrl", examSubject.getAnswerUrl() == null ? "" : examSubject.getAnswerUrl());
+            setting.accumulate("subject", subject);
+        }
         return setting;
     }
 

+ 8 - 3
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/PaperController.java

@@ -411,16 +411,21 @@ public class PaperController extends BaseExamController {
     @Logging(menu = "删除题目", type = LogType.DELETE)
     @RequestMapping(value = "/question-delete/{questionId}", method = RequestMethod.GET)
     @RoleRequire(Role.SCHOOL_ADMIN)
-    public String delete(HttpServletRequest request, @PathVariable Integer questionId) {
+    public String delete(HttpServletRequest request, RedirectAttributes redirectAttributes,
+            @PathVariable Integer questionId) {
         ExamQuestion question = questionService.findById(questionId);
         String subjectCode = question.getSubjectCode();
-        markService.deleteByQuestion(question);
+        if (markService.deleteByQuestion(question)) {
+            addMessage(redirectAttributes, "删除成功");
+        } else {
+            addMessage(redirectAttributes, "删除失败,该题目已有分组");
+        }
         return "redirect:/admin/exam/paper/detail?subjectCode=" + subjectCode;
     }
 
     @Logging(menu = "客观题统分", type = LogType.UPDATE)
     @RequestMapping("/calculate")
-    @RoleRequire(Role.SCHOOL_ADMIN)
+    @RoleRequire({ Role.SCHOOL_ADMIN, Role.SUBJECT_HEADER })
     public ModelAndView calculate(HttpServletRequest request, RedirectAttributes redirectAttributes,
             @RequestParam(required = false) String subjectCode) {
         WebUser wu = RequestUtils.getWebUser(request);

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

@@ -222,7 +222,6 @@
             alert('请选择题目');
             return false;
         }
-    	alert(check_list);
        $('#inputForm').submit();
     });
 </script>

+ 3 - 3
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/qualityChart.jsp

@@ -33,7 +33,7 @@
 				<c:forEach items="${scores}" var="score">
 					<td>
 					<c:if test="${marker.scoreCount[score]!=null}">
-					<a href="##" onclick="openTab(${marker.id},${score})">${marker.scoreCount[score] }</a></c:if>
+					<a href="##" onclick="openTab(${marker.subjectCode},${marker.id},${score})">${marker.scoreCount[score] }</a></c:if>
 					<c:if test="${marker.scoreCount[score]==null }">0</c:if>
 					</td>
 				</c:forEach>
@@ -108,8 +108,8 @@ $.post('${ctx}/admin/exam/quality/getChart', {subjectCode: subjectCode,groupNumb
 		};
 	myChart.setOption(option);
 });
-function openTab(markerId,markerScore){
-    window.open('${ctx}/web/admin/exam/quality?markerId='+markerId+'&markerScore='+markerScore,"_blank");    
+function openTab(subjectCode,markerId,markerScore){
+    window.open('${ctx}/web/admin/exam/quality?subjectCode='+subjectCode+'&markerId='+markerId+'&markerScore='+markerScore,"_blank");    
 };
 </script>	
 </body>

+ 1 - 1
stmms-web/src/main/webapp/WEB-INF/views/modules/mark/subjectSelect.jsp

@@ -102,7 +102,7 @@
                     </div>
                     <c:if test="${message != null }">
                         <div class="point <c:if test="${message != null }"></c:if><c:if test="${message == null }">hide</c:if>">
-                            <em class="error"><spring:message code="${message }"/></em>
+                            <em class="error">${message }"</em>
                         </div>
                     </c:if>
                     <div class="login-btn">