|
@@ -960,11 +960,18 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
|
|
|
*/
|
|
|
@Override
|
|
|
public void calculateScore(Long examId,Long taskId) {
|
|
|
- TBTaskHistory task=tbTaskHistoryService.getById(taskId);
|
|
|
- task.setStatus(TaskStatusEnum.RUNNING);
|
|
|
- tbTaskHistoryService.saveOrUpdate(task);
|
|
|
- Long recordId=null;
|
|
|
- try {
|
|
|
+ int timeOutSecond=60*5;
|
|
|
+ String lockKey = SystemConstant.REDIS_LOCK_CALCULATE_SCORE_PREFIX + examId;
|
|
|
+ Boolean lock = redisUtil.lock(lockKey, timeOutSecond);
|
|
|
+ if (!lock) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ TBTaskHistory task=null;
|
|
|
+ Long recordId=null;
|
|
|
+ try {
|
|
|
+ task=tbTaskHistoryService.getById(taskId);
|
|
|
+ task.setStatus(TaskStatusEnum.RUNNING);
|
|
|
+ tbTaskHistoryService.saveOrUpdate(task);
|
|
|
Long startId=0L;
|
|
|
Long index=0L;
|
|
|
Long total=toeExamRecordService.getCountByExamId(examId);
|
|
@@ -981,6 +988,7 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
|
|
|
recordId=rc.getId();
|
|
|
toeExamRecordService.calculateScore(rc.getId());
|
|
|
}
|
|
|
+ redisUtil.expire(lockKey, timeOutSecond);
|
|
|
}
|
|
|
task.setProgress(getPercentage(index, total));
|
|
|
tbTaskHistoryService.saveOrUpdate(task);
|
|
@@ -995,7 +1003,9 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
|
|
|
task.setSummary("处理出错");
|
|
|
task.setStatus(TaskStatusEnum.FINISH);
|
|
|
task.setFinishTime(new Date());
|
|
|
- }
|
|
|
+ } finally {
|
|
|
+ redisUtil.releaseLock(lockKey);
|
|
|
+ }
|
|
|
tbTaskHistoryService.saveOrUpdate(task);
|
|
|
}
|
|
|
|