|
@@ -123,7 +123,7 @@ public class PrintFinishServiceImpl implements PrintFinishService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void insertScanAnswerCard(ExamDetailCourseInitMarkDto dto) {
|
|
|
+ public void insertScanAnswerCardAndMarkQuestion(ExamDetailCourseInitMarkDto dto) {
|
|
|
String paperType = dto.getPaperType();
|
|
|
if (StringUtils.isNotBlank(paperType)) {
|
|
|
ExamTaskDetail examTaskDetail = examTaskDetailService.findByExamIdAndCourseCodeAndPaperNumber(dto.getSchoolId(), dto.getExamId(), dto.getCourseCode(), dto.getPaperNumber());
|
|
@@ -134,54 +134,64 @@ public class PrintFinishServiceImpl implements PrintFinishService {
|
|
|
// 解析卡格式中试卷结构并保存
|
|
|
this.insertMarkQuestion(dto.getExamId(), dto.getPaperNumber(), examCard.getContent());
|
|
|
|
|
|
- ScanAnswerCard scanAnswerCard = scanAnswerCardService.getByExamIdAndCoursePaperIdAndCardId(dto.getExamId(), dto.getCoursePaperId(), paperInfoVo.getCardId());
|
|
|
- if (scanAnswerCard != null) {
|
|
|
- continue;
|
|
|
- }
|
|
|
+ // 保存卡格式
|
|
|
+ this.insertScanAnswerCard(dto, paperInfoVo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void insertScanAnswerCard(ExamDetailCourseInitMarkDto dto, PaperInfoVo paperInfoVo) {
|
|
|
+ ExamCard examCard = examCardService.getById(paperInfoVo.getCardId());
|
|
|
+ if (examCard != null) {
|
|
|
|
|
|
- File tempFile = SystemConstant.getFileTempDirVar(System.currentTimeMillis() + File.separator + SystemConstant.getNanoId(), SystemConstant.TEMP_PREFIX);
|
|
|
- String rootPath = tempFile.getParent();
|
|
|
- String jsonPath = rootPath + File.separator + paperInfoVo.getCardId() + SystemConstant.JSON_PREFIX;
|
|
|
- File jsonFile = SystemConstant.createJsonFile(jsonPath, examCard.getContent());
|
|
|
- if (jsonFile.exists()) {
|
|
|
- InputStream inputStream = null;
|
|
|
+ ScanAnswerCard scanAnswerCard = scanAnswerCardService.getByExamIdAndCoursePaperIdAndCardId(dto.getExamId(), dto.getCoursePaperId(), paperInfoVo.getCardId());
|
|
|
+ if (scanAnswerCard != null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ File tempFile = SystemConstant.getFileTempDirVar(System.currentTimeMillis() + File.separator + SystemConstant.getNanoId(), SystemConstant.TEMP_PREFIX);
|
|
|
+ String rootPath = tempFile.getParent();
|
|
|
+ String jsonPath = rootPath + File.separator + paperInfoVo.getCardId() + SystemConstant.JSON_PREFIX;
|
|
|
+ File jsonFile = SystemConstant.createJsonFile(jsonPath, examCard.getContent());
|
|
|
+ if (jsonFile.exists()) {
|
|
|
+ InputStream inputStream = null;
|
|
|
+ try {
|
|
|
+ inputStream = new FileInputStream(jsonFile);
|
|
|
+ String md5 = DigestUtils.md5Hex(new FileInputStream(jsonFile));
|
|
|
+ Integer number = scanAnswerCardService.findMaxCardNumberByExamId(dto.getExamId());
|
|
|
+ String path = markFileService.getAnswerCardUri(dto.getExamId(), dto.getCoursePaperId(), number);
|
|
|
+ String uploadPath = fileStoreUtils.uploadFile(inputStream, md5, UploadFileEnum.CARD, path);
|
|
|
+
|
|
|
+ scanAnswerCard = new ScanAnswerCard();
|
|
|
+ scanAnswerCard.setExamId(dto.getExamId());
|
|
|
+ scanAnswerCard.setPaperNumber(dto.getPaperNumber());
|
|
|
+ scanAnswerCard.setCoursePaperId(dto.getCoursePaperId());
|
|
|
+ scanAnswerCard.setCardId(paperInfoVo.getCardId());
|
|
|
+ scanAnswerCard.setNumber(number);
|
|
|
+ scanAnswerCard.setSource(CardSource.WEB);
|
|
|
+ scanAnswerCard.setUri(uploadPath);
|
|
|
+ scanAnswerCard.setMd5(md5);
|
|
|
+ scanAnswerCard.setNeedAdapte(true);
|
|
|
+ scanAnswerCardService.save(scanAnswerCard);
|
|
|
+ } catch (IOException e) {
|
|
|
+ log.info("考试[{}],试卷编号[{}],题卡ID[{}]同步阅卷失败", dto.getExamId(), dto.getPaperNumber(), paperInfoVo.getCardId());
|
|
|
+ } finally {
|
|
|
+ try {
|
|
|
+ FileUtils.forceDeleteOnExit(jsonFile);
|
|
|
+ } catch (IOException e) {
|
|
|
+ log.info("删除jsonFile失败");
|
|
|
+ }
|
|
|
+ if (inputStream != null) {
|
|
|
try {
|
|
|
- File file = jsonFile;
|
|
|
- inputStream = new FileInputStream(jsonFile);
|
|
|
- String md5 = DigestUtils.md5Hex(new FileInputStream(file));
|
|
|
- Integer number = scanAnswerCardService.findMaxCardNumberByExamId(dto.getExamId());
|
|
|
- String path = markFileService.getAnswerCardUri(dto.getExamId(), dto.getCoursePaperId(), number);
|
|
|
- String uploadPath = fileStoreUtils.uploadFile(inputStream, md5, UploadFileEnum.CARD, path);
|
|
|
-
|
|
|
- scanAnswerCard = new ScanAnswerCard();
|
|
|
- scanAnswerCard.setExamId(dto.getExamId());
|
|
|
- scanAnswerCard.setPaperNumber(dto.getPaperNumber());
|
|
|
- scanAnswerCard.setCoursePaperId(dto.getCoursePaperId());
|
|
|
- scanAnswerCard.setCardId(paperInfoVo.getCardId());
|
|
|
- scanAnswerCard.setNumber(number);
|
|
|
- scanAnswerCard.setSource(CardSource.WEB);
|
|
|
- scanAnswerCard.setUri(uploadPath);
|
|
|
- scanAnswerCard.setMd5(md5);
|
|
|
- scanAnswerCard.setNeedAdapte(true);
|
|
|
- scanAnswerCardService.save(scanAnswerCard);
|
|
|
+ inputStream.close();
|
|
|
} catch (IOException e) {
|
|
|
- log.info("考试[{}],试卷编号[{}],题卡ID[{}]同步阅卷失败", dto.getExamId(), dto.getPaperNumber(), paperInfoVo.getCardId());
|
|
|
- } finally {
|
|
|
- try {
|
|
|
- FileUtils.forceDeleteOnExit(jsonFile);
|
|
|
- } catch (IOException e) {
|
|
|
- log.info("删除jsonFile失败");
|
|
|
- }
|
|
|
- if (inputStream != null) {
|
|
|
- try {
|
|
|
- inputStream.close();
|
|
|
- } catch (IOException e) {
|
|
|
- log.info("关闭inputStream流失败");
|
|
|
- }
|
|
|
- }
|
|
|
+ log.info("关闭inputStream流失败");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
}
|