|
@@ -1,54 +1,79 @@
|
|
package cn.com.qmth.stmms.ms.marking.api;
|
|
package cn.com.qmth.stmms.ms.marking.api;
|
|
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
+import java.util.Collections;
|
|
|
|
+import java.util.Comparator;
|
|
|
|
+import java.util.HashMap;
|
|
|
|
+import java.util.HashSet;
|
|
|
|
+import java.util.List;
|
|
|
|
+import java.util.Map;
|
|
|
|
+import java.util.Objects;
|
|
|
|
+import java.util.Set;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
+
|
|
|
|
+import javax.persistence.criteria.CriteriaBuilder;
|
|
|
|
+import javax.persistence.criteria.Join;
|
|
|
|
+import javax.persistence.criteria.JoinType;
|
|
|
|
+import javax.persistence.criteria.Predicate;
|
|
|
|
+
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.data.domain.Page;
|
|
|
|
+import org.springframework.data.domain.PageRequest;
|
|
|
|
+import org.springframework.data.domain.Pageable;
|
|
|
|
+import org.springframework.data.domain.Sort;
|
|
|
|
+import org.springframework.data.jpa.domain.Specification;
|
|
|
|
+import org.springframework.http.HttpStatus;
|
|
|
|
+import org.springframework.http.ResponseEntity;
|
|
|
|
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
|
|
+import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
|
+import org.springframework.jdbc.core.RowMapper;
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
+import org.springframework.util.StringUtils;
|
|
|
|
+import org.springframework.web.bind.annotation.GetMapping;
|
|
|
|
+import org.springframework.web.bind.annotation.PathVariable;
|
|
|
|
+import org.springframework.web.bind.annotation.RequestBody;
|
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
|
+import org.springframework.web.bind.annotation.RequestMethod;
|
|
|
|
+import org.springframework.web.bind.annotation.RequestParam;
|
|
|
|
+import org.springframework.web.bind.annotation.RestController;
|
|
|
|
+
|
|
import cn.com.qmth.stmms.ms.commons.config.ScoreConfig;
|
|
import cn.com.qmth.stmms.ms.commons.config.ScoreConfig;
|
|
import cn.com.qmth.stmms.ms.commons.lock.LockService;
|
|
import cn.com.qmth.stmms.ms.commons.lock.LockService;
|
|
import cn.com.qmth.stmms.ms.commons.lock.LockType;
|
|
import cn.com.qmth.stmms.ms.commons.lock.LockType;
|
|
import cn.com.qmth.stmms.ms.commons.utils.SqlUtil;
|
|
import cn.com.qmth.stmms.ms.commons.utils.SqlUtil;
|
|
import cn.com.qmth.stmms.ms.commons.web.PageableDTO;
|
|
import cn.com.qmth.stmms.ms.commons.web.PageableDTO;
|
|
import cn.com.qmth.stmms.ms.core.cache.ParamCache;
|
|
import cn.com.qmth.stmms.ms.core.cache.ParamCache;
|
|
-import cn.com.qmth.stmms.ms.core.domain.*;
|
|
|
|
|
|
+import cn.com.qmth.stmms.ms.core.domain.ExamQuestion;
|
|
|
|
+import cn.com.qmth.stmms.ms.core.domain.Level;
|
|
|
|
+import cn.com.qmth.stmms.ms.core.domain.MarkStage;
|
|
|
|
+import cn.com.qmth.stmms.ms.core.domain.MarkSubject;
|
|
|
|
+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.enums.TrialEnum;
|
|
import cn.com.qmth.stmms.ms.core.domain.task.MarkTask;
|
|
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.domain.user.MarkUser;
|
|
import cn.com.qmth.stmms.ms.core.domain.user.Role;
|
|
import cn.com.qmth.stmms.ms.core.domain.user.Role;
|
|
-import cn.com.qmth.stmms.ms.core.repository.*;
|
|
|
|
|
|
+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.MarkSubjectRepo;
|
|
|
|
+import cn.com.qmth.stmms.ms.core.repository.MarkTaskRepo;
|
|
|
|
+import cn.com.qmth.stmms.ms.core.repository.MarkUserRepo;
|
|
|
|
+import cn.com.qmth.stmms.ms.core.repository.PaperRepo;
|
|
import cn.com.qmth.stmms.ms.core.vo.Subject;
|
|
import cn.com.qmth.stmms.ms.core.vo.Subject;
|
|
import cn.com.qmth.stmms.ms.marking.assembler.MarkTaskAssembler;
|
|
import cn.com.qmth.stmms.ms.marking.assembler.MarkTaskAssembler;
|
|
import cn.com.qmth.stmms.ms.marking.assembler.PaperAssembler;
|
|
import cn.com.qmth.stmms.ms.marking.assembler.PaperAssembler;
|
|
|
|
+import cn.com.qmth.stmms.ms.marking.dto.LevelCountDTO;
|
|
import cn.com.qmth.stmms.ms.marking.dto.LevelDetailDTO;
|
|
import cn.com.qmth.stmms.ms.marking.dto.LevelDetailDTO;
|
|
import cn.com.qmth.stmms.ms.marking.dto.MarkTaskDTO;
|
|
import cn.com.qmth.stmms.ms.marking.dto.MarkTaskDTO;
|
|
import cn.com.qmth.stmms.ms.marking.dto.PaperDTO;
|
|
import cn.com.qmth.stmms.ms.marking.dto.PaperDTO;
|
|
import cn.com.qmth.stmms.ms.marking.service.MarkingService;
|
|
import cn.com.qmth.stmms.ms.marking.service.MarkingService;
|
|
-import org.slf4j.Logger;
|
|
|
|
-import org.slf4j.LoggerFactory;
|
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
-import org.springframework.data.domain.Page;
|
|
|
|
-import org.springframework.data.domain.PageRequest;
|
|
|
|
-import org.springframework.data.domain.Pageable;
|
|
|
|
-import org.springframework.data.domain.Sort;
|
|
|
|
-import org.springframework.data.jpa.domain.Specification;
|
|
|
|
-import org.springframework.http.HttpStatus;
|
|
|
|
-import org.springframework.http.ResponseEntity;
|
|
|
|
-import org.springframework.transaction.annotation.Transactional;
|
|
|
|
-import org.springframework.util.StringUtils;
|
|
|
|
-import org.springframework.web.bind.annotation.*;
|
|
|
|
-
|
|
|
|
-import javax.persistence.criteria.CriteriaBuilder;
|
|
|
|
-import javax.persistence.criteria.Join;
|
|
|
|
-import javax.persistence.criteria.JoinType;
|
|
|
|
-import javax.persistence.criteria.Predicate;
|
|
|
|
-import java.math.BigDecimal;
|
|
|
|
-import java.util.*;
|
|
|
|
-import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 评卷任务数据api
|
|
|
|
- * Created by zhengmin on 2016/10/12.
|
|
|
|
|
|
+ * 评卷任务数据api Created by zhengmin on 2016/10/12.
|
|
*/
|
|
*/
|
|
@RestController
|
|
@RestController
|
|
@RequestMapping("api/marktasks")
|
|
@RequestMapping("api/marktasks")
|
|
public class MarkTaskApi {
|
|
public class MarkTaskApi {
|
|
- private static Logger LOGGER = LoggerFactory.getLogger(MarkTaskApi.class);
|
|
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
private MarkTaskRepo markTaskRepo;
|
|
private MarkTaskRepo markTaskRepo;
|
|
@@ -86,27 +111,44 @@ public class MarkTaskApi {
|
|
@Autowired
|
|
@Autowired
|
|
LockService lockService;
|
|
LockService lockService;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private JdbcTemplate jdbcTemplate;
|
|
|
|
+
|
|
|
|
+ @RequestMapping(value = "count/level", method = RequestMethod.GET)
|
|
|
|
+ public List<LevelCountDTO> totalScores(@RequestParam Long markerId, @RequestParam Long questionId) {
|
|
|
|
+ MarkUser marker = markUserRepo.findOne(markerId);
|
|
|
|
+ Long batchNo = paperRepo.findMaxScoreBatchNoByWorkIdAndSubject(marker.getWorkId(), marker.getSubject());
|
|
|
|
+
|
|
|
|
+ RowMapper<LevelCountDTO> rowMapper = new BeanPropertyRowMapper<LevelCountDTO>(LevelCountDTO.class);
|
|
|
|
+ String sql = "SELECT m.level levelCode,count(1) taskCount from mark_task m inner join paper p on m.paper_id = p.id "
|
|
|
|
+ + "and p.is_shift = 0 and p.is_shift_score = 0 " + "and p.score_batch_no = " + batchNo
|
|
|
|
+ + " where m.question_id = " + questionId + " and m.marker_id = " + markerId + " and m.stage = "
|
|
|
|
+ + MarkStage.SCORE.ordinal() + " and m.result is null";
|
|
|
|
+ List<LevelCountDTO> ret = jdbcTemplate.query(sql, rowMapper);
|
|
|
|
+ return ret;
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 评卷员的评卷任务
|
|
* 评卷员的评卷任务
|
|
*
|
|
*
|
|
- * @param markerId 评卷员用户id
|
|
|
|
- * @param stage 评卷阶段
|
|
|
|
- * @param level 档位
|
|
|
|
- * @param sn 密号
|
|
|
|
- * @param questionId 试题id
|
|
|
|
|
|
+ * @param markerId
|
|
|
|
+ * 评卷员用户id
|
|
|
|
+ * @param stage
|
|
|
|
+ * 评卷阶段
|
|
|
|
+ * @param level
|
|
|
|
+ * 档位
|
|
|
|
+ * @param sn
|
|
|
|
+ * 密号
|
|
|
|
+ * @param questionId
|
|
|
|
+ * 试题id
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@RequestMapping(method = RequestMethod.GET)
|
|
@RequestMapping(method = RequestMethod.GET)
|
|
- public PageableDTO list(@RequestParam Long markerId,
|
|
|
|
- @RequestParam Long workId,
|
|
|
|
- @RequestParam MarkStage stage,
|
|
|
|
- @RequestParam(required = false) Boolean isSample,
|
|
|
|
- @RequestParam(defaultValue = "false") Boolean reject,
|
|
|
|
- @RequestParam(required = false) String level,
|
|
|
|
- @RequestParam(required = false) String sn,
|
|
|
|
- @RequestParam Long questionId,
|
|
|
|
- @RequestParam(required = false) String areaCode,
|
|
|
|
- Pageable pageable) throws Exception {
|
|
|
|
|
|
+ public PageableDTO list(@RequestParam Long markerId, @RequestParam Long workId, @RequestParam MarkStage stage,
|
|
|
|
+ @RequestParam(required = false) Boolean isSample, @RequestParam(defaultValue = "false") Boolean reject,
|
|
|
|
+ @RequestParam(required = false) String level, @RequestParam(required = false) String sn,
|
|
|
|
+ @RequestParam Long questionId, @RequestParam(required = false) String areaCode, Pageable pageable)
|
|
|
|
+ throws Exception {
|
|
List<MarkTaskDTO> markTaskDTOs = new ArrayList<>();
|
|
List<MarkTaskDTO> markTaskDTOs = new ArrayList<>();
|
|
MarkUser markUser = markUserRepo.findOne(markerId);
|
|
MarkUser markUser = markUserRepo.findOne(markerId);
|
|
Long batchNo = null;
|
|
Long batchNo = null;
|
|
@@ -146,7 +188,7 @@ public class MarkTaskApi {
|
|
onPredicates.add(builder.equal(join.get("isShiftScore"), false));
|
|
onPredicates.add(builder.equal(join.get("isShiftScore"), false));
|
|
}
|
|
}
|
|
} else if (stage == MarkStage.LEVEL) {
|
|
} else if (stage == MarkStage.LEVEL) {
|
|
- //查询
|
|
|
|
|
|
+ // 查询
|
|
predicates.add(builder.equal(root.get("result"), level));
|
|
predicates.add(builder.equal(root.get("result"), level));
|
|
if (levelShowAllPaper == 0) {
|
|
if (levelShowAllPaper == 0) {
|
|
if (!Objects.isNull(finalBatchNo)) {
|
|
if (!Objects.isNull(finalBatchNo)) {
|
|
@@ -172,7 +214,7 @@ public class MarkTaskApi {
|
|
predicates.add(builder.equal(root.get("isRejected"), reject));
|
|
predicates.add(builder.equal(root.get("isRejected"), reject));
|
|
}
|
|
}
|
|
onPredicates.add(builder.equal(join.get("active"), true));
|
|
onPredicates.add(builder.equal(join.get("active"), true));
|
|
- //过滤考区
|
|
|
|
|
|
+ // 过滤考区
|
|
if (Objects.nonNull(areaCode)) {
|
|
if (Objects.nonNull(areaCode)) {
|
|
onPredicates.add(builder.equal(join.get("areaCode"), areaCode));
|
|
onPredicates.add(builder.equal(join.get("areaCode"), areaCode));
|
|
}
|
|
}
|
|
@@ -183,14 +225,15 @@ public class MarkTaskApi {
|
|
Pageable pageable1 = new PageRequest(pageable.getPageNumber(), pageable.getPageSize(), sort);
|
|
Pageable pageable1 = new PageRequest(pageable.getPageNumber(), pageable.getPageSize(), sort);
|
|
Page<MarkTask> markTasks = markTaskRepo.findAll(specification, pageable1);
|
|
Page<MarkTask> markTasks = markTaskRepo.findAll(specification, pageable1);
|
|
|
|
|
|
-
|
|
|
|
if (Objects.isNull(markTasks) || markTasks.getContent().size() == 0) {
|
|
if (Objects.isNull(markTasks) || markTasks.getContent().size() == 0) {
|
|
if (Objects.nonNull(isSample) && isSample) {
|
|
if (Objects.nonNull(isSample) && isSample) {
|
|
ExamQuestion examQuestion = examQuestionRepo.findOne(questionId);
|
|
ExamQuestion examQuestion = examQuestionRepo.findOne(questionId);
|
|
if (examQuestion.getTest() == TrialEnum.DEFAULT.getId()) {
|
|
if (examQuestion.getTest() == TrialEnum.DEFAULT.getId()) {
|
|
- List<Paper> paperList = paperRepo.findSample(level, isSample, false, examQuestion.getSubject().name(), TrialEnum.DEFAULT.getId(), TrialEnum.START_FORMAL.getId(), examQuestion.getAreaCode(), examQuestion.getWorkId());
|
|
|
|
|
|
+ List<Paper> paperList = paperRepo.findSample(level, isSample, false,
|
|
|
|
+ examQuestion.getSubject().name(), TrialEnum.DEFAULT.getId(), TrialEnum.START_FORMAL.getId(),
|
|
|
|
+ examQuestion.getAreaCode(), examQuestion.getWorkId());
|
|
if (Objects.nonNull(paperList) && paperList.size() > 0) {
|
|
if (Objects.nonNull(paperList) && paperList.size() > 0) {
|
|
-// MarkUser markUser = markUserRepo.findOne(markerId);
|
|
|
|
|
|
+ // MarkUser markUser = markUserRepo.findOne(markerId);
|
|
for (Paper p : paperList) {
|
|
for (Paper p : paperList) {
|
|
MarkTask markTask = new MarkTask(markUser, p, stage, 1L);
|
|
MarkTask markTask = new MarkTask(markUser, p, stage, 1L);
|
|
markTaskDTOs.add(markTaskAssembler.toDTO(markTask));
|
|
markTaskDTOs.add(markTaskAssembler.toDTO(markTask));
|
|
@@ -203,38 +246,41 @@ public class MarkTaskApi {
|
|
markTaskDTOs.add(markTaskAssembler.toDTO(m));
|
|
markTaskDTOs.add(markTaskAssembler.toDTO(m));
|
|
});
|
|
});
|
|
if (stage == MarkStage.SCORE && Objects.isNull(level)) {
|
|
if (stage == MarkStage.SCORE && Objects.isNull(level)) {
|
|
-// if (Objects.nonNull(scoreConfig) && Objects.nonNull(scoreConfig.getTaskSort()) && Objects.equals("paper", scoreConfig.getTaskSort())) {
|
|
|
|
-// Collections.sort(markTaskDTOs, Comparator.comparing(MarkTaskDTO::getPaperId));
|
|
|
|
-// } else {
|
|
|
|
-// randomSeqNewSort(markTaskDTOs);
|
|
|
|
-// }
|
|
|
|
|
|
+ // if (Objects.nonNull(scoreConfig) &&
|
|
|
|
+ // Objects.nonNull(scoreConfig.getTaskSort()) &&
|
|
|
|
+ // Objects.equals("paper", scoreConfig.getTaskSort())) {
|
|
|
|
+ // Collections.sort(markTaskDTOs,
|
|
|
|
+ // Comparator.comparing(MarkTaskDTO::getPaperId));
|
|
|
|
+ // } else {
|
|
|
|
+ // randomSeqNewSort(markTaskDTOs);
|
|
|
|
+ // }
|
|
} else if (stage == MarkStage.LEVEL && Objects.isNull(level)) {
|
|
} else if (stage == MarkStage.LEVEL && Objects.isNull(level)) {
|
|
randomSeqNewSort(markTaskDTOs);
|
|
randomSeqNewSort(markTaskDTOs);
|
|
}
|
|
}
|
|
- return new PageableDTO(markTaskDTOs, markTasks.getTotalElements(), markTasks.getTotalPages(), pageable.getPageNumber());
|
|
|
|
|
|
+ return new PageableDTO(markTaskDTOs, markTasks.getTotalElements(), markTasks.getTotalPages(),
|
|
|
|
+ pageable.getPageNumber());
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
* 评卷员的评卷任务
|
|
* 评卷员的评卷任务
|
|
*
|
|
*
|
|
- * @param markerId 评卷员用户id
|
|
|
|
- * @param questionId 试题id
|
|
|
|
|
|
+ * @param markerId
|
|
|
|
+ * 评卷员用户id
|
|
|
|
+ * @param questionId
|
|
|
|
+ * 试题id
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@RequestMapping(value = "/shift", method = RequestMethod.GET)
|
|
@RequestMapping(value = "/shift", method = RequestMethod.GET)
|
|
- public PageableDTO list(@RequestParam Long markerId,
|
|
|
|
- @RequestParam(required = false) Long workId,
|
|
|
|
- @RequestParam(required = false) Boolean isShift,
|
|
|
|
- @RequestParam(required = false) Boolean isShiftScore,
|
|
|
|
- @RequestParam Long questionId,
|
|
|
|
- Pageable pageable) {
|
|
|
|
|
|
+ public PageableDTO list(@RequestParam Long markerId, @RequestParam(required = false) Long workId,
|
|
|
|
+ @RequestParam(required = false) Boolean isShift, @RequestParam(required = false) Boolean isShiftScore,
|
|
|
|
+ @RequestParam Long questionId, Pageable pageable) {
|
|
List<MarkTaskDTO> markTaskDTOs = new ArrayList<>();
|
|
List<MarkTaskDTO> markTaskDTOs = new ArrayList<>();
|
|
Specification<MarkTask> specification = (root, query, builder) -> {
|
|
Specification<MarkTask> specification = (root, query, builder) -> {
|
|
List<Predicate> predicates = new ArrayList<>();
|
|
List<Predicate> predicates = new ArrayList<>();
|
|
predicates.add(builder.equal(root.get("questionId"), questionId));
|
|
predicates.add(builder.equal(root.get("questionId"), questionId));
|
|
predicates.add(builder.equal(root.get("markerId"), markerId));
|
|
predicates.add(builder.equal(root.get("markerId"), markerId));
|
|
if (isShift != null) {
|
|
if (isShift != null) {
|
|
- //查询
|
|
|
|
|
|
+ // 查询
|
|
predicates.add(builder.equal(root.get("paper").get("isShift"), isShift));
|
|
predicates.add(builder.equal(root.get("paper").get("isShift"), isShift));
|
|
if (isShift) {
|
|
if (isShift) {
|
|
predicates.add(builder.equal(root.get("stage"), MarkStage.LEVEL));
|
|
predicates.add(builder.equal(root.get("stage"), MarkStage.LEVEL));
|
|
@@ -255,22 +301,22 @@ public class MarkTaskApi {
|
|
Page<MarkTask> markTasks = markTaskRepo.findAll(specification, pageable1);
|
|
Page<MarkTask> markTasks = markTaskRepo.findAll(specification, pageable1);
|
|
|
|
|
|
markTasks.getContent().forEach(m -> markTaskDTOs.add(markTaskAssembler.toShiftDTO(m)));
|
|
markTasks.getContent().forEach(m -> markTaskDTOs.add(markTaskAssembler.toShiftDTO(m)));
|
|
- return new PageableDTO(markTaskDTOs, markTasks.getTotalElements(), markTasks.getTotalPages(), pageable.getPageNumber());
|
|
|
|
|
|
+ return new PageableDTO(markTaskDTOs, markTasks.getTotalElements(), markTasks.getTotalPages(),
|
|
|
|
+ pageable.getPageNumber());
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
* 评卷员的输分试卷
|
|
* 评卷员的输分试卷
|
|
*
|
|
*
|
|
- * @param markerId 评卷员用户id
|
|
|
|
- * @param questionId 试题id
|
|
|
|
|
|
+ * @param markerId
|
|
|
|
+ * 评卷员用户id
|
|
|
|
+ * @param questionId
|
|
|
|
+ * 试题id
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@RequestMapping(value = "/manualScore", method = RequestMethod.GET)
|
|
@RequestMapping(value = "/manualScore", method = RequestMethod.GET)
|
|
- public PageableDTO listManualScore(@RequestParam Long markerId,
|
|
|
|
- @RequestParam(required = false) Long workId,
|
|
|
|
- @RequestParam Subject subject,
|
|
|
|
- @RequestParam Long questionId,
|
|
|
|
- Pageable pageable) {
|
|
|
|
|
|
+ public PageableDTO listManualScore(@RequestParam Long markerId, @RequestParam(required = false) Long workId,
|
|
|
|
+ @RequestParam Subject subject, @RequestParam Long questionId, Pageable pageable) {
|
|
List<MarkTaskDTO> markTaskDTOs = new ArrayList<>();
|
|
List<MarkTaskDTO> markTaskDTOs = new ArrayList<>();
|
|
Specification<MarkTask> specification = (root, query, builder) -> {
|
|
Specification<MarkTask> specification = (root, query, builder) -> {
|
|
List<Predicate> predicates = new ArrayList<>();
|
|
List<Predicate> predicates = new ArrayList<>();
|
|
@@ -291,25 +337,28 @@ public class MarkTaskApi {
|
|
Page<MarkTask> markTasks = markTaskRepo.findAll(specification, pageable1);
|
|
Page<MarkTask> markTasks = markTaskRepo.findAll(specification, pageable1);
|
|
|
|
|
|
markTasks.getContent().forEach(m -> markTaskDTOs.add(markTaskAssembler.toManualDTO(m)));
|
|
markTasks.getContent().forEach(m -> markTaskDTOs.add(markTaskAssembler.toManualDTO(m)));
|
|
- return new PageableDTO(markTaskDTOs, markTasks.getTotalElements(), markTasks.getTotalPages(), pageable.getPageNumber());
|
|
|
|
|
|
+ return new PageableDTO(markTaskDTOs, markTasks.getTotalElements(), markTasks.getTotalPages(),
|
|
|
|
+ pageable.getPageNumber());
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
* 评卷员的标记试卷查询
|
|
* 评卷员的标记试卷查询
|
|
*
|
|
*
|
|
- * @param markerId 评卷员ID
|
|
|
|
- * @param workId 工作ID
|
|
|
|
- * @param subject 科目
|
|
|
|
- * @param questionId 考区ID
|
|
|
|
- * @param pageable 分页
|
|
|
|
|
|
+ * @param markerId
|
|
|
|
+ * 评卷员ID
|
|
|
|
+ * @param workId
|
|
|
|
+ * 工作ID
|
|
|
|
+ * @param subject
|
|
|
|
+ * 科目
|
|
|
|
+ * @param questionId
|
|
|
|
+ * 考区ID
|
|
|
|
+ * @param pageable
|
|
|
|
+ * 分页
|
|
*/
|
|
*/
|
|
@GetMapping("/markedPapers")
|
|
@GetMapping("/markedPapers")
|
|
- public PageableDTO listMarkedPapers(@RequestParam(required = false) Long workId,
|
|
|
|
- @RequestParam Long markerId,
|
|
|
|
- @RequestParam Subject subject,
|
|
|
|
- @RequestParam MarkStage stage,
|
|
|
|
- @RequestParam Long questionId,
|
|
|
|
- Pageable pageable) {
|
|
|
|
|
|
+ public PageableDTO listMarkedPapers(@RequestParam(required = false) Long workId, @RequestParam Long markerId,
|
|
|
|
+ @RequestParam Subject subject, @RequestParam MarkStage stage, @RequestParam Long questionId,
|
|
|
|
+ Pageable pageable) {
|
|
List<MarkTaskDTO> markTaskDTOs = new ArrayList<>();
|
|
List<MarkTaskDTO> markTaskDTOs = new ArrayList<>();
|
|
Specification<MarkTask> specification = (root, query, builder) -> {
|
|
Specification<MarkTask> specification = (root, query, builder) -> {
|
|
List<Predicate> predicates = new ArrayList<>();
|
|
List<Predicate> predicates = new ArrayList<>();
|
|
@@ -335,7 +384,8 @@ public class MarkTaskApi {
|
|
Page<MarkTask> markTasks = markTaskRepo.findAll(specification, pageable1);
|
|
Page<MarkTask> markTasks = markTaskRepo.findAll(specification, pageable1);
|
|
|
|
|
|
markTasks.getContent().forEach(m -> markTaskDTOs.add(markTaskAssembler.toManualDTO(m)));
|
|
markTasks.getContent().forEach(m -> markTaskDTOs.add(markTaskAssembler.toManualDTO(m)));
|
|
- return new PageableDTO(markTaskDTOs, markTasks.getTotalElements(), markTasks.getTotalPages(), pageable.getPageNumber());
|
|
|
|
|
|
+ return new PageableDTO(markTaskDTOs, markTasks.getTotalElements(), markTasks.getTotalPages(),
|
|
|
|
+ pageable.getPageNumber());
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -359,8 +409,10 @@ public class MarkTaskApi {
|
|
/**
|
|
/**
|
|
* 提交评卷任务
|
|
* 提交评卷任务
|
|
*
|
|
*
|
|
- * @param markTask 评卷你任务id
|
|
|
|
- * @param body 评卷内容
|
|
|
|
|
|
+ * @param markTask
|
|
|
|
+ * 评卷你任务id
|
|
|
|
+ * @param body
|
|
|
|
+ * 评卷内容
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@RequestMapping(value = "{markTask}", method = RequestMethod.PATCH)
|
|
@RequestMapping(value = "{markTask}", method = RequestMethod.PATCH)
|
|
@@ -374,38 +426,40 @@ public class MarkTaskApi {
|
|
return new ResponseEntity(HttpStatus.BAD_REQUEST);
|
|
return new ResponseEntity(HttpStatus.BAD_REQUEST);
|
|
}
|
|
}
|
|
switch (stage) {
|
|
switch (stage) {
|
|
- case LEVEL:
|
|
|
|
- try {
|
|
|
|
- lockService.waitlock(LockType.LEVEL, markTask.getPaper().getId());
|
|
|
|
- markingService.levelMark(markTask, result);
|
|
|
|
- } catch (Exception e) {
|
|
|
|
- throw new RuntimeException("分档异常");
|
|
|
|
- } finally {
|
|
|
|
- lockService.unlock(LockType.LEVEL, markTask.getPaper().getId());
|
|
|
|
- }
|
|
|
|
- break;
|
|
|
|
- case SCORE:
|
|
|
|
- Integer score = Integer.parseInt(result);
|
|
|
|
- //是否手工输入分数
|
|
|
|
- String manualScore = body.get("manualScore");
|
|
|
|
- markTask.setManualScore(StringUtils.isEmpty(manualScore) ? 0 : Integer.parseInt(manualScore));
|
|
|
|
- try {
|
|
|
|
- lockService.waitlock(LockType.SCORE, markTask.getPaper().getId());
|
|
|
|
- markingService.scoring(markTask, score);
|
|
|
|
- } catch (Exception e) {
|
|
|
|
- throw new RuntimeException("打分异常");
|
|
|
|
- } finally {
|
|
|
|
- lockService.unlock(LockType.SCORE, markTask.getPaper().getId());
|
|
|
|
- }
|
|
|
|
- break;
|
|
|
|
|
|
+ case LEVEL:
|
|
|
|
+ try {
|
|
|
|
+ lockService.waitlock(LockType.LEVEL, markTask.getPaper().getId());
|
|
|
|
+ markingService.levelMark(markTask, result);
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ throw new RuntimeException("分档异常");
|
|
|
|
+ } finally {
|
|
|
|
+ lockService.unlock(LockType.LEVEL, markTask.getPaper().getId());
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case SCORE:
|
|
|
|
+ Integer score = Integer.parseInt(result);
|
|
|
|
+ // 是否手工输入分数
|
|
|
|
+ String manualScore = body.get("manualScore");
|
|
|
|
+ markTask.setManualScore(StringUtils.isEmpty(manualScore) ? 0 : Integer.parseInt(manualScore));
|
|
|
|
+ try {
|
|
|
|
+ lockService.waitlock(LockType.SCORE, markTask.getPaper().getId());
|
|
|
|
+ markingService.scoring(markTask, score);
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ throw new RuntimeException("打分异常");
|
|
|
|
+ } finally {
|
|
|
|
+ lockService.unlock(LockType.SCORE, markTask.getPaper().getId());
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
- return new ResponseEntity(markTaskAssembler.toDTO(markTask, oldRejected, oldShift, oldShiftScore), HttpStatus.OK);
|
|
|
|
|
|
+ return new ResponseEntity(markTaskAssembler.toDTO(markTask, oldRejected, oldShift, oldShiftScore),
|
|
|
|
+ HttpStatus.OK);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
* 批量提交评卷任务
|
|
* 批量提交评卷任务
|
|
*
|
|
*
|
|
- * @param body 评卷内容
|
|
|
|
|
|
+ * @param body
|
|
|
|
+ * 评卷内容
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@RequestMapping(value = "batch", method = RequestMethod.PATCH)
|
|
@RequestMapping(value = "batch", method = RequestMethod.PATCH)
|
|
@@ -427,22 +481,30 @@ public class MarkTaskApi {
|
|
return new ResponseEntity(HttpStatus.BAD_REQUEST);
|
|
return new ResponseEntity(HttpStatus.BAD_REQUEST);
|
|
}
|
|
}
|
|
switch (stage) {
|
|
switch (stage) {
|
|
- case LEVEL:
|
|
|
|
- try {
|
|
|
|
- lockService.waitlock(LockType.LEVEL, markTask.getPaper().getId());
|
|
|
|
- markingService.levelMark(markTask, result);
|
|
|
|
- } catch (Exception e) {
|
|
|
|
- throw new RuntimeException("分档异常");
|
|
|
|
- } finally {
|
|
|
|
- lockService.unlock(LockType.LEVEL, markTask.getPaper().getId());
|
|
|
|
- }
|
|
|
|
- break;
|
|
|
|
- case SCORE:
|
|
|
|
- Integer score = Integer.parseInt(result);
|
|
|
|
- synchronized (this) {
|
|
|
|
- markingService.scoring(markTask, score);
|
|
|
|
- }
|
|
|
|
- break;
|
|
|
|
|
|
+ case LEVEL:
|
|
|
|
+ try {
|
|
|
|
+ lockService.waitlock(LockType.LEVEL, markTask.getPaper().getId());
|
|
|
|
+ markingService.levelMark(markTask, result);
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ throw new RuntimeException("分档异常");
|
|
|
|
+ } finally {
|
|
|
|
+ lockService.unlock(LockType.LEVEL, markTask.getPaper().getId());
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case SCORE:
|
|
|
|
+ Integer score = Integer.parseInt(result);
|
|
|
|
+ // 是否手工输入分数
|
|
|
|
+ String manualScore = body.get("manualScore");
|
|
|
|
+ markTask.setManualScore(StringUtils.isEmpty(manualScore) ? 0 : Integer.parseInt(manualScore));
|
|
|
|
+ try {
|
|
|
|
+ lockService.waitlock(LockType.SCORE, markTask.getPaper().getId());
|
|
|
|
+ markingService.scoring(markTask, score);
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ throw new RuntimeException("打分异常");
|
|
|
|
+ } finally {
|
|
|
|
+ lockService.unlock(LockType.SCORE, markTask.getPaper().getId());
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
MarkTaskDTO markTaskDTO = markTaskAssembler.toDTO(markTask, oldRejected, oldShift, oldShiftScore);
|
|
MarkTaskDTO markTaskDTO = markTaskAssembler.toDTO(markTask, oldRejected, oldShift, oldShiftScore);
|
|
list.add(markTaskDTO);
|
|
list.add(markTaskDTO);
|
|
@@ -454,7 +516,8 @@ public class MarkTaskApi {
|
|
/**
|
|
/**
|
|
* 跳过评卷任务
|
|
* 跳过评卷任务
|
|
*
|
|
*
|
|
- * @param markTaskId 评卷你任务id
|
|
|
|
|
|
+ * @param markTaskId
|
|
|
|
+ * 评卷你任务id
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@RequestMapping(value = "{markTaskId}/skip", method = RequestMethod.POST)
|
|
@RequestMapping(value = "{markTaskId}/skip", method = RequestMethod.POST)
|
|
@@ -466,12 +529,12 @@ public class MarkTaskApi {
|
|
/**
|
|
/**
|
|
* 标记任务
|
|
* 标记任务
|
|
*
|
|
*
|
|
- * @param markTaskId 评卷你任务id
|
|
|
|
|
|
+ * @param markTaskId
|
|
|
|
+ * 评卷你任务id
|
|
*/
|
|
*/
|
|
@RequestMapping(value = "/mark_task", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/mark_task", method = RequestMethod.POST)
|
|
@Transactional
|
|
@Transactional
|
|
- public Object markTask(@RequestParam Long markTaskId,
|
|
|
|
- @RequestParam Boolean isMark) {
|
|
|
|
|
|
+ public Object markTask(@RequestParam Long markTaskId, @RequestParam Boolean isMark) {
|
|
markTaskRepo.updateMarkTaskMarkById(markTaskId, isMark);
|
|
markTaskRepo.updateMarkTaskMarkById(markTaskId, isMark);
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
@@ -486,10 +549,8 @@ public class MarkTaskApi {
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@RequestMapping(value = "/reviewPaper", method = RequestMethod.GET)
|
|
@RequestMapping(value = "/reviewPaper", method = RequestMethod.GET)
|
|
- public List<MarkTaskDTO> reviewPaper(@RequestParam Long markerId,
|
|
|
|
- @RequestParam MarkStage stage,
|
|
|
|
- @RequestParam Long questionId,
|
|
|
|
- @RequestParam(required = false) String areaCode) {
|
|
|
|
|
|
+ public List<MarkTaskDTO> reviewPaper(@RequestParam Long markerId, @RequestParam MarkStage stage,
|
|
|
|
+ @RequestParam Long questionId, @RequestParam(required = false) String areaCode) {
|
|
List<MarkTaskDTO> markTaskDTOs = new ArrayList<>();
|
|
List<MarkTaskDTO> markTaskDTOs = new ArrayList<>();
|
|
Sort sort = new Sort(Sort.Direction.DESC, "updatedOn");
|
|
Sort sort = new Sort(Sort.Direction.DESC, "updatedOn");
|
|
Pageable pageable = new PageRequest(0, 5, sort);
|
|
Pageable pageable = new PageRequest(0, 5, sort);
|
|
@@ -511,12 +572,12 @@ public class MarkTaskApi {
|
|
predicates.add(builder.equal(root.get("markerId"), markerId));
|
|
predicates.add(builder.equal(root.get("markerId"), markerId));
|
|
predicates.add(builder.equal(root.get("stage"), stage));
|
|
predicates.add(builder.equal(root.get("stage"), stage));
|
|
if (stage == MarkStage.LEVEL) {
|
|
if (stage == MarkStage.LEVEL) {
|
|
- //查询
|
|
|
|
|
|
+ // 查询
|
|
if (!Objects.isNull(finalBatchNo)) {
|
|
if (!Objects.isNull(finalBatchNo)) {
|
|
predicates.add(builder.equal(root.get("paper").get("batchNo"), finalBatchNo));
|
|
predicates.add(builder.equal(root.get("paper").get("batchNo"), finalBatchNo));
|
|
}
|
|
}
|
|
predicates.add(builder.isNotNull(root.get("result")));
|
|
predicates.add(builder.isNotNull(root.get("result")));
|
|
- //分档需要过滤标准卷
|
|
|
|
|
|
+ // 分档需要过滤标准卷
|
|
predicates.add(builder.equal(root.get("paper").get("isSample"), false));
|
|
predicates.add(builder.equal(root.get("paper").get("isSample"), false));
|
|
} else if (stage == MarkStage.SCORE) {
|
|
} else if (stage == MarkStage.SCORE) {
|
|
|
|
|
|
@@ -525,7 +586,7 @@ public class MarkTaskApi {
|
|
}
|
|
}
|
|
predicates.add(builder.isNotNull(root.get("result")));
|
|
predicates.add(builder.isNotNull(root.get("result")));
|
|
}
|
|
}
|
|
- //过滤考区
|
|
|
|
|
|
+ // 过滤考区
|
|
if (Objects.nonNull(areaCode)) {
|
|
if (Objects.nonNull(areaCode)) {
|
|
predicates.add(builder.equal(root.get("paper").get("areaCode"), areaCode));
|
|
predicates.add(builder.equal(root.get("paper").get("areaCode"), areaCode));
|
|
}
|
|
}
|
|
@@ -539,9 +600,8 @@ public class MarkTaskApi {
|
|
}
|
|
}
|
|
|
|
|
|
@RequestMapping(value = "/kzzReviewPaper", method = RequestMethod.GET)
|
|
@RequestMapping(value = "/kzzReviewPaper", method = RequestMethod.GET)
|
|
- public List<PaperDTO> reviewPaper(@RequestParam Long workId,
|
|
|
|
- @RequestParam Subject subject,
|
|
|
|
- @RequestParam Long questionId) {
|
|
|
|
|
|
+ public List<PaperDTO> reviewPaper(@RequestParam Long workId, @RequestParam Subject subject,
|
|
|
|
+ @RequestParam Long questionId) {
|
|
MarkSubject markSubject = markSubjectRepo.findOne(workId + "-" + subject);
|
|
MarkSubject markSubject = markSubjectRepo.findOne(workId + "-" + subject);
|
|
Specification<Paper> specification;
|
|
Specification<Paper> specification;
|
|
if (MarkStage.LEVEL.equals(markSubject.getStage())) {
|
|
if (MarkStage.LEVEL.equals(markSubject.getStage())) {
|
|
@@ -562,10 +622,13 @@ public class MarkTaskApi {
|
|
return query.where(Pre_And, Pre_Or).getRestriction();
|
|
return query.where(Pre_And, Pre_Or).getRestriction();
|
|
};
|
|
};
|
|
} else {
|
|
} else {
|
|
- List<MarkTask> markTasks = markTaskRepo.findByWorkIdAndQuestionIdAndStageAndManualScore(workId, questionId, MarkStage.SCORE, 1);
|
|
|
|
- List<Long> paperIds = markTasks.stream().map(m -> m.getPaper().getId()).distinct().collect(Collectors.toList());
|
|
|
|
|
|
+ List<MarkTask> markTasks = markTaskRepo.findByWorkIdAndQuestionIdAndStageAndManualScore(workId, questionId,
|
|
|
|
+ MarkStage.SCORE, 1);
|
|
|
|
+ List<Long> paperIds = markTasks.stream().map(m -> m.getPaper().getId()).distinct()
|
|
|
|
+ .collect(Collectors.toList());
|
|
List<MarkTask> markTaskList = markTaskRepo.findByPaperIdInAndStage(paperIds, MarkStage.SCORE);
|
|
List<MarkTask> markTaskList = markTaskRepo.findByPaperIdInAndStage(paperIds, MarkStage.SCORE);
|
|
- Map<Long, List<MarkTask>> markTaskMap = markTaskList.stream().collect(Collectors.groupingBy(m -> m.getPaper().getId()));
|
|
|
|
|
|
+ Map<Long, List<MarkTask>> markTaskMap = markTaskList.stream()
|
|
|
|
+ .collect(Collectors.groupingBy(m -> m.getPaper().getId()));
|
|
Set<Long> paperIdSet = new HashSet();
|
|
Set<Long> paperIdSet = new HashSet();
|
|
for (Map.Entry<Long, List<MarkTask>> entry : markTaskMap.entrySet()) {
|
|
for (Map.Entry<Long, List<MarkTask>> entry : markTaskMap.entrySet()) {
|
|
long count = entry.getValue().stream().filter(m -> Objects.isNull(m.getResult())).count();
|
|
long count = entry.getValue().stream().filter(m -> Objects.isNull(m.getResult())).count();
|
|
@@ -602,7 +665,6 @@ public class MarkTaskApi {
|
|
return paperList;
|
|
return paperList;
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
/**
|
|
/**
|
|
* 分档详情
|
|
* 分档详情
|
|
*
|
|
*
|
|
@@ -612,16 +674,17 @@ public class MarkTaskApi {
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@RequestMapping(value = "/levelStatDetail", method = RequestMethod.GET)
|
|
@RequestMapping(value = "/levelStatDetail", method = RequestMethod.GET)
|
|
- public List<LevelDetailDTO> levelStatDetail(@RequestParam Long workId,
|
|
|
|
- @RequestParam Subject subject,
|
|
|
|
- @RequestParam(required = false) Long questionId) {
|
|
|
|
|
|
+ public List<LevelDetailDTO> levelStatDetail(@RequestParam Long workId, @RequestParam Subject subject,
|
|
|
|
+ @RequestParam(required = false) Long questionId) {
|
|
|
|
|
|
List<Level> levels = levelRepo.findByWorkIdOrderByCode(workId);
|
|
List<Level> levels = levelRepo.findByWorkIdOrderByCode(workId);
|
|
List<Paper> papers;
|
|
List<Paper> papers;
|
|
if (questionId == null) {
|
|
if (questionId == null) {
|
|
- papers = paperRepo.findByWorkIdAndSubjectAndIsMissingAndTest(workId, subject, false, TrialEnum.DEFAULT.getId());
|
|
|
|
|
|
+ papers = paperRepo.findByWorkIdAndSubjectAndIsMissingAndTest(workId, subject, false,
|
|
|
|
+ TrialEnum.DEFAULT.getId());
|
|
} else {
|
|
} else {
|
|
- papers = paperRepo.findByworkIdAndSubjectAndQuestionIdAndIsMissingAndTest(workId, subject, questionId, false, TrialEnum.DEFAULT.getId());
|
|
|
|
|
|
+ papers = paperRepo.findByworkIdAndSubjectAndQuestionIdAndIsMissingAndTest(workId, subject, questionId,
|
|
|
|
+ false, TrialEnum.DEFAULT.getId());
|
|
}
|
|
}
|
|
MarkSubject markSubject = markSubjectRepo.findOne(workId + "-" + subject.name());
|
|
MarkSubject markSubject = markSubjectRepo.findOne(workId + "-" + subject.name());
|
|
|
|
|
|
@@ -630,30 +693,37 @@ public class MarkTaskApi {
|
|
LevelDetailDTO levelDetailDTO = new LevelDetailDTO();
|
|
LevelDetailDTO levelDetailDTO = new LevelDetailDTO();
|
|
levelDetailDTO.setWorkId(workId);
|
|
levelDetailDTO.setWorkId(workId);
|
|
levelDetailDTO.setSubjectName(markSubject.getName());
|
|
levelDetailDTO.setSubjectName(markSubject.getName());
|
|
- //档位
|
|
|
|
|
|
+ // 档位
|
|
levelDetailDTO.setCode(level.getCode());
|
|
levelDetailDTO.setCode(level.getCode());
|
|
levelDetailDTO.setMinScore(level.getMinScore());
|
|
levelDetailDTO.setMinScore(level.getMinScore());
|
|
levelDetailDTO.setMaxScore(level.getMaxScore());
|
|
levelDetailDTO.setMaxScore(level.getMaxScore());
|
|
- //数量
|
|
|
|
- long count = papers.stream().filter(m -> Objects.nonNull(m.getLevel()) && Objects.equals(level.getCode(), m.getLevel())).count();
|
|
|
|
|
|
+ // 数量
|
|
|
|
+ long count = papers.stream()
|
|
|
|
+ .filter(m -> Objects.nonNull(m.getLevel()) && Objects.equals(level.getCode(), m.getLevel()))
|
|
|
|
+ .count();
|
|
levelDetailDTO.setLevelCount((int) count);
|
|
levelDetailDTO.setLevelCount((int) count);
|
|
- BigDecimal prop = papers.isEmpty() ? new BigDecimal("0") : new BigDecimal(String.valueOf(count * 100)).divide(new BigDecimal(String.valueOf(papers.size())), 2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
- //占比
|
|
|
|
|
|
+ BigDecimal prop = papers.isEmpty() ? new BigDecimal("0")
|
|
|
|
+ : new BigDecimal(String.valueOf(count * 100)).divide(new BigDecimal(String.valueOf(papers.size())),
|
|
|
|
+ 2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ // 占比
|
|
levelDetailDTO.setLevelProp(prop.doubleValue());
|
|
levelDetailDTO.setLevelProp(prop.doubleValue());
|
|
- //预设占比
|
|
|
|
|
|
+ // 预设占比
|
|
levelDetailDTO.setExamLevelProp(level.getPt());
|
|
levelDetailDTO.setExamLevelProp(level.getPt());
|
|
- //差值
|
|
|
|
|
|
+ // 差值
|
|
BigDecimal diff = prop.subtract(new BigDecimal(String.valueOf(level.getPt())));
|
|
BigDecimal diff = prop.subtract(new BigDecimal(String.valueOf(level.getPt())));
|
|
levelDetailDTO.setDiffProp(diff.doubleValue());
|
|
levelDetailDTO.setDiffProp(diff.doubleValue());
|
|
- //累计数量
|
|
|
|
|
|
+ // 累计数量
|
|
int sumCount = (int) (list.stream().mapToInt(LevelDetailDTO::getLevelCount).sum() + count);
|
|
int sumCount = (int) (list.stream().mapToInt(LevelDetailDTO::getLevelCount).sum() + count);
|
|
levelDetailDTO.setCumulateCount(sumCount);
|
|
levelDetailDTO.setCumulateCount(sumCount);
|
|
- //累计占比
|
|
|
|
- BigDecimal cumulateProp = papers.isEmpty() ? new BigDecimal("0") : new BigDecimal(String.valueOf(sumCount * 100)).divide(new BigDecimal(String.valueOf(papers.size())), 2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
+ // 累计占比
|
|
|
|
+ BigDecimal cumulateProp = papers.isEmpty() ? new BigDecimal("0")
|
|
|
|
+ : new BigDecimal(String.valueOf(sumCount * 100))
|
|
|
|
+ .divide(new BigDecimal(String.valueOf(papers.size())), 2, BigDecimal.ROUND_HALF_UP);
|
|
levelDetailDTO.setCumulateProp(cumulateProp.doubleValue());
|
|
levelDetailDTO.setCumulateProp(cumulateProp.doubleValue());
|
|
|
|
|
|
- //调整
|
|
|
|
- int adjustment = new BigDecimal(String.valueOf(papers.size())).multiply(diff.divide(new BigDecimal("100"))).setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
|
|
|
|
|
|
+ // 调整
|
|
|
|
+ int adjustment = new BigDecimal(String.valueOf(papers.size())).multiply(diff.divide(new BigDecimal("100")))
|
|
|
|
+ .setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
|
|
levelDetailDTO.setAdjustmentCount(adjustment);
|
|
levelDetailDTO.setAdjustmentCount(adjustment);
|
|
|
|
|
|
list.add(levelDetailDTO);
|
|
list.add(levelDetailDTO);
|
|
@@ -670,26 +740,27 @@ public class MarkTaskApi {
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@RequestMapping(value = "/get_by_secret_number", method = RequestMethod.GET)
|
|
@RequestMapping(value = "/get_by_secret_number", method = RequestMethod.GET)
|
|
- public List<MarkTask> getBySecretNumber(@RequestParam Long workId,
|
|
|
|
- @RequestParam Subject subject,
|
|
|
|
- @RequestParam String secretNumber) {
|
|
|
|
- return markTaskRepo.findByWorkIdAndSubjectAndSecretNumberAndTest(workId, subject, secretNumber, TrialEnum.DEFAULT.getId());
|
|
|
|
|
|
+ public List<MarkTask> getBySecretNumber(@RequestParam Long workId, @RequestParam Subject subject,
|
|
|
|
+ @RequestParam String secretNumber) {
|
|
|
|
+ return markTaskRepo.findByWorkIdAndSubjectAndSecretNumberAndTest(workId, subject, secretNumber,
|
|
|
|
+ TrialEnum.DEFAULT.getId());
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
* 查询标记任务(科组长)
|
|
* 查询标记任务(科组长)
|
|
*
|
|
*
|
|
- * @param workId 工作ID
|
|
|
|
- * @param subject 科目
|
|
|
|
- * @param stage 阶段
|
|
|
|
- * @param markerId 评卷员ID
|
|
|
|
|
|
+ * @param workId
|
|
|
|
+ * 工作ID
|
|
|
|
+ * @param subject
|
|
|
|
+ * 科目
|
|
|
|
+ * @param stage
|
|
|
|
+ * 阶段
|
|
|
|
+ * @param markerId
|
|
|
|
+ * 评卷员ID
|
|
*/
|
|
*/
|
|
@GetMapping("/list_mark_task")
|
|
@GetMapping("/list_mark_task")
|
|
- public PageableDTO listMarkTask(@RequestParam Long workId,
|
|
|
|
- @RequestParam Subject subject,
|
|
|
|
- @RequestParam MarkStage stage,
|
|
|
|
- @RequestParam Long markerId,
|
|
|
|
- Pageable pageable) {
|
|
|
|
|
|
+ public PageableDTO listMarkTask(@RequestParam Long workId, @RequestParam Subject subject,
|
|
|
|
+ @RequestParam MarkStage stage, @RequestParam Long markerId, Pageable pageable) {
|
|
MarkUser markUser = markUserRepo.findOne(markerId);
|
|
MarkUser markUser = markUserRepo.findOne(markerId);
|
|
if (Role.MARKER.equals(markUser.getRole())) {
|
|
if (Role.MARKER.equals(markUser.getRole())) {
|
|
List<PaperDTO> paperDTOS = new ArrayList<>();
|
|
List<PaperDTO> paperDTOS = new ArrayList<>();
|
|
@@ -705,7 +776,8 @@ public class MarkTaskApi {
|
|
Page<MarkTask> markTasks = markTaskRepo.findAll(specification, pageable);
|
|
Page<MarkTask> markTasks = markTaskRepo.findAll(specification, pageable);
|
|
|
|
|
|
markTasks.getContent().forEach(m -> paperDTOS.add(paperAssembler.toDTO(m.getPaper())));
|
|
markTasks.getContent().forEach(m -> paperDTOS.add(paperAssembler.toDTO(m.getPaper())));
|
|
- return new PageableDTO(paperDTOS, markTasks.getTotalElements(), markTasks.getTotalPages(), pageable.getPageNumber());
|
|
|
|
|
|
+ return new PageableDTO(paperDTOS, markTasks.getTotalElements(), markTasks.getTotalPages(),
|
|
|
|
+ pageable.getPageNumber());
|
|
} else if (Role.MARK_LEADER.equals(markUser.getRole())) {
|
|
} else if (Role.MARK_LEADER.equals(markUser.getRole())) {
|
|
List<PaperDTO> paperDTOS = new ArrayList<>();
|
|
List<PaperDTO> paperDTOS = new ArrayList<>();
|
|
Specification<Paper> specification = (root, query, builder) -> {
|
|
Specification<Paper> specification = (root, query, builder) -> {
|
|
@@ -718,7 +790,8 @@ public class MarkTaskApi {
|
|
Page<Paper> papers = paperRepo.findAll(specification, pageable);
|
|
Page<Paper> papers = paperRepo.findAll(specification, pageable);
|
|
|
|
|
|
papers.getContent().forEach(m -> paperDTOS.add(paperAssembler.toDTO(m)));
|
|
papers.getContent().forEach(m -> paperDTOS.add(paperAssembler.toDTO(m)));
|
|
- return new PageableDTO(paperDTOS, papers.getTotalElements(), papers.getTotalPages(), pageable.getPageNumber());
|
|
|
|
|
|
+ return new PageableDTO(paperDTOS, papers.getTotalElements(), papers.getTotalPages(),
|
|
|
|
+ pageable.getPageNumber());
|
|
} else {
|
|
} else {
|
|
throw new RuntimeException("当前角色无法查询标记试卷");
|
|
throw new RuntimeException("当前角色无法查询标记试卷");
|
|
}
|
|
}
|