|
@@ -159,10 +159,10 @@ public class StageControlService {
|
|
throw new RuntimeException("没有分档完成");
|
|
throw new RuntimeException("没有分档完成");
|
|
}
|
|
}
|
|
|
|
|
|
- if(Objects.nonNull(questionId)){
|
|
|
|
|
|
+ if (Objects.nonNull(questionId)) {
|
|
Long questionId1 = Long.valueOf(questionId.toString());
|
|
Long questionId1 = Long.valueOf(questionId.toString());
|
|
int qcount = paperRepo.countByWorkIdAndQuestionIdAndSubjectAndLevelIsNullAndIsMissingFalseAndTest(workId, questionId1, subject, 0);
|
|
int qcount = paperRepo.countByWorkIdAndQuestionIdAndSubjectAndLevelIsNullAndIsMissingFalseAndTest(workId, questionId1, subject, 0);
|
|
- if(qcount == 0){
|
|
|
|
|
|
+ if (qcount == 0) {
|
|
statusMap.put(markSubject.getId(), false);
|
|
statusMap.put(markSubject.getId(), false);
|
|
throw new RuntimeException("没有可分档任务");
|
|
throw new RuntimeException("没有可分档任务");
|
|
}
|
|
}
|
|
@@ -174,7 +174,7 @@ public class StageControlService {
|
|
throw new RuntimeException("请输入正确的分配任务数量");
|
|
throw new RuntimeException("请输入正确的分配任务数量");
|
|
}
|
|
}
|
|
int waitCount;
|
|
int waitCount;
|
|
- if(Objects.isNull(questionId)) {
|
|
|
|
|
|
+ if (Objects.isNull(questionId)) {
|
|
waitCount = paperRepo.countByWorkIdAndSubjectAndIsMissingFalseAndActiveFalseAndBatchNoIsNullAndTest(workId, subject, 0);
|
|
waitCount = paperRepo.countByWorkIdAndSubjectAndIsMissingFalseAndActiveFalseAndBatchNoIsNullAndTest(workId, subject, 0);
|
|
} else {
|
|
} else {
|
|
Long questionId1 = Long.valueOf(questionId.toString());
|
|
Long questionId1 = Long.valueOf(questionId.toString());
|
|
@@ -191,7 +191,7 @@ public class StageControlService {
|
|
papers = paperRepo.findByWorkIdAndSubjectAndIsMissingAndTest(workId, subject, false, markSubject.getTest());
|
|
papers = paperRepo.findByWorkIdAndSubjectAndIsMissingAndTest(workId, subject, false, markSubject.getTest());
|
|
} else {
|
|
} else {
|
|
List<Paper> papersList;
|
|
List<Paper> papersList;
|
|
- if(Objects.isNull(questionId)) {
|
|
|
|
|
|
+ if (Objects.isNull(questionId)) {
|
|
papersList = paperRepo.findByWorkIdAndSubjectAndIsMissingFalseAndActiveFalseAndTestOrderByQuestionId(workId, subject, TrialEnum.DEFAULT.getId());
|
|
papersList = paperRepo.findByWorkIdAndSubjectAndIsMissingFalseAndActiveFalseAndTestOrderByQuestionId(workId, subject, TrialEnum.DEFAULT.getId());
|
|
} else {
|
|
} else {
|
|
Long questionId1 = Long.valueOf(questionId.toString());
|
|
Long questionId1 = Long.valueOf(questionId.toString());
|
|
@@ -323,7 +323,7 @@ public class StageControlService {
|
|
assignTaskService.assignForGrouping(papers, markerGroups, markSubject, null);
|
|
assignTaskService.assignForGrouping(papers, markerGroups, markSubject, null);
|
|
}
|
|
}
|
|
|
|
|
|
- private void enterToScoreStage(MarkSubject markSubject) {
|
|
|
|
|
|
+ public void enterToScoreStage(MarkSubject markSubject) {
|
|
Long workId = markSubject.getWorkId();
|
|
Long workId = markSubject.getWorkId();
|
|
Subject subject = markSubject.getSubject();
|
|
Subject subject = markSubject.getSubject();
|
|
List<MarkUser> markers = markUserRepo.findByWorkIdAndSubjectAndRole(workId, subject, Role.MARKER);
|
|
List<MarkUser> markers = markUserRepo.findByWorkIdAndSubjectAndRole(workId, subject, Role.MARKER);
|
|
@@ -337,7 +337,6 @@ public class StageControlService {
|
|
statusMap.put(markSubject.getId(), false);
|
|
statusMap.put(markSubject.getId(), false);
|
|
throw new RuntimeException("没有分档完成");
|
|
throw new RuntimeException("没有分档完成");
|
|
}
|
|
}
|
|
- //todo 待修改
|
|
|
|
this.isPtFull(workId, markSubject);
|
|
this.isPtFull(workId, markSubject);
|
|
List<MarkerGroup> markerGroups = markerGroupRepo.findByWorkIdAndSubject(workId, subject);
|
|
List<MarkerGroup> markerGroups = markerGroupRepo.findByWorkIdAndSubject(workId, subject);
|
|
if (markerGroups.size() == 0) {
|
|
if (markerGroups.size() == 0) {
|
|
@@ -348,7 +347,8 @@ public class StageControlService {
|
|
assignTaskService.assignForGroupingScore(markerGroups, markSubject);
|
|
assignTaskService.assignForGroupingScore(markerGroups, markSubject);
|
|
}
|
|
}
|
|
|
|
|
|
- public void enterScoreStage(MarkSubject markSubject, List<TaskPublishSetting> taskList) throws Exception {
|
|
|
|
|
|
+ @Transactional
|
|
|
|
+ public void enterScoreStage(MarkSubject markSubject, List<TaskPublishSetting> taskList, Object questionId) throws Exception {
|
|
Long workId = markSubject.getWorkId();
|
|
Long workId = markSubject.getWorkId();
|
|
Subject subject = markSubject.getSubject();
|
|
Subject subject = markSubject.getSubject();
|
|
List<MarkUser> markers = markUserRepo.findByWorkIdAndSubjectAndRole(workId, subject, Role.MARKER);
|
|
List<MarkUser> markers = markUserRepo.findByWorkIdAndSubjectAndRole(workId, subject, Role.MARKER);
|
|
@@ -373,7 +373,7 @@ public class StageControlService {
|
|
for (TaskPublishSetting taskPublishSetting : taskList) {
|
|
for (TaskPublishSetting taskPublishSetting : taskList) {
|
|
if (Objects.nonNull(taskPublishSetting.getTaskCount()) && taskPublishSetting.getTaskCount() > 0 && taskPublishSetting.getWaitCount() < taskPublishSetting.getTaskCount()) {
|
|
if (Objects.nonNull(taskPublishSetting.getTaskCount()) && taskPublishSetting.getTaskCount() > 0 && taskPublishSetting.getWaitCount() < taskPublishSetting.getTaskCount()) {
|
|
statusMap.put(markSubject.getId(), false);
|
|
statusMap.put(markSubject.getId(), false);
|
|
- throw new RuntimeException(taskPublishSetting.getCode()+"档位本次任务数量必须小于等于未评数量");
|
|
|
|
|
|
+ throw new RuntimeException(taskPublishSetting.getCode() + "档位本次任务数量必须小于等于未评数量");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//已发布任务是否都已完成
|
|
//已发布任务是否都已完成
|
|
@@ -386,26 +386,80 @@ public class StageControlService {
|
|
//总的发布任务数
|
|
//总的发布任务数
|
|
int totalTaskCount = taskList.stream().mapToInt(TaskPublishSetting::getTaskCount).sum();
|
|
int totalTaskCount = taskList.stream().mapToInt(TaskPublishSetting::getTaskCount).sum();
|
|
|
|
|
|
- Sort sort = new Sort("questionId","level");
|
|
|
|
- List<Paper> papers = paperRepo.findByWorkIdAndSubjectAndIsMissingFalseAndActiveTrueAndScoreBatchNoIsNull(workId, subject, sort);
|
|
|
|
|
|
+ Sort sort = new Sort("questionId", "level");
|
|
|
|
+ List<Paper> papers;
|
|
|
|
+ //questionId为空,为所有考区
|
|
|
|
+ if (Objects.isNull(questionId)) {
|
|
|
|
+ int totalCount = taskList.stream().mapToInt(TaskPublishSetting::getTotalCount).sum();
|
|
|
|
+ int successCount = taskList.stream().mapToInt(TaskPublishSetting::getSuccessCount).sum();
|
|
|
|
+ papers = paperRepo.findByWorkIdAndSubjectAndIsMissingFalseAndActiveTrueAndScoreBatchNoIsNull(workId, subject, sort);
|
|
|
|
+ if (successCount > 0) {
|
|
|
|
+ statusMap.put(markSubject.getId(), false);
|
|
|
|
+ throw new RuntimeException("单考区发布过任务,不能再发布所有考区任务");
|
|
|
|
+ } else if (totalTaskCount - totalCount != 0) {
|
|
|
|
+ statusMap.put(markSubject.getId(), false);
|
|
|
|
+ throw new RuntimeException("选择所有考区时,要发布所有任务");
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ Long questionId0 = Long.valueOf(questionId.toString());
|
|
|
|
+ papers = paperRepo.findByWorkIdAndQuestionIdAndSubjectAndIsMissingFalseAndActiveTrueAndScoreBatchNoIsNull(workId, questionId0, subject, sort);
|
|
|
|
+ }
|
|
papers = papers.subList(0, totalTaskCount);
|
|
papers = papers.subList(0, totalTaskCount);
|
|
|
|
|
|
assignTaskService.assignForGrouping(papers, markerGroups, markSubject, taskList);
|
|
assignTaskService.assignForGrouping(papers, markerGroups, markSubject, taskList);
|
|
|
|
|
|
//保存发布数据
|
|
//保存发布数据
|
|
- int max = taskPublishSettingRepo.maxPublishCount(workId, subject.name()) + 1;
|
|
|
|
|
|
+ int max = taskPublishSettingRepo.maxPublishCount(workId, subject.name());
|
|
long scoreBatchNo = papers.get(0).getScoreBatchNo();
|
|
long scoreBatchNo = papers.get(0).getScoreBatchNo();
|
|
- taskList.stream().map(m->{
|
|
|
|
- m.setWorkId(workId);
|
|
|
|
- m.setSubject(subject.name());
|
|
|
|
- m.setSuccessCount(m.getSuccessCount() + m.getTaskCount());
|
|
|
|
- m.setWaitCount(m.getTotalCount() - m.getSuccessCount());
|
|
|
|
- m.setTaskCount(0);
|
|
|
|
- m.setBatchNo(scoreBatchNo);
|
|
|
|
- m.setPublishCount(max);
|
|
|
|
- return m;
|
|
|
|
- }).collect(Collectors.toList());
|
|
|
|
- taskPublishSettingRepo.save(taskList);
|
|
|
|
|
|
+ List<TaskPublishSetting> taskListAll = taskPublishSettingRepo.findByWorkIdAndSubjectAndPublishCount(workId, subject.name(), max);
|
|
|
|
+ if (Objects.isNull(questionId)) {
|
|
|
|
+ Map<String, TaskPublishSetting> map = taskList.stream().collect(Collectors.toMap(TaskPublishSetting::getCode, p -> p));
|
|
|
|
+ taskListAll.stream().map(m -> {
|
|
|
|
+ m.setId(null);
|
|
|
|
+ m.setWorkId(workId);
|
|
|
|
+ m.setQuestionId(m.getQuestionId());
|
|
|
|
+ m.setSubject(subject.name());
|
|
|
|
+ m.setCode(m.getCode());
|
|
|
|
+ m.setSuccessCount(m.getTotalCount());
|
|
|
|
+ m.setWaitCount(0);
|
|
|
|
+ m.setSortRule(map.get(m.getCode()).getSortRule());
|
|
|
|
+ m.setDisplayNumber(map.get(m.getCode()).getDisplayNumber());
|
|
|
|
+ m.setTaskCount(0);
|
|
|
|
+ m.setBatchNo(scoreBatchNo);
|
|
|
|
+ m.setPublishCount(max + 1);
|
|
|
|
+ return m;
|
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
+ taskPublishSettingRepo.save(taskListAll);
|
|
|
|
+ } else {
|
|
|
|
+ Long questionId0 = Long.valueOf(questionId.toString());
|
|
|
|
+ List<TaskPublishSetting> finalList = taskListAll.stream().map(m -> {
|
|
|
|
+ TaskPublishSetting taskPublishSetting = new TaskPublishSetting();
|
|
|
|
+ taskPublishSetting.setId(null);
|
|
|
|
+ taskPublishSetting.setWorkId(m.getWorkId());
|
|
|
|
+ taskPublishSetting.setQuestionId(m.getQuestionId());
|
|
|
|
+ taskPublishSetting.setSubject(m.getSubject());
|
|
|
|
+ taskPublishSetting.setCode(m.getCode());
|
|
|
|
+ taskPublishSetting.setSuccessCount(m.getSuccessCount());
|
|
|
|
+ taskPublishSetting.setTotalCount(m.getTotalCount());
|
|
|
|
+ taskPublishSetting.setWaitCount(m.getTotalCount());
|
|
|
|
+ taskPublishSetting.setSortRule(m.getSortRule());
|
|
|
|
+ taskPublishSetting.setTaskCount(0);
|
|
|
|
+ taskPublishSetting.setPublishCount(max + 1);
|
|
|
|
+ taskPublishSetting.setBatchNo(scoreBatchNo);
|
|
|
|
+ for (TaskPublishSetting tps : taskList) {
|
|
|
|
+ if (m.getQuestionId().equals(questionId0) && m.getCode().equals(tps.getCode())) {
|
|
|
|
+ taskPublishSetting.setSuccessCount(tps.getSuccessCount() + tps.getTaskCount());
|
|
|
|
+ taskPublishSetting.setWaitCount(tps.getTotalCount() - tps.getSuccessCount());
|
|
|
|
+ taskPublishSetting.setSortRule(tps.getSortRule());
|
|
|
|
+ taskPublishSetting.setDisplayNumber(tps.getDisplayNumber());
|
|
|
|
+ taskPublishSetting.setTaskCount(0);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return taskPublishSetting;
|
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
+ taskPublishSettingRepo.save(finalList);
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -502,13 +556,26 @@ public class StageControlService {
|
|
*
|
|
*
|
|
* @param markSubject
|
|
* @param markSubject
|
|
*/
|
|
*/
|
|
- public List scoreProgress(MarkSubject markSubject) {
|
|
|
|
- List<TaskPublishSetting> publishSettings = taskPublishSettingRepo.findByWorkIdAndSubject(markSubject.getWorkId(), markSubject.getSubject().name());
|
|
|
|
|
|
+ public List scoreProgress(MarkSubject markSubject, Long questionId) {
|
|
|
|
+ /*List<TaskPublishSetting> publishSettings = taskPublishSettingRepo.findByWorkIdAndSubject(markSubject.getWorkId(), markSubject.getSubject().name());
|
|
if (publishSettings != null && publishSettings.size() > 0) {
|
|
if (publishSettings != null && publishSettings.size() > 0) {
|
|
int maxCount = taskPublishSettingRepo.maxPublishCount(markSubject.getWorkId(), markSubject.getSubject().name());
|
|
int maxCount = taskPublishSettingRepo.maxPublishCount(markSubject.getWorkId(), markSubject.getSubject().name());
|
|
return taskPublishSettingRepo.findByWorkIdAndSubjectAndPublishCount(markSubject.getWorkId(), markSubject.getSubject().name(), maxCount);
|
|
return taskPublishSettingRepo.findByWorkIdAndSubjectAndPublishCount(markSubject.getWorkId(), markSubject.getSubject().name(), maxCount);
|
|
|
|
+ }*/
|
|
|
|
+
|
|
|
|
+ Integer maxCount = taskPublishSettingRepo.maxPublishCountByQuestionId(markSubject.getWorkId(), Long.valueOf(questionId.toString()), markSubject.getSubject().name());
|
|
|
|
+ if (maxCount != null && maxCount.intValue() >= 0) {
|
|
|
|
+ List settingList = null;
|
|
|
|
+ //单个考区
|
|
|
|
+ if (questionId != null) {
|
|
|
|
+ settingList = taskPublishSettingRepo.findByWorkIdAndQuestionIdAndSubjectAndPublishCount(markSubject.getWorkId(), questionId, markSubject.getSubject().name(), maxCount);
|
|
|
|
+ }
|
|
|
|
+ //所有考区
|
|
|
|
+ else {
|
|
|
|
+ settingList = taskPublishSettingRepo.findAllByWorkIdAndSubjectAndPublishCount(markSubject.getWorkId(), markSubject.getSubject().name(), maxCount);
|
|
|
|
+ }
|
|
|
|
+ return settingList;
|
|
}
|
|
}
|
|
-
|
|
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|