|
@@ -16,6 +16,7 @@ import com.qmth.teachcloud.common.bean.vo.FilePathVo;
|
|
import com.qmth.teachcloud.common.bean.vo.PrintPathVo;
|
|
import com.qmth.teachcloud.common.bean.vo.PrintPathVo;
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
import com.qmth.teachcloud.common.entity.BasicAttachment;
|
|
import com.qmth.teachcloud.common.entity.BasicAttachment;
|
|
|
|
+import com.qmth.teachcloud.common.enums.ClassifyEnum;
|
|
import com.qmth.teachcloud.common.enums.CreatePdfTypeEnum;
|
|
import com.qmth.teachcloud.common.enums.CreatePdfTypeEnum;
|
|
import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
import com.qmth.teachcloud.common.enums.UploadFileEnum;
|
|
import com.qmth.teachcloud.common.enums.UploadFileEnum;
|
|
@@ -31,7 +32,9 @@ import java.io.File;
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.io.InputStream;
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
|
+import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
+import java.util.Map;
|
|
|
|
|
|
@Service
|
|
@Service
|
|
public class ExamTaskWholeServiceImpl extends ServiceImpl<ExamTaskWholeMapper, ExamTaskWhole> implements ExamTaskWholeService {
|
|
public class ExamTaskWholeServiceImpl extends ServiceImpl<ExamTaskWholeMapper, ExamTaskWhole> implements ExamTaskWholeService {
|
|
@@ -49,20 +52,30 @@ public class ExamTaskWholeServiceImpl extends ServiceImpl<ExamTaskWholeMapper, E
|
|
public void checkAndCreateTask(Long examId, Long courseId, String paperNumber) {
|
|
public void checkAndCreateTask(Long examId, Long courseId, String paperNumber) {
|
|
boolean isAllPrintFinish = examDetailService.allExamDetailIsFinish(examId, courseId, paperNumber);
|
|
boolean isAllPrintFinish = examDetailService.allExamDetailIsFinish(examId, courseId, paperNumber);
|
|
ExamTaskWhole examTaskWhole = this.getByExamIdAndCourseIdAndPaperNumber(examId, courseId, paperNumber);
|
|
ExamTaskWhole examTaskWhole = this.getByExamIdAndCourseIdAndPaperNumber(examId, courseId, paperNumber);
|
|
- if (examTaskWhole != null) {
|
|
|
|
- if (examTaskWhole != null && ExamTaskWholeStatusEnum.INIT.equals(examTaskWhole.getStatus())) {
|
|
|
|
- throw ExceptionResultEnum.ERROR.exception("文件生成中,请稍后再试");
|
|
|
|
- }
|
|
|
|
- if (isAllPrintFinish) {
|
|
|
|
|
|
+ if (isAllPrintFinish) {
|
|
|
|
+ if (examTaskWhole != null) {
|
|
|
|
+ if (examTaskWhole != null && ExamTaskWholeStatusEnum.RUNNING.equals(examTaskWhole.getStatus())) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("文件生成中,请稍后再试");
|
|
|
|
+ }
|
|
examTaskWhole.setAttachmentPath(null);
|
|
examTaskWhole.setAttachmentPath(null);
|
|
examTaskWhole.setStatus(ExamTaskWholeStatusEnum.INIT);
|
|
examTaskWhole.setStatus(ExamTaskWholeStatusEnum.INIT);
|
|
this.updateById(examTaskWhole);
|
|
this.updateById(examTaskWhole);
|
|
-
|
|
|
|
- // 开始生成
|
|
|
|
- asyncCreateWholePdfTemplateService.createWholePdf(examTaskWhole);
|
|
|
|
} else {
|
|
} else {
|
|
- this.removeById(examTaskWhole.getId());
|
|
|
|
|
|
+ examTaskWhole = new ExamTaskWhole();
|
|
|
|
+ examTaskWhole.setId(SystemConstant.getDbUuid());
|
|
|
|
+ examTaskWhole.setExamId(examId);
|
|
|
|
+ examTaskWhole.setCourseId(courseId);
|
|
|
|
+ examTaskWhole.setPaperNumber(paperNumber);
|
|
|
|
+ examTaskWhole.setStatus(ExamTaskWholeStatusEnum.INIT);
|
|
|
|
+ examTaskWhole.setCreateTime(System.currentTimeMillis());
|
|
|
|
+ this.save(examTaskWhole);
|
|
}
|
|
}
|
|
|
|
+ // 开始生成
|
|
|
|
+ asyncCreateWholePdfTemplateService.createWholePdf(examTaskWhole);
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ this.removeById(examTaskWhole.getId());
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("部分考场未生成PDF,无法合并文件");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -76,9 +89,12 @@ public class ExamTaskWholeServiceImpl extends ServiceImpl<ExamTaskWholeMapper, E
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public String getWholePdf(Long examId, Long courseId, String paperNumber) {
|
|
|
|
|
|
+ public Map getWholePdf(Long examId, Long courseId, String paperNumber) {
|
|
ExamTaskWhole examTaskWhole = getByExamIdAndCourseIdAndPaperNumber(examId, courseId, paperNumber);
|
|
ExamTaskWhole examTaskWhole = getByExamIdAndCourseIdAndPaperNumber(examId, courseId, paperNumber);
|
|
- return examTaskWhole != null ? fileUploadService.filePreview(examTaskWhole.getAttachmentPath()) : null;
|
|
|
|
|
|
+ Map map = new HashMap();
|
|
|
|
+ map.put("status", examTaskWhole != null ? examTaskWhole.getStatus() : ExamTaskWholeStatusEnum.INIT);
|
|
|
|
+ map.put("url", examTaskWhole != null && StringUtils.isNotBlank(examTaskWhole.getAttachmentPath()) ? fileUploadService.filePreview(examTaskWhole.getAttachmentPath()) : null);
|
|
|
|
+ return map;
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -96,6 +112,7 @@ public class ExamTaskWholeServiceImpl extends ServiceImpl<ExamTaskWholeMapper, E
|
|
if (inputStream == null) {
|
|
if (inputStream == null) {
|
|
throw ExceptionResultEnum.ERROR.exception("读取印品文件失败:" + printPathVo.getPdfPath());
|
|
throw ExceptionResultEnum.ERROR.exception("读取印品文件失败:" + printPathVo.getPdfPath());
|
|
}
|
|
}
|
|
|
|
+ inputStream = PdfUtil.addPdfEmptyPageForWholePdf(inputStream);
|
|
inputStreamList.add(inputStream);
|
|
inputStreamList.add(inputStream);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -137,7 +154,7 @@ public class ExamTaskWholeServiceImpl extends ServiceImpl<ExamTaskWholeMapper, E
|
|
File pdfFileTemp = null;
|
|
File pdfFileTemp = null;
|
|
try {
|
|
try {
|
|
pdfFileTemp = SystemConstant.getFileTempVar(SystemConstant.PDF_PREFIX);
|
|
pdfFileTemp = SystemConstant.getFileTempVar(SystemConstant.PDF_PREFIX);
|
|
- String mergePdf = PdfUtil.mergePdf(inputStreamList, pdfFileTemp.getAbsolutePath());
|
|
|
|
|
|
+ String mergePdf = PdfUtil.mergeWholePdf(inputStreamList, pdfFileTemp.getAbsolutePath());
|
|
if (StringUtils.isNotBlank(mergePdf)) {
|
|
if (StringUtils.isNotBlank(mergePdf)) {
|
|
File localPaperPdfFile = new File(FileUtil.replaceSplit(mergePdf));
|
|
File localPaperPdfFile = new File(FileUtil.replaceSplit(mergePdf));
|
|
String uploadFileName = PdfUtil.md5FileName(CreatePdfTypeEnum.ALL.name() + examTaskWhole.getId()) + SystemConstant.PDF_PREFIX;
|
|
String uploadFileName = PdfUtil.md5FileName(CreatePdfTypeEnum.ALL.name() + examTaskWhole.getId()) + SystemConstant.PDF_PREFIX;
|