|
@@ -61,14 +61,17 @@ public class ToolExportServiceImpl implements ToolExportService {
|
|
@Autowired
|
|
@Autowired
|
|
private AnswerCardService answerCardService;
|
|
private AnswerCardService answerCardService;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private ToolExportService toolExportService;
|
|
|
|
+
|
|
private String getOwSheetUri(Long examId, String subjectCode, String examNumber, Integer paperNumber,
|
|
private String getOwSheetUri(Long examId, String subjectCode, String examNumber, Integer paperNumber,
|
|
- Integer pageIndex) {
|
|
|
|
|
|
+ Integer pageIndex) {
|
|
return String.format("%s/%s/%s/%s/%s/%s-%s.jpg", "sheet", examId, subjectCode, examNumber.substring(0, 4),
|
|
return String.format("%s/%s/%s/%s/%s/%s-%s.jpg", "sheet", examId, subjectCode, examNumber.substring(0, 4),
|
|
examNumber, paperNumber, pageIndex);
|
|
examNumber, paperNumber, pageIndex);
|
|
}
|
|
}
|
|
|
|
|
|
private String getOwSliceUri(Long examId, String subjectCode, String examNumber, Integer paperNumber,
|
|
private String getOwSliceUri(Long examId, String subjectCode, String examNumber, Integer paperNumber,
|
|
- Integer pageIndex, Integer index) {
|
|
|
|
|
|
+ Integer pageIndex, Integer index) {
|
|
return String.format("%s/%s/%s/%s/%s/%s-%s-%s.jpg", "slice", examId, subjectCode, examNumber.substring(0, 4),
|
|
return String.format("%s/%s/%s/%s/%s/%s-%s-%s.jpg", "slice", examId, subjectCode, examNumber.substring(0, 4),
|
|
examNumber, paperNumber, pageIndex, index);
|
|
examNumber, paperNumber, pageIndex, index);
|
|
}
|
|
}
|
|
@@ -93,37 +96,26 @@ public class ToolExportServiceImpl implements ToolExportService {
|
|
try {
|
|
try {
|
|
student = studentService.getById(studentId);
|
|
student = studentService.getById(studentId);
|
|
if (student == null) {
|
|
if (student == null) {
|
|
- throw new ParameterException("未找到考生");
|
|
|
|
|
|
+ return;
|
|
}
|
|
}
|
|
if (ScanStatus.UNEXIST.equals(student.getStatus())) {
|
|
if (ScanStatus.UNEXIST.equals(student.getStatus())) {
|
|
- throw new ParameterException("考生还未扫描");
|
|
|
|
|
|
+ return;
|
|
}
|
|
}
|
|
if (student.getIncomplete()) {
|
|
if (student.getIncomplete()) {
|
|
throw new ParameterException("考生扫描结果缺页");
|
|
throw new ParameterException("考生扫描结果缺页");
|
|
}
|
|
}
|
|
if (UploadStatus.WAITING_UPLOAD.equals(student.getFileUploadStatus())) {
|
|
if (UploadStatus.WAITING_UPLOAD.equals(student.getFileUploadStatus())) {
|
|
- throw new ParameterException("该考生转存任务待处理");
|
|
|
|
|
|
+ return;
|
|
}
|
|
}
|
|
if (UploadStatus.ERROR.equals(student.getFileUploadStatus())) {
|
|
if (UploadStatus.ERROR.equals(student.getFileUploadStatus())) {
|
|
throw new ParameterException("该考生图片转存任务出错");
|
|
throw new ParameterException("该考生图片转存任务出错");
|
|
}
|
|
}
|
|
- ExamEntity exam = examService.getById(student.getExamId());
|
|
|
|
- if (exam.getImageTransferMode().equals(ImageTransferMode.OFF)) {
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- if (ImageTransferMode.CET.equals(exam.getImageTransferMode())) {
|
|
|
|
- studentCheckCet(student);
|
|
|
|
- } else if (ImageTransferMode.OW.equals(exam.getImageTransferMode())) {
|
|
|
|
- studentCheckOw(student);
|
|
|
|
- } else {
|
|
|
|
- throw new ParameterException("转存模式配置错误");
|
|
|
|
- }
|
|
|
|
|
|
+ toolExportService.studentCheckCet(student);
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
if (student != null) {
|
|
if (student != null) {
|
|
log.warn("图片检查异常!stuId:{} subjectCode:{} examNumber:{} err:{}", student.getId(),
|
|
log.warn("图片检查异常!stuId:{} subjectCode:{} examNumber:{} err:{}", student.getId(),
|
|
student.getSubjectCode(), student.getExamNumber(), e.getMessage());
|
|
student.getSubjectCode(), student.getExamNumber(), e.getMessage());
|
|
- student.setImageCheckStatus(ImageCheckStatus.FAILED);
|
|
|
|
- studentService.saveOrUpdate(student);
|
|
|
|
|
|
+ studentService.updateImageCheckStatus(student.getId(), ImageCheckStatus.FAILED);
|
|
} else {
|
|
} else {
|
|
log.error("图片检查错误!err:{}", e.getMessage(), e);
|
|
log.error("图片检查错误!err:{}", e.getMessage(), e);
|
|
}
|
|
}
|
|
@@ -132,54 +124,8 @@ public class ToolExportServiceImpl implements ToolExportService {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- private void studentCheckOw(StudentEntity student) {
|
|
|
|
- List<StudentPaperEntity> spes = studentPaperService.findByStudentId(student.getId());
|
|
|
|
- if (CollectionUtils.isEmpty(spes)) {
|
|
|
|
- throw new ParameterException("没有扫描结果");
|
|
|
|
- }
|
|
|
|
- String imageTransferDir = sysProperty.getTransferDir();
|
|
|
|
- int index = 0;
|
|
|
|
- for (StudentPaperEntity spe : spes) {
|
|
|
|
- List<PaperPageEntity> pgs = paperPageService.listByPaperId(spe.getPaperId());
|
|
|
|
- if (CollectionUtils.isEmpty(pgs)) {
|
|
|
|
- throw new ParameterException("没有扫描页信息");
|
|
|
|
- }
|
|
|
|
- for (PaperPageEntity pg : pgs) {
|
|
|
|
- String sheetPath = pg.getSheetPath();
|
|
|
|
- if (StringUtils.isBlank(sheetPath)) {
|
|
|
|
- throw new ParameterException("没有原图");
|
|
|
|
- }
|
|
|
|
- String mirrorSheetPath = getOwSheetUri(student.getExamId(), student.getSubjectCode(),
|
|
|
|
- student.getExamNumber(), spe.getPaperNumber(), pg.getPageIndex());
|
|
|
|
- File targetSheetFile = new File(imageTransferDir + "/" + mirrorSheetPath);
|
|
|
|
- if (!targetSheetFile.exists()) {
|
|
|
|
- try {
|
|
|
|
- FileUtils.copyToFile(fileStore.read(sheetPath), targetSheetFile);
|
|
|
|
- } catch (Exception e) {
|
|
|
|
- throw new StatusException("文件拷贝出错", e);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- List<String> slices = pg.getSlicePath();
|
|
|
|
- if (CollectionUtils.isNotEmpty(slices)) {
|
|
|
|
- for (String slice : slices) {
|
|
|
|
- index++;
|
|
|
|
- String mirrorSlicePath = getOwSliceUri(student.getExamId(), student.getSubjectCode(),
|
|
|
|
- student.getExamNumber(), spe.getPaperNumber(), pg.getPageIndex(), index);
|
|
|
|
- File targetSliceFile = new File(imageTransferDir + "/" + mirrorSlicePath);
|
|
|
|
- if (!targetSliceFile.exists()) {
|
|
|
|
- try {
|
|
|
|
- FileUtils.copyToFile(fileStore.read(slice), targetSliceFile);
|
|
|
|
- } catch (Exception e) {
|
|
|
|
- throw new StatusException("文件拷贝出错", e);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- private void studentCheckCet(StudentEntity student) {
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public void studentCheckCet(StudentEntity student) {
|
|
List<StudentPaperEntity> spes = studentPaperService.findByStudentId(student.getId());
|
|
List<StudentPaperEntity> spes = studentPaperService.findByStudentId(student.getId());
|
|
if (CollectionUtils.isEmpty(spes)) {
|
|
if (CollectionUtils.isEmpty(spes)) {
|
|
throw new ParameterException("没有扫描结果");
|
|
throw new ParameterException("没有扫描结果");
|
|
@@ -326,6 +272,9 @@ public class ToolExportServiceImpl implements ToolExportService {
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
throw new StatusException("文件拷贝出错", e);
|
|
throw new StatusException("文件拷贝出错", e);
|
|
}
|
|
}
|
|
|
|
+ if (targetSliceFile.length() < 3 * 1024) {
|
|
|
|
+ throw new StatusException("文件大小有误");
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|