|
@@ -3,11 +3,14 @@ package cn.com.qmth.stmms.ms.marking.api;
|
|
|
import cn.com.qmth.stmms.ms.commons.web.PageableDTO;
|
|
|
import cn.com.qmth.stmms.ms.core.domain.ExamQuestion;
|
|
|
import cn.com.qmth.stmms.ms.core.domain.MarkStage;
|
|
|
+import cn.com.qmth.stmms.ms.core.domain.Paper;
|
|
|
import cn.com.qmth.stmms.ms.core.domain.enums.TrialEnum;
|
|
|
import cn.com.qmth.stmms.ms.core.domain.task.MarkTask;
|
|
|
+import cn.com.qmth.stmms.ms.core.domain.user.MarkUser;
|
|
|
import cn.com.qmth.stmms.ms.core.repository.ExamQuestionRepo;
|
|
|
import cn.com.qmth.stmms.ms.core.repository.LevelRepo;
|
|
|
import cn.com.qmth.stmms.ms.core.repository.MarkTaskRepo;
|
|
|
+import cn.com.qmth.stmms.ms.core.repository.PaperRepo;
|
|
|
import cn.com.qmth.stmms.ms.marking.assembler.MarkTaskAssembler;
|
|
|
import cn.com.qmth.stmms.ms.marking.dto.MarkTaskDTO;
|
|
|
import cn.com.qmth.stmms.ms.marking.service.MarkingService;
|
|
@@ -18,8 +21,12 @@ import org.springframework.data.jpa.domain.Specification;
|
|
|
import org.springframework.http.HttpStatus;
|
|
|
import org.springframework.http.ResponseEntity;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
+import org.springframework.web.context.request.RequestContextHolder;
|
|
|
+import org.springframework.web.context.request.ServletRequestAttributes;
|
|
|
|
|
|
import javax.persistence.criteria.Predicate;
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import javax.servlet.http.HttpSession;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
@@ -45,6 +52,9 @@ public class MarkTaskApi {
|
|
|
@Autowired
|
|
|
ExamQuestionRepo examQuestionRepo;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ PaperRepo paperRepo;
|
|
|
+
|
|
|
/**
|
|
|
* 评卷员的评卷任务
|
|
|
*
|
|
@@ -62,7 +72,7 @@ public class MarkTaskApi {
|
|
|
@RequestParam(required = false) String level,
|
|
|
@RequestParam(required = false) String sn,
|
|
|
@RequestParam Long questionId,
|
|
|
- Pageable pageable) {
|
|
|
+ Pageable pageable) throws Exception {
|
|
|
List<MarkTaskDTO> markTaskDTOs = new ArrayList<>();
|
|
|
|
|
|
Specification<MarkTask> specification = (root, query, builder) -> {
|
|
@@ -87,17 +97,17 @@ public class MarkTaskApi {
|
|
|
if (Objects.isNull(markTasks) || markTasks.getContent().size() == 0) {
|
|
|
if (Objects.nonNull(isSample) && isSample) {
|
|
|
ExamQuestion examQuestion = examQuestionRepo.findOne(questionId);
|
|
|
- specification = (root, query, builder) -> {
|
|
|
- List<Predicate> predicates = new ArrayList<>();
|
|
|
- if (isSample != null) {
|
|
|
- predicates.add(builder.equal(root.get("paper").get("isSample"), isSample));
|
|
|
- }
|
|
|
- predicates.add(builder.equal(root.get("paper").get("isMissing"), false));
|
|
|
- predicates.add(builder.equal(root.get("paper").get("subject"), examQuestion.getSubject()));
|
|
|
- predicates.add(builder.equal(root.get("paper").get("test"), TrialEnum.START_TRIAL.getId()));
|
|
|
- return builder.and(predicates.toArray(new Predicate[predicates.size()]));
|
|
|
- };
|
|
|
- markTasks = markTaskRepo.findAll(specification, pageable);
|
|
|
+ Paper paper = paperRepo.findTopByLevelAndIsSampleAndIsMissingAndSubjectAndTestOrderByUpdatedOnDesc(level, isSample, false, examQuestion.getSubject(), TrialEnum.START_TRIAL.getId());
|
|
|
+ ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
|
|
|
+ HttpServletRequest request = attributes.getRequest();
|
|
|
+ HttpSession session = request.getSession();
|
|
|
+ String token = (String) session.getAttribute("token");
|
|
|
+ if (Objects.isNull(token)) {
|
|
|
+ throw new Exception("请先登录");
|
|
|
+ }
|
|
|
+ MarkUser markUser = (MarkUser) session.getAttribute("markUser");
|
|
|
+ MarkTask markTask = new MarkTask(markUser, paper, stage, 1L);
|
|
|
+ markTaskDTOs.add(markTaskAssembler.toDTO(markTask));
|
|
|
}
|
|
|
}
|
|
|
markTasks.getContent().forEach(m -> {
|