|
@@ -253,6 +253,34 @@ public class PaperService {
|
|
|
return addWithQuestion(paper);
|
|
|
// return Result.ok(paper);
|
|
|
}
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Result uploadPaperTest(PaperVo paperVo, Long templateId, String url, byte[] data) {
|
|
|
+ Paper paper = init(paperVo, url);
|
|
|
+ paper.setRemark(remarkTemplateRepo.getOne(paperVo.getRemarkId()).getRemark());
|
|
|
+ XWPFDocument document = WordUtil.open(data);
|
|
|
+ PaperTemplate template = paperTemplateService.getOrDefault(templateId);
|
|
|
+ if (template == null) {
|
|
|
+ return Result.fail(String.format("未找到试卷模板Id为 %s 的模板", templateId));
|
|
|
+ }
|
|
|
+ logger.info("parsing paper,url is {}", url);
|
|
|
+ parsePaper(paper, template, document);
|
|
|
+ logger.info("parse paper finished,url is {}", url);
|
|
|
+ paper.setStatus(1);
|
|
|
+ paper.setTotalScore(100);
|
|
|
+ paper.setQuestionNum(paper.getQuestions().size());
|
|
|
+ paper.setDuration(paper.getQuestionNum() * 2);
|
|
|
+ //TODO 这里要根据实际情况改
|
|
|
+// paper.setSectionDurations("100,20,20");
|
|
|
+// paper.setSectionRests("2,2,2");
|
|
|
+// paper.setSectionNums("50,10,10");
|
|
|
+ WordUtil.close(document);
|
|
|
+ //TODO due ability score
|
|
|
+ //TODO convert parse exception to reason
|
|
|
+ //TODO use parallel
|
|
|
+// Result<Paper> paperResult = add(paper);
|
|
|
+// return addWithQuestion(paper);
|
|
|
+ return Result.ok(paper);
|
|
|
+ }
|
|
|
|
|
|
private Map<String, List<XWPFParagraph>> initSections(Paper paper, String sectionPattern, String questionPattern, String picturePattern, List<XWPFParagraph> paragraphs) {
|
|
|
//保证顺序
|