|
@@ -147,11 +147,12 @@ public class MarkGroupController extends BaseExamController {
|
|
|
List<ExamQuestion> qList = questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId,
|
|
|
subject.getCode(), false, group.getNumber());
|
|
|
group.setQuestionList(qList);
|
|
|
- group.setMarkerCount(markerService.countByExamAndSubjectAndGroup(examId, subject.getCode(),
|
|
|
- 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;
|
|
|
if (group.getMarkedCount() > 0 && percent == 0) {
|
|
|
percent = 1;
|
|
|
} else if (group.getLeftCount() > 0 && percent == 100) {
|
|
@@ -161,8 +162,8 @@ public class MarkGroupController extends BaseExamController {
|
|
|
group.setDeleting(lockService.isLocked(LockType.GROUP_DELETE, group.getExamId(), group.getSubjectCode(),
|
|
|
group.getNumber()));
|
|
|
if (!qList.isEmpty() && group.isSelective()) {
|
|
|
- SelectiveGroup selectiveGroup = selectiveGroupService.findOne(examId, group.getSubjectCode(), qList
|
|
|
- .get(0).getMainNumber());
|
|
|
+ SelectiveGroup selectiveGroup = selectiveGroupService.findOne(examId, group.getSubjectCode(),
|
|
|
+ qList.get(0).getMainNumber());
|
|
|
if (selectiveGroup != null) {
|
|
|
group.setSelectiveIndex(selectiveGroup.getSelectiveIndex());
|
|
|
}
|
|
@@ -176,16 +177,68 @@ public class MarkGroupController extends BaseExamController {
|
|
|
return "modules/exam/groupList";
|
|
|
}
|
|
|
|
|
|
+ @Logging(menu = "大题管理查询(评卷员绑定)", type = LogType.QUERY)
|
|
|
+ @RequestMapping("/markerGroup")
|
|
|
+ public String listForMarker(HttpServletRequest request, Model model,
|
|
|
+ @RequestParam(required = false) String subjectCode, @RequestParam(required = false) String userIds) {
|
|
|
+ WebUser wu = RequestUtils.getWebUser(request);
|
|
|
+ int examId = getSessionExamId(request);
|
|
|
+ List<ExamSubject> subjectList = getExamSubject(examId, wu);
|
|
|
+ ExamSubject subject = null;
|
|
|
+ if (StringUtils.isNotBlank(subjectCode)) {
|
|
|
+ subject = subjectService.find(examId, subjectCode);
|
|
|
+ } else if (!subjectList.isEmpty()) {
|
|
|
+ subject = subjectList.get(0);
|
|
|
+ }
|
|
|
+ if (subject == null) {
|
|
|
+ return "modules/exam/markerGroup";
|
|
|
+ }
|
|
|
+ List<MarkGroup> list = groupService.findByExamAndSubject(examId, subject.getCode());
|
|
|
+ for (MarkGroup group : list) {
|
|
|
+ List<ExamQuestion> qList = questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId,
|
|
|
+ subject.getCode(), false, group.getNumber());
|
|
|
+ group.setQuestionList(qList);
|
|
|
+ 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;
|
|
|
+ if (group.getMarkedCount() > 0 && percent == 0) {
|
|
|
+ percent = 1;
|
|
|
+ } else if (group.getLeftCount() > 0 && percent == 100) {
|
|
|
+ percent = 99;
|
|
|
+ }
|
|
|
+ group.setPercent(percent);
|
|
|
+ group.setDeleting(lockService.isLocked(LockType.GROUP_DELETE, group.getExamId(), group.getSubjectCode(),
|
|
|
+ group.getNumber()));
|
|
|
+ if (!qList.isEmpty() && group.isSelective()) {
|
|
|
+ SelectiveGroup selectiveGroup = selectiveGroupService.findOne(examId, group.getSubjectCode(),
|
|
|
+ qList.get(0).getMainNumber());
|
|
|
+ if (selectiveGroup != null) {
|
|
|
+ group.setSelectiveIndex(selectiveGroup.getSelectiveIndex());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ model.addAttribute("resultList", list);
|
|
|
+ model.addAttribute("subject", subject);
|
|
|
+ model.addAttribute("userIds", userIds);
|
|
|
+ model.addAttribute("subjectList", subjectList);
|
|
|
+ Exam exam = examService.findById(examId);
|
|
|
+ model.addAttribute("examType", exam.getType());
|
|
|
+ return "modules/exam/markerGroup";
|
|
|
+ }
|
|
|
+
|
|
|
@RequestMapping("/query")
|
|
|
@ResponseBody
|
|
|
public JSONArray query(HttpServletRequest request, @RequestParam String subjectCode,
|
|
|
@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()));
|
|
@@ -301,8 +354,7 @@ public class MarkGroupController extends BaseExamController {
|
|
|
try {
|
|
|
lockService.waitlock(LockType.GROUP, group.getExamId(), group.getSubjectCode(), group.getNumber());
|
|
|
if (groupService.updateStatus(group.getExamId(), group.getSubjectCode(), group.getNumber(), status,
|
|
|
- group.getStatus())
|
|
|
- && status == MarkStatus.FORMAL) {
|
|
|
+ group.getStatus()) && status == MarkStatus.FORMAL) {
|
|
|
// 切换到正评成功后刷新任务数量
|
|
|
group.setStatus(status);
|
|
|
markService.updateLibraryCount(group);
|
|
@@ -363,10 +415,8 @@ public class MarkGroupController extends BaseExamController {
|
|
|
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());
|
|
@@ -400,8 +450,9 @@ public class MarkGroupController extends BaseExamController {
|
|
|
examQuestion.setSelectivePart(map.get(examQuestion.getMainNumber()).getSelectivePart());
|
|
|
}
|
|
|
}
|
|
|
- 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;
|
|
|
if (group.getMarkedCount() > 0 && percent == 0) {
|
|
|
percent = 1;
|
|
|
} else if (group.getLeftCount() > 0 && percent == 100) {
|
|
@@ -488,7 +539,8 @@ public class MarkGroupController extends BaseExamController {
|
|
|
@RequestParam(required = false, defaultValue = "false") Boolean sheetView,
|
|
|
@RequestParam(required = false, defaultValue = "false") Boolean enableAllZero,
|
|
|
@RequestParam(required = false) Integer[] questionIds,
|
|
|
- @RequestParam(required = false) String intervalScoreList, @RequestParam(required = false) String deleteCode) {
|
|
|
+ @RequestParam(required = false) String intervalScoreList,
|
|
|
+ @RequestParam(required = false) String deleteCode) {
|
|
|
int examId = getSessionExamId(request);
|
|
|
Exam exam = examService.findById(examId);
|
|
|
MarkGroup group = groupService.findOne(examId, subjectCode, number);
|
|
@@ -516,8 +568,8 @@ public class MarkGroupController extends BaseExamController {
|
|
|
for (Integer questionId : questionIds) {
|
|
|
ExamQuestion question = questionService.findById(questionId);
|
|
|
questionList.add(question);
|
|
|
- if (selective == false
|
|
|
- && selectiveGroupService.findOne(examId, subjectCode, question.getMainNumber()) != null) {
|
|
|
+ if (selective == false && selectiveGroupService.findOne(examId, subjectCode,
|
|
|
+ question.getMainNumber()) != null) {
|
|
|
selective = true;
|
|
|
}
|
|
|
}
|
|
@@ -540,8 +592,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);
|
|
@@ -670,8 +722,8 @@ public class MarkGroupController extends BaseExamController {
|
|
|
question.setGroupNumber(number);
|
|
|
list.add(question);
|
|
|
totalScore = totalScore.add(BigDecimal.valueOf(question.getTotalScore()));
|
|
|
- if (selective == false
|
|
|
- && selectiveGroupService.findOne(examId, subjectCode, question.getMainNumber()) != null) {
|
|
|
+ if (selective == false && selectiveGroupService.findOne(examId, subjectCode,
|
|
|
+ question.getMainNumber()) != null) {
|
|
|
selective = true;
|
|
|
}
|
|
|
}
|
|
@@ -683,14 +735,14 @@ public class MarkGroupController extends BaseExamController {
|
|
|
trialCount = subject.getTrialCount();
|
|
|
}
|
|
|
group = new MarkGroup(examId, subjectCode, number, picConfigList, totalScore.doubleValue(),
|
|
|
- doubleRate, arbitrateThreshold, scorePolicy, markMode, trialCount, sheetView,
|
|
|
- enableAllZero, thirdPolicy, selective);
|
|
|
+ doubleRate, arbitrateThreshold, scorePolicy, markMode, trialCount, sheetView, enableAllZero,
|
|
|
+ thirdPolicy, selective);
|
|
|
// clear and replace exam_question
|
|
|
questionService.save(list);
|
|
|
groupService.save(group);
|
|
|
|
|
|
- studentService
|
|
|
- .updateSubjectiveStatusAndScore(examId, subjectCode, SubjectiveStatus.UNMARK, 0, null);
|
|
|
+ studentService.updateSubjectiveStatusAndScore(examId, subjectCode, SubjectiveStatus.UNMARK, 0,
|
|
|
+ null);
|
|
|
inspectHistoryService.deleteByExamIdAndSubjectCode(examId, subjectCode);
|
|
|
redirectAttributes.addAttribute("subjectCode", subjectCode);
|
|
|
return "redirect:/admin/exam/group";
|