ting.yin 2 年之前
父节点
当前提交
3974741768

+ 1 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/utils/unit/BaseCalculatorUnit.java

@@ -89,7 +89,7 @@ public class BaseCalculatorUnit {
         coefficient = avgScore > 0 ? stdev * 100 / avgScore : 0;
         // 区分度
         double temp = Math.sqrt((sumScore2 - sumScore * sumScore / count) * (sumTotalScore2 - sumTotalScore * sumTotalScore / count));
-        if (temp != 0) {
+        if (temp != 0 && Double.NaN != temp) {
             discrimination = (aggScore - sumScore * sumTotalScore / count) / temp;
         } else {
             discrimination = 0;

+ 16 - 8
stmms-web/src/main/java/cn/com/qmth/stmms/admin/thread/QuestionDeleteThread.java

@@ -1,9 +1,10 @@
 package cn.com.qmth.stmms.admin.thread;
 
-import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
-import java.util.Map;
+import java.util.Set;
 
+import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -22,7 +23,7 @@ public class QuestionDeleteThread implements Runnable {
 
     private LockService lockService;
 
-    private Map<Integer, String> map;
+    private Set<String> set;
 
     public QuestionDeleteThread(List<ExamQuestion> list, MarkService markService, LockService lockService) {
         this.list = list;
@@ -37,9 +38,9 @@ public class QuestionDeleteThread implements Runnable {
         }
         int examId = list.get(0).getExamId();
         String subjectCode = list.get(0).getSubjectCode();
-        map = new HashMap<Integer, String>();
-        for (ExamQuestion examQuestion : list) {
-            map.put(examQuestion.getMainNumber(), examQuestion.getSubNumber());
+        set = new HashSet<String>();
+        for (ExamQuestion question : list) {
+            set.add(getKey(question));
         }
         try {
             lockService.waitlock(LockType.EXAM_SUBJECT, examId, subjectCode);
@@ -49,10 +50,17 @@ public class QuestionDeleteThread implements Runnable {
             log.error("delete group error", e);
         } finally {
             lockService.unlock(LockType.EXAM_SUBJECT, examId, subjectCode);
-            for (Integer mainNumber : map.keySet()) {
-                lockService.unlock(LockType.QUESTION_DELETE, examId, subjectCode, mainNumber, map.get(mainNumber));
+            for (String key : set) {
+                String s[] = key.split("\t");
+                Integer mainNumber = Integer.parseInt(s[3]);
+                String subNumber = StringUtils.trimToEmpty(s[4]);
+                lockService.unlock(LockType.QUESTION_DELETE, examId, subjectCode, mainNumber, subNumber);
             }
         }
     }
 
+    protected String getKey(ExamQuestion question) {
+        return question.getExamId() + "\t" + question.getSubjectCode() + "\t" + question.isObjective() + "\t"
+                + question.getMainNumber() + "\t" + question.getSubNumber();
+    }
 }