|
@@ -1,6 +1,8 @@
|
|
|
package cn.com.qmth.stmms.admin.thread;
|
|
|
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
@@ -16,12 +18,12 @@ public class QuestionDeleteThread implements Runnable {
|
|
|
|
|
|
private List<ExamQuestion> list;
|
|
|
|
|
|
- private ExamQuestion question;
|
|
|
-
|
|
|
private MarkService markService;
|
|
|
|
|
|
private LockService lockService;
|
|
|
|
|
|
+ private Map<Integer, String> map;
|
|
|
+
|
|
|
public QuestionDeleteThread(List<ExamQuestion> list, MarkService markService, LockService lockService) {
|
|
|
this.list = list;
|
|
|
this.markService = markService;
|
|
@@ -33,17 +35,23 @@ public class QuestionDeleteThread implements Runnable {
|
|
|
if (list == null || list.isEmpty()) {
|
|
|
return;
|
|
|
}
|
|
|
+ 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());
|
|
|
+ }
|
|
|
try {
|
|
|
- question = list.get(0);
|
|
|
- lockService.waitlock(LockType.EXAM_SUBJECT, question.getExamId(), question.getSubjectCode());
|
|
|
- log.info("delete question examId=" + question.getExamId() + " subjectCode=" + question.getSubjectCode());
|
|
|
+ lockService.waitlock(LockType.EXAM_SUBJECT, examId, subjectCode);
|
|
|
+ log.info("delete question examId=" + examId + " subjectCode=" + subjectCode);
|
|
|
markService.deleteByQuestion(list);
|
|
|
} catch (Exception e) {
|
|
|
log.error("delete group error", e);
|
|
|
} finally {
|
|
|
- lockService.unlock(LockType.EXAM_SUBJECT, question.getExamId(), question.getSubjectCode());
|
|
|
- lockService.unlock(LockType.QUESTION_DELETE, question.getExamId(), question.getSubjectCode(),
|
|
|
- question.getMainNumber(), question.getSubNumber());
|
|
|
+ lockService.unlock(LockType.EXAM_SUBJECT, examId, subjectCode);
|
|
|
+ for (Integer mainNumber : map.keySet()) {
|
|
|
+ lockService.unlock(LockType.QUESTION_DELETE, examId, subjectCode, mainNumber, map.get(mainNumber));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|