|
@@ -1,8 +1,10 @@
|
|
package cn.com.qmth.stmms.ms.marking.api;
|
|
package cn.com.qmth.stmms.ms.marking.api;
|
|
|
|
|
|
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.domain.*;
|
|
import cn.com.qmth.stmms.ms.core.domain.*;
|
|
import cn.com.qmth.stmms.ms.core.domain.task.MarkTaskLevel;
|
|
import cn.com.qmth.stmms.ms.core.domain.task.MarkTaskLevel;
|
|
|
|
+import cn.com.qmth.stmms.ms.core.domain.task.MarkTaskRoughLevel;
|
|
import cn.com.qmth.stmms.ms.core.domain.task.MarkTaskScore;
|
|
import cn.com.qmth.stmms.ms.core.domain.task.MarkTaskScore;
|
|
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.repository.*;
|
|
import cn.com.qmth.stmms.ms.core.repository.*;
|
|
@@ -10,6 +12,7 @@ import cn.com.qmth.stmms.ms.core.vo.Subject;
|
|
import cn.com.qmth.stmms.ms.marking.assembler.ChangeLevelAssembler;
|
|
import cn.com.qmth.stmms.ms.marking.assembler.ChangeLevelAssembler;
|
|
import cn.com.qmth.stmms.ms.marking.dto.ChangeLevelDTO;
|
|
import cn.com.qmth.stmms.ms.marking.dto.ChangeLevelDTO;
|
|
import cn.com.qmth.stmms.ms.marking.service.MarkingLevelService;
|
|
import cn.com.qmth.stmms.ms.marking.service.MarkingLevelService;
|
|
|
|
+import cn.com.qmth.stmms.ms.marking.service.MarkingRoughLevelService;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.data.domain.Page;
|
|
import org.springframework.data.domain.Page;
|
|
import org.springframework.data.domain.Pageable;
|
|
import org.springframework.data.domain.Pageable;
|
|
@@ -39,6 +42,9 @@ public class ChangeLevelApi {
|
|
@Autowired
|
|
@Autowired
|
|
private ChangeLevelRepo changeLevelRepo;
|
|
private ChangeLevelRepo changeLevelRepo;
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ private MarkTaskRoughLevelRepo markTaskRoughLevelRepo;
|
|
|
|
+
|
|
@Resource
|
|
@Resource
|
|
private MarkTaskLevelRepo markTaskLevelRepo;
|
|
private MarkTaskLevelRepo markTaskLevelRepo;
|
|
|
|
|
|
@@ -48,6 +54,9 @@ public class ChangeLevelApi {
|
|
@Resource
|
|
@Resource
|
|
private ChangeLevelAssembler changeLevelAssembler;
|
|
private ChangeLevelAssembler changeLevelAssembler;
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ private MarkingRoughLevelService markingRoughLevelService;
|
|
|
|
+
|
|
@Resource
|
|
@Resource
|
|
private MarkingLevelService markingLevelService;
|
|
private MarkingLevelService markingLevelService;
|
|
|
|
|
|
@@ -71,7 +80,7 @@ public class ChangeLevelApi {
|
|
* @param subject 科目
|
|
* @param subject 科目
|
|
* @param status 状态
|
|
* @param status 状态
|
|
*/
|
|
*/
|
|
- @RequestMapping(value = "/list", method = RequestMethod.GET)
|
|
|
|
|
|
+ @GetMapping("/list")
|
|
public PageableDTO changeLevel(@RequestParam(required = false) Long workId,
|
|
public PageableDTO changeLevel(@RequestParam(required = false) Long workId,
|
|
@RequestParam(required = false) Long questionId,
|
|
@RequestParam(required = false) Long questionId,
|
|
@RequestParam(required = false) String subject,
|
|
@RequestParam(required = false) String subject,
|
|
@@ -80,16 +89,16 @@ public class ChangeLevelApi {
|
|
Pageable pageable) {
|
|
Pageable pageable) {
|
|
MarkSubject markSubject = markSubjectRepo.findOne(workId + "-" + subject);
|
|
MarkSubject markSubject = markSubjectRepo.findOne(workId + "-" + subject);
|
|
List<ChangeLevelDTO> levelDTOs = new ArrayList<>();
|
|
List<ChangeLevelDTO> levelDTOs = new ArrayList<>();
|
|
- Specification<Paper> specification = (root, query, builder) -> {
|
|
|
|
|
|
+ Specification<ChangeLevel> specification = (root, query, builder) -> {
|
|
List<Predicate> predicates = new ArrayList<>();
|
|
List<Predicate> predicates = new ArrayList<>();
|
|
if (!StringUtils.isEmpty(workId)) {
|
|
if (!StringUtils.isEmpty(workId)) {
|
|
predicates.add(builder.equal(root.get("workId"), workId));
|
|
predicates.add(builder.equal(root.get("workId"), workId));
|
|
}
|
|
}
|
|
if (!StringUtils.isEmpty(questionId)) {
|
|
if (!StringUtils.isEmpty(questionId)) {
|
|
- List<Paper> papers;
|
|
|
|
|
|
+ List<Paper> papers = null;
|
|
if ("1".equals(type)) {
|
|
if ("1".equals(type)) {
|
|
papers = paperRepo.findByWorkIdAndSubjectAndQuestionIdAndIsMissingAndTest(workId, Subject.valueOf(subject), questionId, false, markSubject.getTest());
|
|
papers = paperRepo.findByWorkIdAndSubjectAndQuestionIdAndIsMissingAndTest(workId, Subject.valueOf(subject), questionId, false, markSubject.getTest());
|
|
- if (papers != null && papers.size() > 0) {
|
|
|
|
|
|
+ if (papers != null && !papers.isEmpty()) {
|
|
CriteriaBuilder.In<Object> in = builder.in(root.get("paperId"));
|
|
CriteriaBuilder.In<Object> in = builder.in(root.get("paperId"));
|
|
for (Paper paper : papers) {
|
|
for (Paper paper : papers) {
|
|
in.value(paper.getId());
|
|
in.value(paper.getId());
|
|
@@ -97,8 +106,12 @@ public class ChangeLevelApi {
|
|
predicates.add(builder.and(builder.and(in)));
|
|
predicates.add(builder.and(builder.and(in)));
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
- papers = paperRepo.findByWorkIdAndSubjectAndQuestionIdAndIsMissingAndTestAndLevelIsNull(workId, Subject.valueOf(subject), questionId, false, markSubject.getTest());
|
|
|
|
- if (papers != null && papers.size() > 0) {
|
|
|
|
|
|
+ if (MarkStage.LEVEL.equals(markSubject.getStage())) {
|
|
|
|
+ papers = paperRepo.findByWorkIdAndSubjectAndQuestionIdAndIsMissingAndTestAndRoughLevelIsNull(workId, Subject.valueOf(subject), questionId, false, markSubject.getTest());
|
|
|
|
+ } else if (MarkStage.SCORE.equals(markSubject.getStage())) {
|
|
|
|
+ papers = paperRepo.findByWorkIdAndSubjectAndQuestionIdAndIsMissingAndTestAndLevelIsNull(workId, Subject.valueOf(subject), questionId, false, markSubject.getTest());
|
|
|
|
+ }
|
|
|
|
+ if (papers != null && !papers.isEmpty()) {
|
|
CriteriaBuilder.In<Object> in = builder.in(root.get("paperId"));
|
|
CriteriaBuilder.In<Object> in = builder.in(root.get("paperId"));
|
|
for (Paper paper : papers) {
|
|
for (Paper paper : papers) {
|
|
in.value(paper.getId());
|
|
in.value(paper.getId());
|
|
@@ -117,7 +130,7 @@ public class ChangeLevelApi {
|
|
}
|
|
}
|
|
//改档处理
|
|
//改档处理
|
|
if ("1".equals(type)) {
|
|
if ("1".equals(type)) {
|
|
- if (!StringUtils.isEmpty(status) && !StringUtils.isEmpty(status)) {
|
|
|
|
|
|
+ if (!StringUtils.isEmpty(status)) {
|
|
if (Objects.equals(status, "0")) {
|
|
if (Objects.equals(status, "0")) {
|
|
predicates.add(builder.equal(root.get("auditStatus"), status));
|
|
predicates.add(builder.equal(root.get("auditStatus"), status));
|
|
} else {
|
|
} else {
|
|
@@ -125,7 +138,7 @@ public class ChangeLevelApi {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
- if (!StringUtils.isEmpty(status) && !StringUtils.isEmpty(status)) {
|
|
|
|
|
|
+ if (!StringUtils.isEmpty(status)) {
|
|
if (Objects.equals(status, "0")) {
|
|
if (Objects.equals(status, "0")) {
|
|
predicates.add(builder.equal(root.get("auditStatus"), status));
|
|
predicates.add(builder.equal(root.get("auditStatus"), status));
|
|
} else {
|
|
} else {
|
|
@@ -140,7 +153,6 @@ public class ChangeLevelApi {
|
|
|
|
|
|
Page<ChangeLevel> levels = changeLevelRepo.findAll(specification, pageable);
|
|
Page<ChangeLevel> levels = changeLevelRepo.findAll(specification, pageable);
|
|
|
|
|
|
-// PageInfo<Map> pageInfo = sqlUtil.execSqlForListPageInfo(sql.toString(), pageable.getPageNumber(), pageable.getPageSize(), null);
|
|
|
|
levels.getContent().forEach(m -> {
|
|
levels.getContent().forEach(m -> {
|
|
levelDTOs.add(changeLevelAssembler.toDTO(m));
|
|
levelDTOs.add(changeLevelAssembler.toDTO(m));
|
|
});
|
|
});
|
|
@@ -150,56 +162,83 @@ public class ChangeLevelApi {
|
|
/**
|
|
/**
|
|
* 科组长改档申请
|
|
* 科组长改档申请
|
|
*
|
|
*
|
|
- * @param markSubject
|
|
|
|
- * @param paperId
|
|
|
|
- * @param level
|
|
|
|
- * @return
|
|
|
|
|
|
+ * @param markSubject 科目
|
|
|
|
+ * @param paperId 试卷
|
|
|
|
+ * @param level 档位
|
|
*/
|
|
*/
|
|
- @RequestMapping(value = "{markSubject}/changeLevel", method = RequestMethod.POST)
|
|
|
|
|
|
+ @PostMapping("{markSubject}/changeLevel")
|
|
@Transactional
|
|
@Transactional
|
|
public ResponseEntity changeLevel(@PathVariable MarkSubject markSubject,
|
|
public ResponseEntity changeLevel(@PathVariable MarkSubject markSubject,
|
|
@RequestParam Long paperId,
|
|
@RequestParam Long paperId,
|
|
@RequestParam String level,
|
|
@RequestParam String level,
|
|
@RequestParam Long userId) {
|
|
@RequestParam Long userId) {
|
|
- //只有打分阶段才能改档
|
|
|
|
- if (!Objects.equals(markSubject.getStage().name(), MarkStage.SCORE.name())) {
|
|
|
|
- throw new RuntimeException("只有打分阶段才允许改档");
|
|
|
|
|
|
+ boolean roughLevelEnable = ParamCache.levelConfigMap.get(String.valueOf(markSubject.getWorkId())).getRoughLevelEnable() == 1;
|
|
|
|
+ if (!roughLevelEnable) {
|
|
|
|
+ //只有打分阶段才能改档
|
|
|
|
+ if (!Objects.equals(markSubject.getStage(), MarkStage.SCORE)) {
|
|
|
|
+ throw new RuntimeException("未开启粗分档,只有打分阶段才允许改档");
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ //只有打分阶段才能改档
|
|
|
|
+ if (!Objects.equals(markSubject.getStage(), MarkStage.LEVEL)
|
|
|
|
+ && !Objects.equals(markSubject.getStage(), MarkStage.SCORE)) {
|
|
|
|
+ throw new RuntimeException("已开启粗分档,只有细分档阶段或者打分阶段才允许改档");
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+
|
|
Paper paper = paperRepo.findOne(paperId);
|
|
Paper paper = paperRepo.findOne(paperId);
|
|
MarkUser markUser = markUserRepo.findOne(userId);
|
|
MarkUser markUser = markUserRepo.findOne(userId);
|
|
|
|
|
|
//
|
|
//
|
|
- ChangeLevel changeLevelCurr = changeLevelRepo.findByWorkIdAndSubjectAndPaperIdAndAuditStatusAndIsCurr(markSubject.getWorkId(), markSubject.getSubject().name(), paperId);
|
|
|
|
|
|
+ ChangeLevel changeLevelCurr = changeLevelRepo.findByWorkIdAndSubjectAndStageAndPaperIdAndAuditStatusAndIsCurr(markSubject.getWorkId(), markSubject.getSubject().name(), markSubject.getStage(), paperId);
|
|
if (changeLevelCurr != null) {
|
|
if (changeLevelCurr != null) {
|
|
- if (Objects.isNull(paper.getLevel())) {
|
|
|
|
- throw new RuntimeException("纪检员已同意,请评卷员先完成改档");
|
|
|
|
- }
|
|
|
|
- if (Objects.isNull(paper.getScore())) {
|
|
|
|
- throw new RuntimeException("改档已完成,请评卷员完成改档打分");
|
|
|
|
|
|
+ if (MarkStage.LEVEL.equals(changeLevelCurr.getStage())) {
|
|
|
|
+ if (Objects.isNull(paper.getRoughLevel())) {
|
|
|
|
+ throw new RuntimeException("纪检员已同意,请评卷员先完成改大档");
|
|
|
|
+ }
|
|
|
|
+ if (Objects.isNull(paper.getLevel())) {
|
|
|
|
+ throw new RuntimeException("改档已完成,请评卷员完成改小档");
|
|
|
|
+ }
|
|
|
|
+ } else if (MarkStage.SCORE.equals(changeLevelCurr.getStage())) {
|
|
|
|
+ if (Objects.isNull(paper.getLevel())) {
|
|
|
|
+ throw new RuntimeException("纪检员已同意,请评卷员先完成改档");
|
|
|
|
+ }
|
|
|
|
+ if (Objects.isNull(paper.getScore())) {
|
|
|
|
+ throw new RuntimeException("改档已完成,请评卷员完成改档打分");
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- List<ChangeLevel> list = changeLevelRepo.findAllByWorkIdAndSubjectAndPaperId(markSubject.getWorkId(), markSubject.getSubject().name(), paperId);
|
|
|
|
|
|
+ List<ChangeLevel> list = changeLevelRepo.findAllByWorkIdAndSubjectAndStageAndPaperId(markSubject.getWorkId(), markSubject.getSubject().name(), markSubject.getStage(), paperId);
|
|
list.stream().map(m -> {
|
|
list.stream().map(m -> {
|
|
m.setIsCurr(0);
|
|
m.setIsCurr(0);
|
|
return m;
|
|
return m;
|
|
}).collect(Collectors.toList());
|
|
}).collect(Collectors.toList());
|
|
changeLevelRepo.save(list);
|
|
changeLevelRepo.save(list);
|
|
|
|
|
|
- ChangeLevel changeLevel = changeLevelRepo.findByWorkIdAndSubjectAndPaperId(markSubject.getWorkId(), markSubject.getSubject().name(), paperId);
|
|
|
|
|
|
+ ChangeLevel changeLevel = changeLevelRepo.findByWorkIdAndSubjectAndStageAndPaperId(markSubject.getWorkId(), markSubject.getSubject().name(), markSubject.getStage(), paperId);
|
|
if (changeLevel == null) {
|
|
if (changeLevel == null) {
|
|
changeLevel = new ChangeLevel();
|
|
changeLevel = new ChangeLevel();
|
|
changeLevel.setWorkId(markSubject.getWorkId());
|
|
changeLevel.setWorkId(markSubject.getWorkId());
|
|
changeLevel.setSubject(markSubject.getSubject().name());
|
|
changeLevel.setSubject(markSubject.getSubject().name());
|
|
|
|
+ changeLevel.setStage(markSubject.getStage());
|
|
changeLevel.setPaperId(paperId);
|
|
changeLevel.setPaperId(paperId);
|
|
- changeLevel.setOriginalLevel(paper.getLevel());
|
|
|
|
|
|
+ if (MarkStage.LEVEL.equals(markSubject.getStage())) {
|
|
|
|
+ changeLevel.setOriginalLevel(paper.getRoughLevel());
|
|
|
|
+ } else if (MarkStage.SCORE.equals(markSubject.getStage())) {
|
|
|
|
+ changeLevel.setOriginalLevel(paper.getLevel());
|
|
|
|
+ }
|
|
changeLevel.setSuggestLevel(level);
|
|
changeLevel.setSuggestLevel(level);
|
|
changeLevel.setAuditStatus(0);
|
|
changeLevel.setAuditStatus(0);
|
|
changeLevel.setCreateId(markUser.getId());
|
|
changeLevel.setCreateId(markUser.getId());
|
|
changeLevel.setCreateDate(new Date());
|
|
changeLevel.setCreateDate(new Date());
|
|
changeLevel.setIsCurr(1);
|
|
changeLevel.setIsCurr(1);
|
|
} else {
|
|
} else {
|
|
- changeLevel.setOriginalLevel(paper.getLevel());
|
|
|
|
|
|
+ if (MarkStage.LEVEL.equals(changeLevel.getStage())) {
|
|
|
|
+ changeLevel.setOriginalLevel(paper.getRoughLevel());
|
|
|
|
+ } else if (MarkStage.SCORE.equals(changeLevel.getStage())) {
|
|
|
|
+ changeLevel.setOriginalLevel(paper.getLevel());
|
|
|
|
+ }
|
|
changeLevel.setSuggestLevel(level);
|
|
changeLevel.setSuggestLevel(level);
|
|
changeLevel.setCreateId(markUser.getId());
|
|
changeLevel.setCreateId(markUser.getId());
|
|
changeLevel.setCreateDate(new Date());
|
|
changeLevel.setCreateDate(new Date());
|
|
@@ -218,11 +257,10 @@ public class ChangeLevelApi {
|
|
/**
|
|
/**
|
|
* 科组长改档审核
|
|
* 科组长改档审核
|
|
*
|
|
*
|
|
- * @param id
|
|
|
|
- * @param auditStatus
|
|
|
|
- * @return
|
|
|
|
|
|
+ * @param id id
|
|
|
|
+ * @param auditStatus 审核状态
|
|
*/
|
|
*/
|
|
- @RequestMapping(value = "/changeLevelAudit", method = RequestMethod.POST)
|
|
|
|
|
|
+ @PostMapping("/changeLevelAudit")
|
|
@Transactional
|
|
@Transactional
|
|
public ResponseEntity changeLevelAudit(@RequestParam Long id,
|
|
public ResponseEntity changeLevelAudit(@RequestParam Long id,
|
|
@RequestParam Integer auditStatus,
|
|
@RequestParam Integer auditStatus,
|
|
@@ -233,24 +271,47 @@ public class ChangeLevelApi {
|
|
//同意
|
|
//同意
|
|
if (auditStatus == 1) {
|
|
if (auditStatus == 1) {
|
|
Paper paper = paperRepo.findOne(changeLevel.getPaperId());
|
|
Paper paper = paperRepo.findOne(changeLevel.getPaperId());
|
|
- //重置分数
|
|
|
|
- paper.setScore(null);
|
|
|
|
|
|
+
|
|
|
|
+ if (MarkStage.LEVEL.equals(changeLevel.getStage())) {
|
|
|
|
+ //重置细分档档位
|
|
|
|
+ paper.setLevel(null);
|
|
|
|
+
|
|
|
|
+ List<MarkTaskRoughLevel> markTasks = markTaskRoughLevelRepo.findByPaperId(paper.getId());
|
|
|
|
+ List<String> ranges = markTasks.stream().map(m -> m.getMarkerId().toString()).collect(Collectors.toList());
|
|
|
|
+ markingRoughLevelService.reject(paper, changeLevel.getSuggestLevel(), String.join(",", ranges));
|
|
|
|
+
|
|
|
|
+ //重置已经打分的数据
|
|
|
|
+ List<MarkTaskLevel> markTasksLevels = markTaskLevelRepo.findByPaperId(paper.getId());
|
|
|
|
+ if (markTasksLevels != null && !markTasksLevels.isEmpty()) {
|
|
|
|
+ markTasksLevels.forEach(o -> {
|
|
|
|
+ o.setResult(null);
|
|
|
|
+ o.setLevel(null);
|
|
|
|
+ });
|
|
|
|
+ markTaskLevelRepo.save(markTasksLevels);
|
|
|
|
+ }
|
|
|
|
+ } else if (MarkStage.SCORE.equals(changeLevel.getStage())) {
|
|
|
|
+ //重置分数
|
|
|
|
+ paper.setScore(null);
|
|
|
|
+
|
|
|
|
+ List<MarkTaskLevel> markTasks = markTaskLevelRepo.findByPaperId(paper.getId());
|
|
|
|
+ List<String> ranges = markTasks.stream().map(m -> m.getMarkerId().toString()).collect(Collectors.toList());
|
|
|
|
+ markingLevelService.reject(paper, changeLevel.getSuggestLevel(), String.join(",", ranges));
|
|
|
|
+
|
|
|
|
+ //重置已经打分的数据
|
|
|
|
+ List<MarkTaskScore> markTasksScore = markTaskScoreRepo.findByPaperId(paper.getId());
|
|
|
|
+ if (markTasksScore != null && !markTasksScore.isEmpty()) {
|
|
|
|
+ markTasksScore.forEach(o -> {
|
|
|
|
+ o.setResult(null);
|
|
|
|
+ o.setLevel(null);
|
|
|
|
+ });
|
|
|
|
+ markTaskScoreRepo.save(markTasksScore);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
//状态设置
|
|
//状态设置
|
|
paper.setShift(true);
|
|
paper.setShift(true);
|
|
paper.setShiftScore(true);
|
|
paper.setShiftScore(true);
|
|
- List<MarkTaskLevel> markTasks = markTaskLevelRepo.findByPaperId(paper.getId());
|
|
|
|
- List<String> ranges = markTasks.stream().map(m -> m.getMarkerId().toString()).collect(Collectors.toList());
|
|
|
|
- markingLevelService.reject(paper, changeLevel.getSuggestLevel(), String.join(",", ranges));
|
|
|
|
-
|
|
|
|
- //重置已经打分的数据
|
|
|
|
- List<MarkTaskScore> markTasksScore = markTaskScoreRepo.findByPaperId(paper.getId());
|
|
|
|
- if (markTasksScore != null && !markTasksScore.isEmpty()) {
|
|
|
|
- markTasksScore.forEach(o -> {
|
|
|
|
- o.setResult(null);
|
|
|
|
- o.setLevel(null);
|
|
|
|
- });
|
|
|
|
- markTaskScoreRepo.save(markTasksScore);
|
|
|
|
- }
|
|
|
|
|
|
+
|
|
|
|
+ paperRepo.save(paper);
|
|
|
|
|
|
//记录日志
|
|
//记录日志
|
|
MarkUser markUser = markUserRepo.findOne(userId);
|
|
MarkUser markUser = markUserRepo.findOne(userId);
|