|
@@ -8,6 +8,7 @@ import cn.com.qmth.stmms.ms.core.domain.user.MarkUser;
|
|
|
import cn.com.qmth.stmms.ms.core.repository.MarkUserRepo;
|
|
|
import cn.com.qmth.stmms.ms.marking.config.MarkingConfig;
|
|
|
import cn.com.qmth.stmms.ms.marking.service.arbitration.ArbitrationService;
|
|
|
+
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -16,9 +17,11 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
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.task.MarkTask;
|
|
|
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.PaperRepo;
|
|
|
|
|
@@ -47,6 +50,9 @@ public class MarkingService {
|
|
|
|
|
|
@Autowired
|
|
|
private LevelRepo levelRepo;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private MarkSubjectRepo markSubjectRepo;
|
|
|
|
|
|
/**
|
|
|
* 提交分档。如果每个评卷都提交了,则进行仲裁判定,如果没有触发仲裁就定档
|
|
@@ -65,6 +71,8 @@ public class MarkingService {
|
|
|
if (paper.isMarkByLeader()) {
|
|
|
return markTask;
|
|
|
}
|
|
|
+ /**
|
|
|
+ 阀值判断
|
|
|
|
|
|
//控制分档比例
|
|
|
List<Level> levels = levelRepo.findByWorkId(markTask.getWorkId());
|
|
@@ -89,7 +97,7 @@ public class MarkingService {
|
|
|
if ((kdcount + 1.0D) / kdtotal * 1.0D > kdpt / 100.D) {
|
|
|
throw new RuntimeException(levelCode + "档已满,考点阀值已达" + kdpt + "%。");
|
|
|
}
|
|
|
-
|
|
|
+ */
|
|
|
|
|
|
MarkUser maker = markUserRepo.findOne(markTask.getMarkerId());
|
|
|
Level level = levelRepo.findByWorkIdAndCode(markTask.getWorkId(), levelCode);
|
|
@@ -134,15 +142,23 @@ public class MarkingService {
|
|
|
* @param level
|
|
|
*/
|
|
|
@Transactional
|
|
|
- public Paper levelMarkPaper(Paper paper, String level) {
|
|
|
- paper.determineLevel(level);
|
|
|
- paper.setMarkByLeader(true);
|
|
|
- paperRepo.save(paper);
|
|
|
- List<MarkTask> markTasks = markTaskRepo.findByPaperIdAndStage(paper.getId(), MarkStage.LEVEL);
|
|
|
- for (MarkTask markTask : markTasks) {
|
|
|
- markTask.setResult(level);
|
|
|
- }
|
|
|
- markTaskRepo.save(markTasks);
|
|
|
+ public Paper levelMarkPaper(Paper paper, String level,boolean isSample) {
|
|
|
+ if(isSample){
|
|
|
+ MarkSubject markSubject = markSubjectRepo.findOne(paper.getWorkId() + "-" + paper.getSubject().toString());
|
|
|
+ long sampleCount = paperRepo.countByWorkIdAndSubjectAndIsSampleIsTrue(paper.getWorkId(), paper.getSubject());
|
|
|
+ if(sampleCount >= markSubject.getSampleCount()){
|
|
|
+ throw new RuntimeException("标准卷上限已达到");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ paper.determineLevel(level);
|
|
|
+ paper.setMarkByLeader(true);
|
|
|
+ paper.setSample(isSample);
|
|
|
+ paperRepo.save(paper);
|
|
|
+ List<MarkTask> markTasks = markTaskRepo.findByPaperIdAndStage(paper.getId(), MarkStage.LEVEL);
|
|
|
+ for (MarkTask markTask : markTasks) {
|
|
|
+ markTask.setResult(level);
|
|
|
+ }
|
|
|
+ markTaskRepo.save(markTasks);
|
|
|
return paper;
|
|
|
}
|
|
|
|
|
@@ -199,4 +215,36 @@ public class MarkingService {
|
|
|
}
|
|
|
return markTask;
|
|
|
}
|
|
|
+ /**
|
|
|
+ * 跳过该任务,最后处理
|
|
|
+ * @param markTaskId
|
|
|
+ */
|
|
|
+ @Transactional
|
|
|
+ public MarkTask skip(Long markTaskId) {
|
|
|
+ try {
|
|
|
+ MarkTask m = markTaskRepo.findOne(markTaskId);
|
|
|
+ MarkTask markTask = new MarkTask();
|
|
|
+ markTask.setCreatedOn(m.getCreatedOn());
|
|
|
+ markTask.setLevelValue(m.getLevelValue());
|
|
|
+ markTask.setMarkerId(m.getMarkerId());
|
|
|
+ markTask.setMarkerName(m.getMarkerName());
|
|
|
+ markTask.setOriginLevel(m.getOriginLevel());
|
|
|
+ markTask.setPaper(m.getPaper());
|
|
|
+ markTask.setQuestionId(m.getQuestionId());
|
|
|
+ markTask.setRandomSeq(m.getRandomSeq());
|
|
|
+ markTask.setRejected(m.isRejected());
|
|
|
+ markTask.setResult(m.getResult());
|
|
|
+ markTask.setStage(m.getStage());
|
|
|
+ markTask.setSubject(m.getSubject());
|
|
|
+ markTask.setUpdatedOn(new Date());
|
|
|
+ markTask.setWorkId(m.getWorkId());
|
|
|
+ markTaskRepo.save(markTask);
|
|
|
+ markTaskRepo.delete(m);
|
|
|
+ return markTask;
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ throw new RuntimeException("该任务可能被占用,跳过失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
}
|