|
@@ -132,12 +132,15 @@ public class MarkCronService {
|
|
|
// 获取主观题总分大于0的科目
|
|
|
List<ExamSubject> subjects = subjectService.list(examId, 0);
|
|
|
for (ExamSubject subject : subjects) {
|
|
|
- List<MarkGroup> groups = groupService.findByExamAndSubjectAndStatus(examId, subject.getCode(), MarkStatus.FORMAL);
|
|
|
+ List<MarkGroup> groups = groupService.findByExamAndSubjectAndStatus(examId, subject.getCode(),
|
|
|
+ MarkStatus.FORMAL);
|
|
|
for (MarkGroup markGroup : groups) {
|
|
|
- List<Marker> markers = markerService.findByExamAndSubjectAndGroup(examId, subject.getCode(), markGroup.getNumber());
|
|
|
+ List<Marker> markers = markerService.findByExamAndSubjectAndGroup(examId, subject.getCode(),
|
|
|
+ markGroup.getNumber());
|
|
|
for (Marker marker : markers) {
|
|
|
try {
|
|
|
if (markService.needUpdateQuality(marker, markerActiveExpireMinute)) {
|
|
|
+ log.info("start auto-update markerId: " + marker.getId());
|
|
|
markService.updateQuality(marker);
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
@@ -153,7 +156,8 @@ public class MarkCronService {
|
|
|
List<ExamSubject> subjects = subjectService.listSubjectiveScore(examId, 0d);
|
|
|
for (ExamSubject subject : subjects) {
|
|
|
// 清除缺考考生和违纪考生
|
|
|
- List<ExamStudent> list = studentService.findAbsentOrBreachLibraryStudent(subject.getExamId(), subject.getCode());
|
|
|
+ List<ExamStudent> list = studentService.findAbsentOrBreachLibraryStudent(subject.getExamId(),
|
|
|
+ subject.getCode());
|
|
|
if (list != null) {
|
|
|
for (ExamStudent student : list) {
|
|
|
try {
|
|
@@ -168,14 +172,15 @@ public class MarkCronService {
|
|
|
}
|
|
|
// 处理正常考生
|
|
|
// 生成试评任务
|
|
|
- List<MarkGroup> groups = groupService.findByExamAndSubjectAndStatus(subject.getExamId(), subject.getCode(), MarkStatus.TRIAL);
|
|
|
+ List<MarkGroup> groups = groupService.findByExamAndSubjectAndStatus(subject.getExamId(), subject.getCode(),
|
|
|
+ MarkStatus.TRIAL);
|
|
|
for (MarkGroup group : groups) {
|
|
|
buildTrialLibrary(campusMap, group);
|
|
|
}
|
|
|
// 生成正评任务
|
|
|
// 试评状态的分组也提前生成
|
|
|
- groups = groupService
|
|
|
- .findByExamAndSubjectAndStatus(subject.getExamId(), subject.getCode(), MarkStatus.FORMAL, MarkStatus.TRIAL);
|
|
|
+ groups = groupService.findByExamAndSubjectAndStatus(subject.getExamId(), subject.getCode(),
|
|
|
+ MarkStatus.FORMAL, MarkStatus.TRIAL);
|
|
|
for (MarkGroup group : groups) {
|
|
|
buildFormalLibrary(subject, campusMap, group);
|
|
|
}
|
|
@@ -185,8 +190,8 @@ public class MarkCronService {
|
|
|
private void buildFormalLibrary(ExamSubject subject, Map<String, Campus> campusMap, MarkGroup group) {
|
|
|
Date lastBuildTime = group.getBuildTime();
|
|
|
int count = 0;
|
|
|
- ExamStudent student = studentService
|
|
|
- .findUnLibraryStudent(group.getExamId(), group.getSubjectCode(), group.getNumber(), lastBuildTime);
|
|
|
+ ExamStudent student = studentService.findUnLibraryStudent(group.getExamId(), group.getSubjectCode(),
|
|
|
+ group.getNumber(), lastBuildTime);
|
|
|
while (student != null) {
|
|
|
// 补充学习中心集合
|
|
|
Campus campus = getCampus(student, campusMap);
|
|
@@ -199,8 +204,8 @@ public class MarkCronService {
|
|
|
lockService.watch(LockType.GROUP, group.getExamId(), group.getSubjectCode(), group.getNumber());
|
|
|
lockService.watch(LockType.STUDENT, student.getId());
|
|
|
// 上锁后重复验证分组状态
|
|
|
- if (!groupService.validateStatus(group.getExamId(), group.getSubjectCode(), group.getNumber(), MarkStatus.FORMAL,
|
|
|
- MarkStatus.TRIAL)) {
|
|
|
+ if (!groupService.validateStatus(group.getExamId(), group.getSubjectCode(), group.getNumber(),
|
|
|
+ MarkStatus.FORMAL, MarkStatus.TRIAL)) {
|
|
|
break;
|
|
|
}
|
|
|
// 上锁后重复验证考生状态
|
|
@@ -210,13 +215,16 @@ public class MarkCronService {
|
|
|
count++;
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
- log.error("build formal library error for studentId=" + student.getId() + ", groupNumber=" + group.getNumber(), e);
|
|
|
+ log.error(
|
|
|
+ "build formal library error for studentId=" + student.getId() + ", groupNumber="
|
|
|
+ + group.getNumber(), e);
|
|
|
} finally {
|
|
|
lockService.unwatch(LockType.STUDENT, student.getId());
|
|
|
lockService.unwatch(LockType.GROUP, group.getExamId(), group.getSubjectCode(), group.getNumber());
|
|
|
}
|
|
|
// 取下一个考生
|
|
|
- student = studentService.findUnLibraryStudent(group.getExamId(), group.getSubjectCode(), group.getNumber(), lastBuildTime);
|
|
|
+ student = studentService.findUnLibraryStudent(group.getExamId(), group.getSubjectCode(), group.getNumber(),
|
|
|
+ lastBuildTime);
|
|
|
}
|
|
|
// 有新任务创建,同时正评状态,此时才需要更新任务数量
|
|
|
if (count > 0) {
|
|
@@ -231,7 +239,8 @@ public class MarkCronService {
|
|
|
private void buildTrialLibrary(Map<String, Campus> campusMap, MarkGroup group) {
|
|
|
while (group.getTrialCount() > group.getLibraryCount()) {
|
|
|
// 随机取一个未生成试评任务的考生
|
|
|
- ExamStudent student = studentService.randomUnTrialStudent(group.getExamId(), group.getSubjectCode(), group.getNumber());
|
|
|
+ ExamStudent student = studentService.randomUnTrialStudent(group.getExamId(), group.getSubjectCode(),
|
|
|
+ group.getNumber());
|
|
|
if (student == null) {
|
|
|
return;
|
|
|
}
|
|
@@ -246,7 +255,8 @@ public class MarkCronService {
|
|
|
lockService.watch(LockType.GROUP, group.getExamId(), group.getSubjectCode(), group.getNumber());
|
|
|
lockService.watch(LockType.STUDENT, student.getId());
|
|
|
// 上锁后重新验证分组状态
|
|
|
- if (!groupService.validateStatus(group.getExamId(), group.getSubjectCode(), group.getNumber(), MarkStatus.TRIAL)) {
|
|
|
+ if (!groupService.validateStatus(group.getExamId(), group.getSubjectCode(), group.getNumber(),
|
|
|
+ MarkStatus.TRIAL)) {
|
|
|
break;
|
|
|
}
|
|
|
// 上锁后重复验证考生状态
|
|
@@ -256,7 +266,9 @@ public class MarkCronService {
|
|
|
markService.updateMarkedCount(group);
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
- log.error("build trial library error for studentId=" + student.getId() + ", groupNumber=" + group.getNumber(), e);
|
|
|
+ log.error(
|
|
|
+ "build trial library error for studentId=" + student.getId() + ", groupNumber="
|
|
|
+ + group.getNumber(), e);
|
|
|
} finally {
|
|
|
lockService.unwatch(LockType.STUDENT, student.getId());
|
|
|
lockService.unwatch(LockType.GROUP, group.getExamId(), group.getSubjectCode(), group.getNumber());
|