1
0
ting.yin 4 лет назад
Родитель
Сommit
e60969ae94

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

@@ -1484,7 +1484,7 @@ public class MarkServiceImpl implements MarkService {
     @Transactional
     @Override
     public boolean deleteByQuestion(ExamQuestion question) {
-        if (question.getGroupNumber() != null) {
+        if (!question.isObjective() && question.getGroupNumber() != null) {
             return false;
         } else {
             int examId = question.getExamId();

+ 4 - 3
stmms-web/src/main/java/cn/com/qmth/stmms/admin/dto/SubjectQuestionDTO.java

@@ -37,7 +37,7 @@ public class SubjectQuestionDTO {
     }
 
     public void addQuestion(ExamQuestion question) {
-        if (question != null && question.getTotalScore() != null) {
+        if (question != null) {
             question.setExamId(examId);
             list.add(question);
 
@@ -63,8 +63,9 @@ public class SubjectQuestionDTO {
                     groups.put(question.getGroupNumber(), group);
                 }
                 group.getImportQuestionList().add(question);
-                group.setTotalScore(group.getTotalScore() + question.getTotalScore());
-                totalScore += question.getTotalScore();
+                // group.setTotalScore(group.getTotalScore() +
+                // question.getTotalScore());
+                // totalScore += question.getTotalScore();
             }
         }
     }

+ 38 - 4
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/PaperController.java

@@ -122,10 +122,39 @@ public class PaperController extends BaseExamController {
         if (subject != null) {
             List<ExamQuestion> list = new LinkedList<ExamQuestion>();
             if (objective == null || objective) {
-                list.addAll(questionService.findByExamAndSubjectAndObjective(examId, subjectCode, true));
+                List<ExamQuestion> objectiveList = questionService.findByExamAndSubjectAndObjective(examId,
+                        subjectCode, true);
+
+                Collections.sort(objectiveList, new Comparator<ExamQuestion>() {
+
+                    @Override
+                    public int compare(ExamQuestion o1, ExamQuestion o2) {
+                        int i = o1.getMainNumber() - o2.getMainNumber();
+                        if (i == 0) {
+                            return Integer.parseUnsignedInt(o1.getSubNumber())
+                                    - Integer.parseUnsignedInt(o2.getSubNumber());
+                        }
+                        return i;
+                    }
+                });
+                list.addAll(objectiveList);
             }
             if (objective == null || !objective) {
-                list.addAll(questionService.findByExamAndSubjectAndObjective(examId, subjectCode, false));
+                List<ExamQuestion> subjectiveList = questionService.findByExamAndSubjectAndObjective(examId,
+                        subjectCode, false);
+                Collections.sort(subjectiveList, new Comparator<ExamQuestion>() {
+
+                    @Override
+                    public int compare(ExamQuestion o1, ExamQuestion o2) {
+                        int i = o1.getMainNumber() - o2.getMainNumber();
+                        if (i == 0) {
+                            return Integer.parseUnsignedInt(o1.getSubNumber())
+                                    - Integer.parseUnsignedInt(o2.getSubNumber());
+                        }
+                        return i;
+                    }
+                });
+                list.addAll(subjectiveList);
             }
             model.addAttribute("questionList", list);
             model.addAttribute("subject", subject);
@@ -214,7 +243,7 @@ public class PaperController extends BaseExamController {
                 if (subject != null) {
                     Map<Integer, String> titleMap = new HashMap<>();
                     List<ExamQuestion> current = questionService.findByExamAndSubjectAndObjective(examId,
-                            subject.getCode(), false);
+                            subject.getCode(), objective);
                     for (ExamQuestion question : current) {
                         titleMap.put(question.getMainNumber(), question.getMainTitle());
                     }
@@ -311,7 +340,7 @@ public class PaperController extends BaseExamController {
                                                     subject.getCode(), false, question.getMainNumber(),
                                                     question.getSubNumber());
                                     if (old == null) {
-                                        error.add("[" + group.getSubjectCode() + "_" + group.getNumber() + "] 有小题不存在");
+                                        error.add("[" + group.getSubjectCode() + "_" + group.getNumber() + "] 分组有小题不存在");
                                         validate = false;
                                         break;
                                     }
@@ -325,6 +354,11 @@ public class PaperController extends BaseExamController {
                                 // 有题目的分组才保存
                                 if (questionService.countByExamAndSubjectAndObjectiveAndGroupNumber(examId,
                                         group.getSubjectCode(), false, group.getNumber()) != 0) {
+                                    double totalScore = 0d;
+                                    for (ExamQuestion q : questionGroup) {
+                                        totalScore = totalScore + q.getTotalScore();
+                                    }
+                                    group.setTotalScore(totalScore);
                                     groupService.save(group);
                                     studentService.updateSubjectiveStatusAndScoreAndInspectorId(examId,
                                             group.getSubjectCode(), SubjectiveStatus.UNMARK, 0, null, null, null);

+ 45 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectRangeController.java

@@ -1,7 +1,9 @@
 package cn.com.qmth.stmms.admin.report;
 
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -13,21 +15,31 @@ import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.core.task.AsyncTaskExecutor;
 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.servlet.mvc.support.RedirectAttributes;
 
 import cn.com.qmth.stmms.admin.dto.ReportSubjectRangeDTO;
 import cn.com.qmth.stmms.admin.exam.BaseExamController;
+import cn.com.qmth.stmms.admin.thread.ScoreCalculateThread;
+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.lock.LockService;
 import cn.com.qmth.stmms.biz.report.model.ReportSubject;
 import cn.com.qmth.stmms.biz.report.query.ReportSubjectQuery;
 import cn.com.qmth.stmms.biz.report.service.ReportSubjectService;
 import cn.com.qmth.stmms.common.annotation.Logging;
+import cn.com.qmth.stmms.common.annotation.RoleRequire;
 import cn.com.qmth.stmms.common.domain.WebUser;
 import cn.com.qmth.stmms.common.enums.LockType;
 import cn.com.qmth.stmms.common.enums.LogType;
+import cn.com.qmth.stmms.common.enums.Role;
 import cn.com.qmth.stmms.common.utils.ExportExcel;
 import cn.com.qmth.stmms.common.utils.RequestUtils;
 
@@ -46,9 +58,25 @@ public class ReportSubjectRangeController extends BaseExamController {
     @Autowired
     private ReportSubjectService reportSubjectService;
 
+    @Autowired
+    private ExamSubjectService subjectService;
+
+    @Autowired
+    private ExamQuestionService questionService;
+
     @Autowired
     private LockService lockService;
 
+    @Qualifier("task-executor")
+    @Autowired
+    private AsyncTaskExecutor taskExecutor;
+
+    @Autowired
+    private ExamStudentService studentService;
+
+    @Autowired
+    private ExamService examService;
+
     @Logging(menu = "课程分段统计", type = LogType.QUERY)
     @RequestMapping
     public String list(Model model, HttpServletRequest request, ReportSubjectQuery query) {
@@ -148,4 +176,21 @@ public class ReportSubjectRangeController extends BaseExamController {
         }
     }
 
+    @Logging(menu = "客观题统分", type = LogType.UPDATE)
+    @RequestMapping("/calculate")
+    @RoleRequire({ Role.SCHOOL_ADMIN, Role.SUBJECT_HEADER })
+    public String calculate(HttpServletRequest request, RedirectAttributes redirectAttributes,
+            @RequestParam String subjectCode) {
+        int examId = getSessionExamId(request);
+        Set<String> subjectSet = new HashSet<String>();
+        if (!lockService.isLocked(LockType.SCORE_CALCULATE, examId, subjectCode)) {
+            subjectSet.add(subjectCode);
+        }
+        if (!subjectSet.isEmpty()) {
+            ScoreCalculateThread thread = new ScoreCalculateThread(examId, subjectSet, lockService, studentService,
+                    questionService, examService, subjectService, false);
+            taskExecutor.submit(thread);
+        }
+        return "redirect:/admin/exam/reportSubjectRange?subjectCode=" + subjectCode;
+    }
 }

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

@@ -34,7 +34,6 @@
             });
             
             var forbiddenInfo = ${exam.forbiddenInfo};
-            debugger;
             if (forbiddenInfo != null && forbiddenInfo ==true) {
                 $("#forbiddenScoreDiv").show();
             } else {

+ 2 - 2
stmms-web/src/main/webapp/WEB-INF/views/modules/report/reportSubjectRange.jsp

@@ -49,7 +49,7 @@
 		<input id="export-button" class="btn" type="button" value="导出"  data-i18n-value="report.group.export"/>
 		<c:if test="${query.subjectCode!=null}">
 		&nbsp;
-		<a href="${ctx}/admin/exam/paper/report?subjectCode=${query.subjectCode}" class="btn" <c:if test="${locked}">disabled="disabled"</c:if>>分析计算</a>
+		<a href="${ctx}/admin/exam/reportSubjectRange/calculate?subjectCode=${query.subjectCode}" class="btn" <c:if test="${locked}">disabled="disabled"</c:if>>分析计算</a>
 		</c:if>
 		&nbsp;
 		<a href="#" onclick="viewEcharts()" class="btn  btn-primary">查看统计图</a>
@@ -125,7 +125,7 @@ $("#export-button").click(function(){
             	$("#echart-content").width(width+"px") ;
             }
         });
-	debugger;
+	
         var imageModal = new jBox('Modal');
         imageModal.setWidth($(window).width() * 0.9);
         imageModal.setHeight($(window).height() * 0.85);