|
@@ -229,37 +229,52 @@ public class MarkGroupController extends BaseExamController {
|
|
public String changeStatus(HttpServletRequest request, Model model, RedirectAttributes redirectAttributes,
|
|
public String changeStatus(HttpServletRequest request, Model model, RedirectAttributes redirectAttributes,
|
|
@RequestParam String subjectCode, @RequestParam Integer number, @RequestParam MarkStatus status) {
|
|
@RequestParam String subjectCode, @RequestParam Integer number, @RequestParam MarkStatus status) {
|
|
int examId = getSessionExamId(request);
|
|
int examId = getSessionExamId(request);
|
|
- MarkGroup group = groupService.findOne(examId, subjectCode, number);
|
|
|
|
- if (group == null) {
|
|
|
|
|
|
+ MarkGroup markGroup = groupService.findOne(examId, subjectCode, number);
|
|
|
|
+ if (markGroup == null) {
|
|
return "redirect:/admin/exam/mark";
|
|
return "redirect:/admin/exam/mark";
|
|
}
|
|
}
|
|
|
|
+ boolean allow = false;
|
|
|
|
+ if (markGroup.getStatus() == MarkStatus.TRIAL && status == MarkStatus.FORMAL) {
|
|
|
|
+ allow = true;
|
|
|
|
+ } else if (markGroup.getStatus() == MarkStatus.FORMAL && status == MarkStatus.FINISH
|
|
|
|
+ && markGroup.getLeftCount() == 0) {
|
|
|
|
+ allow = true;
|
|
|
|
+ } else if (markGroup.getStatus() == MarkStatus.FINISH && status == MarkStatus.FORMAL) {
|
|
|
|
+ allow = true;
|
|
|
|
+ }
|
|
|
|
+ if (!allow) {
|
|
|
|
+ redirectAttributes.addAttribute("message", "不能切换到指定的评卷状态");
|
|
|
|
+ redirectAttributes.addAttribute("subjectCode", subjectCode);
|
|
|
|
+ return "redirect:/admin/exam/group";
|
|
|
|
+ }
|
|
|
|
+ if (markGroup.getStatus() == MarkStatus.TRIAL && status == MarkStatus.FORMAL) {
|
|
|
|
+ List<MarkGroup> list = groupService.findByExamAndSubjectAndStatus(examId, subjectCode, MarkStatus.TRIAL);
|
|
|
|
+ for (MarkGroup group : list) {
|
|
|
|
+ updateStatus(group, status);
|
|
|
|
+ }
|
|
|
|
+ studentService.updateSubjectiveStatusAndScoreAndInspectorId(examId, subjectCode, SubjectiveStatus.UNMARK,
|
|
|
|
+ 0, null, null, null);
|
|
|
|
+ } else {
|
|
|
|
+ updateStatus(markGroup, status);
|
|
|
|
+ }
|
|
|
|
+ redirectAttributes.addAttribute("subjectCode", subjectCode);
|
|
|
|
+ return "redirect:/admin/exam/group";
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void updateStatus(MarkGroup group, MarkStatus status) {
|
|
try {
|
|
try {
|
|
lockService.waitlock(LockType.GROUP, group.getExamId(), group.getSubjectCode(), group.getNumber());
|
|
lockService.waitlock(LockType.GROUP, group.getExamId(), group.getSubjectCode(), group.getNumber());
|
|
- boolean allow = false;
|
|
|
|
- if (group.getStatus() == MarkStatus.TRIAL && status == MarkStatus.FORMAL) {
|
|
|
|
- allow = true;
|
|
|
|
- } else if (group.getStatus() == MarkStatus.FORMAL && status == MarkStatus.FINISH
|
|
|
|
- && group.getLeftCount() == 0) {
|
|
|
|
- allow = true;
|
|
|
|
- } else if (group.getStatus() == MarkStatus.FINISH && status == MarkStatus.FORMAL) {
|
|
|
|
- allow = true;
|
|
|
|
- }
|
|
|
|
- if (allow) {
|
|
|
|
- if (groupService.updateStatus(examId, subjectCode, number, status, group.getStatus())
|
|
|
|
- && status == MarkStatus.FORMAL) {
|
|
|
|
- // 切换到正评成功后刷新任务数量
|
|
|
|
- group.setStatus(status);
|
|
|
|
- markService.updateLibraryCount(group);
|
|
|
|
- markService.updateMarkedCount(group);
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- redirectAttributes.addAttribute("message", "不能切换到指定的评卷状态");
|
|
|
|
|
|
+ if (groupService.updateStatus(group.getExamId(), group.getSubjectCode(), group.getNumber(), status,
|
|
|
|
+ group.getStatus())
|
|
|
|
+ && status == MarkStatus.FORMAL) {
|
|
|
|
+ // 切换到正评成功后刷新任务数量
|
|
|
|
+ group.setStatus(status);
|
|
|
|
+ markService.updateLibraryCount(group);
|
|
|
|
+ markService.updateMarkedCount(group);
|
|
}
|
|
}
|
|
} finally {
|
|
} finally {
|
|
lockService.unlock(LockType.GROUP, group.getExamId(), group.getSubjectCode(), group.getNumber());
|
|
lockService.unlock(LockType.GROUP, group.getExamId(), group.getSubjectCode(), group.getNumber());
|
|
}
|
|
}
|
|
- redirectAttributes.addAttribute("subjectCode", subjectCode);
|
|
|
|
- return "redirect:/admin/exam/group";
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@RequestMapping("/add")
|
|
@RequestMapping("/add")
|