|
@@ -467,51 +467,53 @@ public class ScanOmrTaskServiceImpl extends ServiceImpl<ScanOmrTaskMapper, ScanO
|
|
}
|
|
}
|
|
concurrentService.getReadWriteLock(LockType.STUDENT + "-" + task.getStudentId()).writeLock().lock();
|
|
concurrentService.getReadWriteLock(LockType.STUDENT + "-" + task.getStudentId()).writeLock().lock();
|
|
|
|
|
|
- for (OmrTaskPage page : task.getPages()) {
|
|
|
|
- ScanOmrTaskResultPageDto pageVo = result.findPage(page.getIndex());
|
|
|
|
- if (pageVo == null) {
|
|
|
|
- throw new ParameterException("page[" + page.getIndex() + "]不存在");
|
|
|
|
- }
|
|
|
|
- for (OmrTaskItem item : page.getItems()) {
|
|
|
|
- if (OmrField.ABSENT.equals(item.getField())) {
|
|
|
|
- if (pageVo.getAbsent() == null) {
|
|
|
|
- throw new ParameterException("page[" + page.getIndex() + "].absent不存在");
|
|
|
|
- }
|
|
|
|
- item.setFirstResult(pageVo.getAbsent().toString());
|
|
|
|
|
|
+ try {
|
|
|
|
+ for (OmrTaskPage page : task.getPages()) {
|
|
|
|
+ ScanOmrTaskResultPageDto pageVo = result.findPage(page.getIndex());
|
|
|
|
+ if (pageVo == null) {
|
|
|
|
+ throw new ParameterException("page[" + page.getIndex() + "]不存在");
|
|
}
|
|
}
|
|
- if (OmrField.BREACH.equals(item.getField())) {
|
|
|
|
- if (pageVo.getBreach() == null) {
|
|
|
|
- throw new ParameterException("page[" + page.getIndex() + "].breach不存在");
|
|
|
|
|
|
+ for (OmrTaskItem item : page.getItems()) {
|
|
|
|
+ if (OmrField.ABSENT.equals(item.getField())) {
|
|
|
|
+ if (pageVo.getAbsent() == null) {
|
|
|
|
+ throw new ParameterException("page[" + page.getIndex() + "].absent不存在");
|
|
|
|
+ }
|
|
|
|
+ item.setFirstResult(pageVo.getAbsent().toString());
|
|
}
|
|
}
|
|
- item.setFirstResult(pageVo.getBreach().toString());
|
|
|
|
- }
|
|
|
|
- if (OmrField.QUESTION.equals(item.getField())) {
|
|
|
|
- String content = pageVo.getQuestion() != null ? pageVo.getQuestion().get(item.getIndex())
|
|
|
|
- : null;
|
|
|
|
- if (content == null) {
|
|
|
|
- throw new ParameterException(
|
|
|
|
- "page[" + page.getIndex() + "].question[" + item.getIndex() + "]不存在");
|
|
|
|
|
|
+ if (OmrField.BREACH.equals(item.getField())) {
|
|
|
|
+ if (pageVo.getBreach() == null) {
|
|
|
|
+ throw new ParameterException("page[" + page.getIndex() + "].breach不存在");
|
|
|
|
+ }
|
|
|
|
+ item.setFirstResult(pageVo.getBreach().toString());
|
|
}
|
|
}
|
|
- item.setFirstResult(content);
|
|
|
|
- }
|
|
|
|
- if (OmrField.SELECTIVE.equals(item.getField())) {
|
|
|
|
- String content = pageVo.getSelective() != null ? pageVo.getSelective().get(item.getIndex())
|
|
|
|
- : null;
|
|
|
|
- if (content == null) {
|
|
|
|
- throw new ParameterException(
|
|
|
|
- "page[" + page.getIndex() + "].selective[" + item.getIndex() + "]不存在");
|
|
|
|
|
|
+ if (OmrField.QUESTION.equals(item.getField())) {
|
|
|
|
+ String content = pageVo.getQuestion() != null ? pageVo.getQuestion().get(item.getIndex())
|
|
|
|
+ : null;
|
|
|
|
+ if (content == null) {
|
|
|
|
+ throw new ParameterException(
|
|
|
|
+ "page[" + page.getIndex() + "].question[" + item.getIndex() + "]不存在");
|
|
|
|
+ }
|
|
|
|
+ item.setFirstResult(content);
|
|
|
|
+ }
|
|
|
|
+ if (OmrField.SELECTIVE.equals(item.getField())) {
|
|
|
|
+ String content = pageVo.getSelective() != null ? pageVo.getSelective().get(item.getIndex())
|
|
|
|
+ : null;
|
|
|
|
+ if (content == null) {
|
|
|
|
+ throw new ParameterException(
|
|
|
|
+ "page[" + page.getIndex() + "].selective[" + item.getIndex() + "]不存在");
|
|
|
|
+ }
|
|
|
|
+ item.setFirstResult(content);
|
|
}
|
|
}
|
|
- item.setFirstResult(content);
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ task.setStatus(OmrTaskStatus.PROCESSED);
|
|
|
|
+ updatePaperResult(result, task.getPaperId(), userId);
|
|
|
|
+ task.setUserId(userId);
|
|
|
|
+ task.setUpdateTime(System.currentTimeMillis());
|
|
|
|
+ this.saveOrUpdate(task);
|
|
|
|
+ } finally {
|
|
|
|
+ concurrentService.getReadWriteLock(LockType.STUDENT + "-" + task.getStudentId()).writeLock().unlock();
|
|
}
|
|
}
|
|
- task.setStatus(OmrTaskStatus.PROCESSED);
|
|
|
|
-
|
|
|
|
- updatePaperResult(result, task.getPaperId(), userId);
|
|
|
|
- task.setUserId(userId);
|
|
|
|
- task.setUpdateTime(System.currentTimeMillis());
|
|
|
|
- this.saveOrUpdate(task);
|
|
|
|
- concurrentService.getReadWriteLock(LockType.STUDENT + "-" + task.getStudentId()).writeLock().unlock();
|
|
|
|
}
|
|
}
|
|
ScanOmrTaskSaveDto vo = new ScanOmrTaskSaveDto();
|
|
ScanOmrTaskSaveDto vo = new ScanOmrTaskSaveDto();
|
|
vo.setStudentId(studentId);
|
|
vo.setStudentId(studentId);
|