瀏覽代碼

3.3.1 题库试卷包解析

xiaofei 1 年之前
父節點
當前提交
de705fb59b

+ 11 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamTaskPaperData.java

@@ -50,6 +50,9 @@ public class ExamTaskPaperData implements Serializable {
     @ApiModelProperty(value = "标答pdf文件地址(answer.pdf上传地址)")
     @ApiModelProperty(value = "标答pdf文件地址(answer.pdf上传地址)")
     private String answerPdf;
     private String answerPdf;
 
 
+    @ApiModelProperty(value = "唯一标识")
+    private String uuid;
+
     public Long getExamId() {
     public Long getExamId() {
         return examId;
         return examId;
     }
     }
@@ -107,6 +110,14 @@ public class ExamTaskPaperData implements Serializable {
         this.answerPdf = answerPdf;
         this.answerPdf = answerPdf;
     }
     }
 
 
+    public String getUuid() {
+        return uuid;
+    }
+
+    public void setUuid(String uuid) {
+        this.uuid = uuid;
+    }
+
     @Override
     @Override
     public String toString() {
     public String toString() {
         return "ExamTaskPaperData{" +
         return "ExamTaskPaperData{" +

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskService.java

@@ -216,5 +216,5 @@ public interface ExamTaskService extends IService<ExamTask> {
 
 
     IPage<TikuPaperInfo> pageTikuPaper(String courseCode, String paperName, String account, Integer pageNumber, Integer pageSize);
     IPage<TikuPaperInfo> pageTikuPaper(String courseCode, String paperName, String account, Integer pageNumber, Integer pageSize);
 
 
-    String getTikuPaperData(Long examId, Long paperId);
+    Map<String, String> getTikuPaperData(Long examId, Long paperId);
 }
 }

+ 21 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -25,6 +25,7 @@ import com.qmth.distributed.print.business.mapper.ExamTaskMapper;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.distributed.print.business.templete.execute.AsyncPaperReviewPdfExportService;
 import com.qmth.distributed.print.business.templete.execute.AsyncPaperReviewPdfExportService;
 import com.qmth.distributed.print.business.util.CreatePdfUtil;
 import com.qmth.distributed.print.business.util.CreatePdfUtil;
+import com.qmth.distributed.print.business.util.PdfUtil;
 import com.qmth.teachcloud.common.bean.dto.AssignTeacherDto;
 import com.qmth.teachcloud.common.bean.dto.AssignTeacherDto;
 import com.qmth.teachcloud.common.bean.dto.BlurryUserDto;
 import com.qmth.teachcloud.common.bean.dto.BlurryUserDto;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
@@ -35,6 +36,7 @@ import com.qmth.teachcloud.common.bean.result.BasicStudentResult;
 import com.qmth.teachcloud.common.bean.result.SysUserResult;
 import com.qmth.teachcloud.common.bean.result.SysUserResult;
 import com.qmth.teachcloud.common.bean.result.TbTaskDetailResult;
 import com.qmth.teachcloud.common.bean.result.TbTaskDetailResult;
 import com.qmth.teachcloud.common.bean.tiku.TikuPaperInfo;
 import com.qmth.teachcloud.common.bean.tiku.TikuPaperInfo;
+import com.qmth.teachcloud.common.bean.vo.FilePathVo;
 import com.qmth.teachcloud.common.bean.vo.PaperInfoVo;
 import com.qmth.teachcloud.common.bean.vo.PaperInfoVo;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.entity.*;
@@ -47,6 +49,7 @@ import com.qmth.teachcloud.common.util.excel.ExcelError;
 import org.activiti.engine.ActivitiObjectNotFoundException;
 import org.activiti.engine.ActivitiObjectNotFoundException;
 import org.activiti.engine.TaskService;
 import org.activiti.engine.TaskService;
 import org.activiti.engine.task.Task;
 import org.activiti.engine.task.Task;
+import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
@@ -2145,12 +2148,15 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     }
     }
 
 
     @Override
     @Override
-    public String getTikuPaperData(Long examId, Long paperId) {
+    public Map<String, String> getTikuPaperData(Long examId, Long paperId) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        Map<String, String> map = new HashMap<>();
         try {
         try {
             File paperDataFile = tikuUtils.getTikuPaperData(schoolId, paperId);
             File paperDataFile = tikuUtils.getTikuPaperData(schoolId, paperId);
             ExamTaskPaperData examTaskPaperData = saveTikuPaperData(examId, paperId, paperDataFile);
             ExamTaskPaperData examTaskPaperData = saveTikuPaperData(examId, paperId, paperDataFile);
-            return examTaskPaperData.getAnswerJson();
+            map.put("uuid", examTaskPaperData.getUuid());
+            map.put("answerJson", examTaskPaperData.getAnswerJson());
+            return map;
         } catch (Exception e) {
         } catch (Exception e) {
             throw new RuntimeException(e);
             throw new RuntimeException(e);
         }
         }
@@ -2164,12 +2170,24 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
 
 
             ExamTaskPaperData examTaskPaperData = new ExamTaskPaperData();
             ExamTaskPaperData examTaskPaperData = new ExamTaskPaperData();
             examTaskPaperData.setExamId(examId);
             examTaskPaperData.setExamId(examId);
-            examTaskPaperData.setPaperNumber(SystemConstant.getNanoId());
+            // 系统自动生成唯一码,命题任务提交时,根据唯一码反向更新真实的试卷编号
+            examTaskPaperData.setPaperNumber("0");
+            examTaskPaperData.setUuid(SystemConstant.getNanoId());
             examTaskPaperData.setPaperId(paperId);
             examTaskPaperData.setPaperId(paperId);
             // paper.json
             // paper.json
+            String paperJson = FileUtils.readFileToString(new File(zipDestPath + File.separator + "paper.json"), StandardCharsets.UTF_8);
+            examTaskPaperData.setPaperJson(paperJson);
             // answer.json
             // answer.json
+            String answerJson = FileUtils.readFileToString(new File(zipDestPath + File.separator + "answer.json"), StandardCharsets.UTF_8);
+            examTaskPaperData.setAnswerJson(answerJson);
             // paper.pdf
             // paper.pdf
+            String paperPdfName = PdfUtil.md5FileName(examTaskPaperData.getUuid() + "paper" + SystemConstant.PDF_PREFIX);
+            FilePathVo filePathVoPaper = fileUploadService.uploadFile(new File(zipDestPath + File.separator + "paper.pdf"), UploadFileEnum.PDF, paperPdfName);
+            examTaskPaperData.setPaperPdf(JSON.toJSONString(filePathVoPaper));
             // answer.pdf
             // answer.pdf
+            String answerPdfName = PdfUtil.md5FileName(examTaskPaperData.getUuid() + "answer" + SystemConstant.PDF_PREFIX);
+            FilePathVo filePathVoAnswer = fileUploadService.uploadFile(new File(zipDestPath + File.separator + "answer.pdf"), UploadFileEnum.PDF, answerPdfName);
+            examTaskPaperData.setAnswerPdf(JSON.toJSONString(filePathVoAnswer));
             return examTaskPaperData;
             return examTaskPaperData;
         } catch (Exception e) {
         } catch (Exception e) {
             throw ExceptionResultEnum.ERROR.exception("获取试卷包数据失败");
             throw ExceptionResultEnum.ERROR.exception("获取试卷包数据失败");

+ 1 - 0
distributed-print/install/mysql/upgrade/3.3.1.sql

@@ -412,5 +412,6 @@ CREATE TABLE `exam_task_paper_data` (
            `answer_json` MEDIUMTEXT NULL COMMENT '试卷答案内容(从answer.json解析)',
            `answer_json` MEDIUMTEXT NULL COMMENT '试卷答案内容(从answer.json解析)',
            `paper_pdf` VARCHAR(200) NULL COMMENT '试卷pdf文件地址(paper.pdf上传地址)',
            `paper_pdf` VARCHAR(200) NULL COMMENT '试卷pdf文件地址(paper.pdf上传地址)',
            `answer_pdf` VARCHAR(200) NULL COMMENT '标答pdf文件地址(answer.pdf上传地址)',
            `answer_pdf` VARCHAR(200) NULL COMMENT '标答pdf文件地址(answer.pdf上传地址)',
+           `uuid` VARCHAR(200) NULL COMMENT '唯一标识',
            PRIMARY KEY (`exam_id`, `paper_number`, `paper_id`))
            PRIMARY KEY (`exam_id`, `paper_number`, `paper_id`))
     COMMENT = '命题任务选择题库试卷相关文件表';
     COMMENT = '命题任务选择题库试卷相关文件表';