Răsfoiți Sursa

修复选做题设置时总分计算问题

ting.yin 3 ani în urmă
părinte
comite
a14c269f7f

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

@@ -312,8 +312,6 @@ public class MarkServiceImpl implements MarkService {
         groupDao.updateThirdPolicy(group.getExamId(), group.getSubjectCode(), group.getNumber(), third);
         groupDao.updateSelective(group.getExamId(), group.getSubjectCode(), group.getNumber(), selective);
 
-        subjectService.updateScore(group.getExamId(), group.getSubjectCode(), false,
-                sumTotalScore(group.getExamId(), group.getSubjectCode()));
         resetGroup(group);
         if (group.getStatus() == MarkStatus.FORMAL) {
             libraryDao.deleteByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(), group.getSubjectCode(),
@@ -1292,11 +1290,6 @@ public class MarkServiceImpl implements MarkService {
         markerLastUpdateTime.put(marker.getId(), System.currentTimeMillis());
     }
 
-    private double sumTotalScore(Integer examId, String subjectCode) {
-        Double score = groupDao.sumTotalScore(examId, subjectCode);
-        return score != null ? score : 0d;
-    }
-
     @Override
     public boolean needUpdateQuality(Marker marker, long expireMinutes) {
         if (marker == null) {
@@ -1577,6 +1570,9 @@ public class MarkServiceImpl implements MarkService {
             int examId = question.getExamId();
             String subjectCode = question.getSubjectCode();
             boolean objective = question.isObjective();
+            ExamSubject subject = subjectService.find(examId, subjectCode);
+            double totalScore = objective ? subject.getObjectiveScore() - question.getTotalScore() : subject
+                    .getSubjectiveScore() - question.getTotalScore();
             questionDao.delete(question);
             if (objective) {
                 examService.updateObjectiveStatus(examId, ObjectiveStatus.WAITING);
@@ -1597,10 +1593,7 @@ public class MarkServiceImpl implements MarkService {
                     }
                 }
             }
-
-            subjectService.updateScore(examId, subjectCode, objective,
-                    questionService.sumTotalScore(examId, subjectCode, objective));
-
+            subjectService.updateScore(examId, subjectCode, objective, totalScore);
             return true;
         }
     }

+ 9 - 2
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/SelectiveGroupController.java

@@ -88,7 +88,8 @@ public class SelectiveGroupController extends BaseExamController {
             addMessage(redirectAttributes, "该科目已经存在分组,无法设置");
             return "redirect:/admin/exam/paper";
         }
-        if (!checkTotalScore(examId, subjectCode, mainNumbers)) {
+        double questionScore = 0;
+        if (!checkTotalScore(examId, subjectCode, mainNumbers, questionScore)) {
             addMessage(redirectAttributes, "选做题分数必须一样");
             return "redirect:/admin/exam/paper";
         }
@@ -99,11 +100,14 @@ public class SelectiveGroupController extends BaseExamController {
                 list.add(new SelectiveGroup(examId, subjectCode, mainNumber, 1, selectiveCount));
             }
             selectiveGroupService.save(list);
+            Double totalScore = questionService.sumTotalScore(examId, subjectCode, false);
+            totalScore = totalScore - (mainNumbers.length - selectiveCount) * questionScore;
+            subjectService.updateScore(examId, subjectCode, false, totalScore);
         }
         return "redirect:/admin/exam/paper";
     }
 
-    private boolean checkTotalScore(int examId, String subjectCode, Integer[] mainNumbers) {
+    private boolean checkTotalScore(int examId, String subjectCode, Integer[] mainNumbers, double questionScore) {
         List<ExamQuestion> questions = questionService.findMainByExamAndSubjectAndObjective(examId, subjectCode, false);
         Map<Integer, ExamQuestion> map = new HashMap<Integer, ExamQuestion>();
         for (ExamQuestion examQuestion : questions) {
@@ -118,6 +122,7 @@ public class SelectiveGroupController extends BaseExamController {
                 return false;
             }
         }
+        questionScore = totalScore;
         return true;
     }
 
@@ -133,6 +138,8 @@ public class SelectiveGroupController extends BaseExamController {
             return "redirect:/admin/exam/paper";
         }
         selectiveGroupService.deleteByExamIdAndSubjectCode(examId, subjectCode);
+        subjectService.updateScore(examId, subjectCode, false,
+                questionService.sumTotalScore(examId, subjectCode, false));
         return "redirect:/admin/exam/paper";
     }
 }

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

@@ -97,12 +97,6 @@
         return false;
     }
 
-    $(document).keydown(function (event) {
-        if (event.keyCode == 13 || event.keyCode == 108) {
-            goSearch();
-            return false;
-        }
-    });
 </script>
 </body>
 </html>

+ 1 - 7
stmms-web/src/main/webapp/WEB-INF/views/modules/report/reportSubject.jsp

@@ -76,7 +76,7 @@ $("#export-button").click(function(){
 function page(n, s) {
     $("#pageNumber").val(n);
     $("#pageSize").val(s);
-    $("#searchForm").attr('action', '{ctx}/admin/exam/reportSubject/export');
+	$("#searchForm").attr("action","${ctx}/admin/exam/reportSubject");
     $("#searchForm").submit();
     return false;
 }
@@ -87,12 +87,6 @@ function goSearch(){
 	$("#searchForm").submit();
 	return false;
 }
-$(document).keydown(function(event) {
-	if(event.keyCode == 13 || event.keyCode== 108){
-		goSearch();
-		return false;
-	}
-});
 </script>	
 </body>
 </html>