|
@@ -14,11 +14,14 @@ import cn.com.qmth.stmms.common.annotation.RoleRequire;
|
|
|
import cn.com.qmth.stmms.common.domain.WebUser;
|
|
|
import cn.com.qmth.stmms.common.enums.*;
|
|
|
import cn.com.qmth.stmms.common.utils.RequestUtils;
|
|
|
+
|
|
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
+
|
|
|
import net.sf.json.JSONArray;
|
|
|
import net.sf.json.JSONObject;
|
|
|
import net.sf.json.JsonConfig;
|
|
|
+
|
|
|
import org.apache.commons.lang.StringEscapeUtils;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.slf4j.Logger;
|
|
@@ -35,6 +38,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
+
|
|
|
import java.util.*;
|
|
|
|
|
|
@Controller("markGroupController")
|
|
@@ -43,6 +47,8 @@ public class MarkGroupController extends BaseExamController {
|
|
|
|
|
|
protected static Logger log = LoggerFactory.getLogger(MarkGroupController.class);
|
|
|
|
|
|
+ private static final String NULL_PAPER_TYPE_PLACEHOLDER = "#";
|
|
|
+
|
|
|
@Autowired
|
|
|
private ExamSubjectService subjectService;
|
|
|
|
|
@@ -88,17 +94,16 @@ public class MarkGroupController extends BaseExamController {
|
|
|
}
|
|
|
List<MarkGroup> list = groupService.findByExamAndSubject(examId, subject.getCode());
|
|
|
for (MarkGroup group : list) {
|
|
|
- group.setQuestionList(questionService
|
|
|
- .findByExamAndSubjectAndObjectiveAndGroupNumber(examId, subject.getCode(), false,
|
|
|
- group.getNumber()));
|
|
|
- group.setMarkerCount(
|
|
|
- markerService.countByExamAndSubjectAndGroup(examId, subject.getCode(), group.getNumber()));
|
|
|
+ group.setQuestionList(questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId,
|
|
|
+ subject.getCode(), false, group.getNumber()));
|
|
|
+ group.setMarkerCount(markerService.countByExamAndSubjectAndGroup(examId, subject.getCode(),
|
|
|
+ group.getNumber()));
|
|
|
group.setCurrentCount(markService.applyCount(group));
|
|
|
- int percent =
|
|
|
- group.getLibraryCount() > 0 ? (int) (group.getMarkedCount() * 100.00 / group.getLibraryCount()) : 0;
|
|
|
+ int percent = group.getLibraryCount() > 0 ? (int) (group.getMarkedCount() * 100.00 / group
|
|
|
+ .getLibraryCount()) : 0;
|
|
|
group.setPercent(percent);
|
|
|
- group.setDeleting(lockService
|
|
|
- .isLocked(LockType.GROUP_DELETE, group.getExamId(), group.getSubjectCode(), group.getNumber()));
|
|
|
+ group.setDeleting(lockService.isLocked(LockType.GROUP_DELETE, group.getExamId(), group.getSubjectCode(),
|
|
|
+ group.getNumber()));
|
|
|
}
|
|
|
model.addAttribute("resultList", list);
|
|
|
model.addAttribute("subject", subject);
|
|
@@ -114,14 +119,13 @@ public class MarkGroupController extends BaseExamController {
|
|
|
@RequestParam(required = false) Boolean withDouble, @RequestParam(required = false) MarkStatus status) {
|
|
|
int examId = getSessionExamId(request);
|
|
|
JSONArray array = new JSONArray();
|
|
|
- List<MarkGroup> list = withDouble != null && withDouble ?
|
|
|
- groupService.findByExamAndSubjectWithDouble(examId, subjectCode) :
|
|
|
- (status != null ?
|
|
|
- groupService.findByExamAndSubjectAndStatus(examId, subjectCode, status) :
|
|
|
- groupService.findByExamAndSubject(examId, subjectCode));
|
|
|
+ List<MarkGroup> list = withDouble != null && withDouble ? groupService.findByExamAndSubjectWithDouble(examId,
|
|
|
+ subjectCode) : (status != null ? groupService
|
|
|
+ .findByExamAndSubjectAndStatus(examId, subjectCode, status) : groupService.findByExamAndSubject(examId,
|
|
|
+ subjectCode));
|
|
|
for (MarkGroup group : list) {
|
|
|
- group.setQuestionList(questionService
|
|
|
- .findByExamAndSubjectAndObjectiveAndGroupNumber(examId, subjectCode, false, group.getNumber()));
|
|
|
+ group.setQuestionList(questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId, subjectCode,
|
|
|
+ false, group.getNumber()));
|
|
|
JSONObject obj = new JSONObject();
|
|
|
obj.accumulate("number", group.getNumber());
|
|
|
obj.accumulate("title", group.getTitle());
|
|
@@ -260,12 +264,13 @@ public class MarkGroupController extends BaseExamController {
|
|
|
if (group != null) {
|
|
|
String pictureConfig = buildPictureConfig(group);
|
|
|
group.setPicList(pictureConfig);
|
|
|
- group.setQuestionList(questionService
|
|
|
- .findByExamAndSubjectAndObjectiveAndGroupNumber(examId, subjectCode, false, group.getNumber()));
|
|
|
+ group.setQuestionList(questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId, subjectCode,
|
|
|
+ false, group.getNumber()));
|
|
|
model.addAttribute("group", group);
|
|
|
- model.addAttribute("questions", questionService
|
|
|
- .findByExamAndSubjectAndObjectiveAndGroupNumber(group.getExamId(), group.getSubjectCode(), false,
|
|
|
- group.getNumber()));
|
|
|
+ model.addAttribute(
|
|
|
+ "questions",
|
|
|
+ questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(group.getExamId(),
|
|
|
+ group.getSubjectCode(), false, group.getNumber()));
|
|
|
model.addAttribute("pictureConfig", pictureConfig);
|
|
|
model.addAttribute("markModeList", MarkMode.values());
|
|
|
model.addAttribute("scorePolicyList", ScorePolicy.values());
|
|
@@ -287,8 +292,8 @@ public class MarkGroupController extends BaseExamController {
|
|
|
MarkGroup group = groupService.findOne(examId, subjectCode, number);
|
|
|
if (group != null) {
|
|
|
group.setPicList(buildPictureConfig(group));
|
|
|
- List<ExamQuestion> list = questionService
|
|
|
- .findByExamAndSubjectAndObjectiveAndGroupNumber(examId, subjectCode, false, number);
|
|
|
+ List<ExamQuestion> list = questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId,
|
|
|
+ subjectCode, false, number);
|
|
|
List<ExamQuestionDTO> questionList = new ArrayList<>();
|
|
|
Map<Integer, ExamQuestionDTO> mainMap = new HashMap<>();
|
|
|
for (ExamQuestion question : list) {
|
|
@@ -335,18 +340,23 @@ public class MarkGroupController extends BaseExamController {
|
|
|
RequestUtils.setLog(request, "开始删除分组,subjectCode:" + subjectCode + " number:" + number);
|
|
|
}
|
|
|
|
|
|
- // try {
|
|
|
- // lockService.waitlock(LockType.EXAM_SUBJECT, group.getExamId(), group.getSubjectCode());
|
|
|
- // lockService.waitlock(LockType.GROUP, group.getExamId(), group.getSubjectCode(), group.getNumber());
|
|
|
- // markService.deleteGroup(group);
|
|
|
- // RequestUtils.setLog(request, "删除成功,subjectCode:" + subjectCode + " number:" + number);
|
|
|
- // } catch (Exception e) {
|
|
|
- // log.error("delete group error", e);
|
|
|
- // throw new RuntimeException("删除大题失败", e);
|
|
|
- // } finally {
|
|
|
- // lockService.unlock(LockType.GROUP, group.getExamId(), group.getSubjectCode(), group.getNumber());
|
|
|
- // lockService.unlock(LockType.EXAM_SUBJECT, group.getExamId(), group.getSubjectCode());
|
|
|
- // }
|
|
|
+ // try {
|
|
|
+ // lockService.waitlock(LockType.EXAM_SUBJECT, group.getExamId(),
|
|
|
+ // group.getSubjectCode());
|
|
|
+ // lockService.waitlock(LockType.GROUP, group.getExamId(),
|
|
|
+ // group.getSubjectCode(), group.getNumber());
|
|
|
+ // markService.deleteGroup(group);
|
|
|
+ // RequestUtils.setLog(request, "删除成功,subjectCode:" + subjectCode +
|
|
|
+ // " number:" + number);
|
|
|
+ // } catch (Exception e) {
|
|
|
+ // log.error("delete group error", e);
|
|
|
+ // throw new RuntimeException("删除大题失败", e);
|
|
|
+ // } finally {
|
|
|
+ // lockService.unlock(LockType.GROUP, group.getExamId(),
|
|
|
+ // group.getSubjectCode(), group.getNumber());
|
|
|
+ // lockService.unlock(LockType.EXAM_SUBJECT, group.getExamId(),
|
|
|
+ // group.getSubjectCode());
|
|
|
+ // }
|
|
|
|
|
|
redirectAttributes.addAttribute("subjectCode", subjectCode);
|
|
|
redirectAttributes.addAttribute("number", number);
|
|
@@ -387,8 +397,8 @@ public class MarkGroupController extends BaseExamController {
|
|
|
dto.setScoreList(scoreList);
|
|
|
}
|
|
|
List<ExamQuestion> questionList = buildQuestionList(group, detailList);
|
|
|
- List<ExamQuestion> others = questionService
|
|
|
- .findByExamAndSubjectAndObjectiveAndGroupNumberNotEqual(examId, subjectCode, false, number);
|
|
|
+ List<ExamQuestion> others = questionService.findByExamAndSubjectAndObjectiveAndGroupNumberNotEqual(
|
|
|
+ examId, subjectCode, false, number);
|
|
|
Set<String> numbers = new HashSet<>();
|
|
|
Map<Integer, String> titles = new HashMap<>();
|
|
|
for (ExamQuestion question : others) {
|
|
@@ -402,8 +412,8 @@ public class MarkGroupController extends BaseExamController {
|
|
|
redirectAttributes.addAttribute("number", number);
|
|
|
return "redirect:/admin/exam/group/edit-full";
|
|
|
}
|
|
|
- if (titles.get(question.getMainNumber()) != null && !titles.get(question.getMainNumber())
|
|
|
- .equals(question.getMainTitle())) {
|
|
|
+ if (titles.get(question.getMainNumber()) != null
|
|
|
+ && !titles.get(question.getMainNumber()).equals(question.getMainTitle())) {
|
|
|
addMessage(redirectAttributes, "大题名称不一致");
|
|
|
redirectAttributes.addAttribute("subjectCode", subjectCode);
|
|
|
redirectAttributes.addAttribute("number", number);
|
|
@@ -412,8 +422,8 @@ public class MarkGroupController extends BaseExamController {
|
|
|
}
|
|
|
if (!questionList.isEmpty()) {
|
|
|
ScorePolicy policy = scorePolicy != null ? ScorePolicy.findByValue(scorePolicy) : null;
|
|
|
- ThirdPolicy third =
|
|
|
- thirdPolicy != null ? ThirdPolicy.findByValue(thirdPolicy) : ThirdPolicy.DISABLE;
|
|
|
+ ThirdPolicy third = thirdPolicy != null ? ThirdPolicy.findByValue(thirdPolicy)
|
|
|
+ : ThirdPolicy.DISABLE;
|
|
|
try {
|
|
|
lockService.waitlock(LockType.GROUP, true, group.getExamId(), group.getSubjectCode(),
|
|
|
group.getNumber());
|
|
@@ -429,8 +439,8 @@ public class MarkGroupController extends BaseExamController {
|
|
|
} else {
|
|
|
// simple update
|
|
|
List<Double> intervalScores = buildDoubleList(intervalScoreList);
|
|
|
- List<ExamQuestion> questionList = questionService
|
|
|
- .findByExamAndSubjectAndObjectiveAndGroupNumber(examId, subjectCode, false, number);
|
|
|
+ List<ExamQuestion> questionList = questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(
|
|
|
+ examId, subjectCode, false, number);
|
|
|
if (intervalScores.size() == questionList.size()) {
|
|
|
for (int i = 0; i < questionList.size(); i++) {
|
|
|
ExamQuestion q = questionList.get(i);
|
|
@@ -528,8 +538,8 @@ public class MarkGroupController extends BaseExamController {
|
|
|
}
|
|
|
dto.setScoreList(scoreList);
|
|
|
}
|
|
|
- List<ExamQuestion> current = questionService
|
|
|
- .findByExamAndSubjectAndObjectiveAndGroupNumberNotEqual(examId, subjectCode, false, number);
|
|
|
+ List<ExamQuestion> current = questionService.findByExamAndSubjectAndObjectiveAndGroupNumberNotEqual(
|
|
|
+ examId, subjectCode, false, number);
|
|
|
Set<String> numbers = new HashSet<>();
|
|
|
Map<Integer, String> titles = new HashMap<>();
|
|
|
for (ExamQuestion question : current) {
|
|
@@ -547,8 +557,8 @@ public class MarkGroupController extends BaseExamController {
|
|
|
redirectAttributes.addAttribute("subjectCode", subjectCode);
|
|
|
return "redirect:/admin/exam/group/add";
|
|
|
}
|
|
|
- if (titles.get(question.getMainNumber()) != null && !titles.get(question.getMainNumber())
|
|
|
- .equals(question.getMainTitle())) {
|
|
|
+ if (titles.get(question.getMainNumber()) != null
|
|
|
+ && !titles.get(question.getMainNumber()).equals(question.getMainTitle())) {
|
|
|
addMessage(redirectAttributes, "大题名称不一致");
|
|
|
redirectAttributes.addAttribute("subjectCode", subjectCode);
|
|
|
return "redirect:/admin/exam/group/add";
|
|
@@ -559,8 +569,8 @@ public class MarkGroupController extends BaseExamController {
|
|
|
.deleteByExamAndSubjectAndObjectiveAndGroupNumber(examId, subjectCode, false, number);
|
|
|
questionService.save(list);
|
|
|
groupService.save(group);
|
|
|
- subjectService
|
|
|
- .updateScore(examId, subjectCode, false, groupService.sumTotalScore(examId, subjectCode));
|
|
|
+ subjectService.updateScore(examId, subjectCode, false,
|
|
|
+ groupService.sumTotalScore(examId, subjectCode));
|
|
|
redirectAttributes.addAttribute("subjectCode", subjectCode);
|
|
|
return "redirect:/admin/exam/group";
|
|
|
} else {
|
|
@@ -610,7 +620,7 @@ public class MarkGroupController extends BaseExamController {
|
|
|
ObjectMapper mapper = new ObjectMapper();
|
|
|
json = mapper.writeValueAsString(group.getPictureConfigList());
|
|
|
} catch (JsonProcessingException e) {
|
|
|
- //e.printStackTrace();
|
|
|
+ // e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
return json;
|
|
@@ -630,6 +640,7 @@ public class MarkGroupController extends BaseExamController {
|
|
|
ExamQuestion question = new ExamQuestion();
|
|
|
question.setExamId(group.getExamId());
|
|
|
question.setSubjectCode(group.getSubjectCode());
|
|
|
+ question.setPaperType(NULL_PAPER_TYPE_PLACEHOLDER);
|
|
|
question.setMainTitle(detail.getMainTitle());
|
|
|
question.setMainNumber(detail.getMainNumber());
|
|
|
question.setSubNumber(detail.getSubNumber() + i);
|