|
@@ -1,6 +1,7 @@
|
|
|
package cn.com.qmth.stmms.admin.exam;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.LinkedList;
|
|
|
import java.util.List;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
@@ -21,6 +22,7 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
|
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
|
|
|
+import cn.com.qmth.stmms.admin.vo.ExamQuestionVO;
|
|
|
import cn.com.qmth.stmms.biz.campus.model.Campus;
|
|
|
import cn.com.qmth.stmms.biz.campus.service.CampusService;
|
|
|
import cn.com.qmth.stmms.biz.exam.model.ExamQuestion;
|
|
@@ -95,8 +97,8 @@ public class MarkGroupController extends BaseExamController {
|
|
|
}
|
|
|
List<MarkGroup> list = groupService.findByExamAndSubject(examId, subjectCode);
|
|
|
for (MarkGroup group : list) {
|
|
|
- group.setScoreList(questionService.findByExamAndSubjectAndObjectiveAndMainNumber(examId, subjectCode, false,
|
|
|
- group.getNumber()));
|
|
|
+ group.setQuestionList(questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId, subjectCode,
|
|
|
+ false, group.getNumber()));
|
|
|
group.setMarkerCount(markerService.countByExamAndSubjectAndGroup(examId, subjectCode, group.getNumber()));
|
|
|
group.setCurrentCount(markService.applyCount(group));
|
|
|
int percent = group.getLibraryCount() > 0
|
|
@@ -251,7 +253,7 @@ public class MarkGroupController extends BaseExamController {
|
|
|
String pictureConfig = buildPictureConfig(group);
|
|
|
group.setPicList(pictureConfig);
|
|
|
model.addAttribute("group", group);
|
|
|
- model.addAttribute("questions", questionService.findByExamAndSubjectAndObjectiveAndMainNumber(
|
|
|
+ model.addAttribute("questions", questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(
|
|
|
group.getExamId(), group.getSubjectCode(), false, group.getNumber()));
|
|
|
model.addAttribute("pictureConfig", pictureConfig);
|
|
|
model.addAttribute("markModeList", MarkMode.values());
|
|
@@ -272,8 +274,8 @@ public class MarkGroupController extends BaseExamController {
|
|
|
if (group != null) {
|
|
|
String pictureConfig = buildPictureConfig(group);
|
|
|
group.setPicList(pictureConfig);
|
|
|
- group.setScoreList(
|
|
|
- questionService.findByExamAndSubjectAndObjectiveAndMainNumber(examId, subjectCode, false, number));
|
|
|
+ group.setQuestionList(
|
|
|
+ questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId, subjectCode, false, number));
|
|
|
model.addAttribute("group", group);
|
|
|
model.addAttribute("pictureConfig", pictureConfig);
|
|
|
model.addAttribute("markModeList", MarkMode.values());
|
|
@@ -322,7 +324,7 @@ public class MarkGroupController extends BaseExamController {
|
|
|
@RequestParam(required = false) Integer trialCount, @RequestParam(required = false) boolean sheetView) {
|
|
|
int examId = getSessionExamId(request);
|
|
|
MarkGroup group = groupService.findOne(examId, subjectCode, number);
|
|
|
- List<ExamQuestion> questionList = questionService.findByExamAndSubjectAndObjectiveAndMainNumber(examId,
|
|
|
+ List<ExamQuestion> questionList = questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId,
|
|
|
subjectCode, false, number);
|
|
|
if (group != null) {
|
|
|
// quick update
|
|
@@ -343,7 +345,7 @@ public class MarkGroupController extends BaseExamController {
|
|
|
}
|
|
|
title = StringUtils.trimToNull(title);
|
|
|
if (title != null) {
|
|
|
- groupService.updateTitle(examId, subjectCode, number, title);
|
|
|
+ questionService.updateMainTitle(examId, subjectCode, false, number, title);
|
|
|
}
|
|
|
if (doubleRate != null) {
|
|
|
groupService.updateDoubleRate(examId, subjectCode, number, doubleRate);
|
|
@@ -388,15 +390,19 @@ public class MarkGroupController extends BaseExamController {
|
|
|
@RoleRequire(Role.SCHOOL_ADMIN)
|
|
|
public String insert(HttpServletRequest request, Model model, RedirectAttributes redirectAttributes,
|
|
|
@RequestParam String subjectCode, @RequestParam Integer number,
|
|
|
- @RequestParam(required = false) String title, @RequestParam(required = false) String picList,
|
|
|
- @RequestParam(required = false) String scoreList, @RequestParam(required = false) Double doubleRate,
|
|
|
+ @RequestParam(required = false) String questionDetail, @RequestParam(required = false) String picList,
|
|
|
+ @RequestParam(required = false) Double doubleRate,
|
|
|
@RequestParam(required = false) Double arbitrateThreshold,
|
|
|
@RequestParam(required = false) Integer scorePolicy, @RequestParam(required = false) String markMode,
|
|
|
@RequestParam(required = false) Integer trialCount, @RequestParam(required = false) boolean sheetView) {
|
|
|
int examId = getSessionExamId(request);
|
|
|
MarkGroup group = groupService.findOne(examId, subjectCode, number);
|
|
|
if (group != null) {
|
|
|
- addMessage(redirectAttributes, "大题号不能重复");
|
|
|
+ addMessage(redirectAttributes, "评卷分组序号不能重复");
|
|
|
+ redirectAttributes.addAttribute("subjectCode", subjectCode);
|
|
|
+ return "redirect:/admin/exam/group/add";
|
|
|
+ } else if (StringUtils.isBlank(questionDetail)) {
|
|
|
+ addMessage(redirectAttributes, "大题详情必须设置");
|
|
|
redirectAttributes.addAttribute("subjectCode", subjectCode);
|
|
|
return "redirect:/admin/exam/group/add";
|
|
|
} else if (StringUtils.isBlank(picList)) {
|
|
@@ -405,31 +411,42 @@ public class MarkGroupController extends BaseExamController {
|
|
|
return "redirect:/admin/exam/group/add";
|
|
|
} else {
|
|
|
// create group
|
|
|
+ // build picList
|
|
|
picList = StringEscapeUtils.unescapeHtml(picList);
|
|
|
JSONArray array = JSONArray.fromObject(picList);
|
|
|
- List<PictureConfigItem> list = JSONArray.toList(array, new PictureConfigItem(), new JsonConfig());
|
|
|
- group = new MarkGroup(examId, subjectCode, number, StringUtils.trimToNull(title), list, 0d, doubleRate,
|
|
|
- arbitrateThreshold, scorePolicy, markMode, trialCount, sheetView);
|
|
|
- List<Double> scores = buildDoubleList(scoreList);
|
|
|
- if (group.getTitle() != null && group.getPicList() != null && scores.size() > 0) {
|
|
|
+ List<PictureConfigItem> picConfigList = JSONArray.toList(array, new PictureConfigItem(), new JsonConfig());
|
|
|
+ // build questionDetail
|
|
|
+ questionDetail = StringEscapeUtils.unescapeHtml(questionDetail);
|
|
|
+ array = JSONArray.fromObject(picList);
|
|
|
+ List<ExamQuestionVO> detailList = JSONArray.toList(array, new ExamQuestionVO(), new JsonConfig());
|
|
|
+
|
|
|
+ if (picConfigList != null && detailList != null && picConfigList.size() > 0 && detailList.size() > 0) {
|
|
|
+ group = new MarkGroup(examId, subjectCode, number, picConfigList, 0d, doubleRate, arbitrateThreshold,
|
|
|
+ scorePolicy, markMode, trialCount, sheetView);
|
|
|
// clear and replace exam_question
|
|
|
- questionService.deleteByExamAndSubjectAndObjectiveAndMainNumber(examId, subjectCode, false, number);
|
|
|
- int i = 0;
|
|
|
+ questionService.deleteByExamAndSubjectAndObjectiveAndGroupNumber(examId, subjectCode, false, number);
|
|
|
+ List<ExamQuestion> list = new LinkedList<>();
|
|
|
double totalScore = 0d;
|
|
|
- for (Double score : scores) {
|
|
|
- i++;
|
|
|
- totalScore += score;
|
|
|
- ExamQuestion question = new ExamQuestion();
|
|
|
- question.setExamId(examId);
|
|
|
- question.setSubjectCode(subjectCode);
|
|
|
- question.setMainTitle(group.getTitle());
|
|
|
- question.setMainNumber(number);
|
|
|
- question.setSubNumber(i);
|
|
|
- question.setObjective(false);
|
|
|
- question.setTotalScore(score);
|
|
|
- question.setIntervalScore(1d);
|
|
|
- questionService.save(question);
|
|
|
+ for (ExamQuestionVO detail : detailList) {
|
|
|
+ int i = 0;
|
|
|
+ List<Double> scores = buildDoubleList(detail.getScoreList());
|
|
|
+ for (Double score : scores) {
|
|
|
+ i++;
|
|
|
+ totalScore += score;
|
|
|
+ ExamQuestion question = new ExamQuestion();
|
|
|
+ question.setExamId(examId);
|
|
|
+ question.setSubjectCode(subjectCode);
|
|
|
+ question.setMainTitle(detail.getMainTitle());
|
|
|
+ question.setMainNumber(detail.getMainNumber());
|
|
|
+ question.setSubNumber(i);
|
|
|
+ question.setGroupNumber(number);
|
|
|
+ question.setObjective(false);
|
|
|
+ question.setTotalScore(score);
|
|
|
+ question.setIntervalScore(1d);
|
|
|
+ list.add(question);
|
|
|
+ }
|
|
|
}
|
|
|
+ questionService.save(list);
|
|
|
group.setTotalScore(totalScore);
|
|
|
groupService.save(group);
|
|
|
subjectService.updateScore(examId, subjectCode, false, groupService.sumTotalScore(examId, subjectCode));
|