Browse Source

3.4.0 update

xiaofei 1 year ago
parent
commit
6f07b48e90

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

@@ -191,4 +191,6 @@ public interface ExamTaskService extends IService<ExamTask> {
     ExamTask getByIdIncludeCourse(Long examTaskId);
 
     List<ExamTask> listByExamId(Long examId);
+
+    ExamTask validExamTaskAuditPass(Long schoolId, Long examId, Long courseId, String paperNumber);
 }

+ 31 - 38
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -23,8 +23,8 @@ import com.qmth.distributed.print.business.enums.*;
 import com.qmth.distributed.print.business.mapper.ExamTaskMapper;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.distributed.print.business.templete.execute.AsyncPaperReviewPdfExportService;
-import com.qmth.distributed.print.business.util.PdfUtil;
 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.BlurryUserDto;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
@@ -931,34 +931,8 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             }
 
             for (ExamDetailCourse examDetailCourse : examDetailCourseList) {
-                String courseCode = examDetailCourse.getCourseCode();
-                String courseName = examDetailCourse.getCourseName();
-                String paperNumber = examDetailCourse.getPaperNumber();
-                Long schoolId = examDetailCourse.getSchoolId();
-
-//                List<ExamTask> examTaskList = examTaskMapper.findExamTaskByFlowStatus(schoolId, examPrintPlan.getExamId(), courseCode, paperNumber, FlowStatusEnum.FINISH.name());
-//                if (CollectionUtils.isEmpty(examTaskList)) {
-//                    stringSet.add(String.format("课程[%s(%s)],试卷编号[%s]的任务未创建或者未审核通过", courseName, courseCode, paperNumber));
-//                }
-                //查询命题任务绑定的试卷和题卡
-                ExamTask examTask = examTaskService.getByExamIdAndCourseIdAndPaperNumber(examPrintPlan.getExamId(), examDetailCourse.getCourseId(), examDetailCourse.getPaperNumber());
-                if (examTask == null) {
-                    stringSet.add(String.format("课程[%s(%s)],试卷编号[%s]的" + ExceptionResultEnum.EXAM_TASK_IS_NOT_EXIST.getMessage(), courseName, courseCode, paperNumber));
-                } else {
-                    if (examTask.getReview()) {
-                        examTask = examTaskService.findExamTaskByFlowStatus(schoolId, examPrintPlan.getExamId(), examDetailCourse.getCourseId(), examDetailCourse.getPaperNumber(), FlowStatusEnum.FINISH);
-                        if (examTask == null) {
-                            stringSet.add(String.format("课程[%s(%s)],试卷编号[%s]的" + ExceptionResultEnum.EXAM_TASK_IS_NULL.getMessage(), courseName, courseCode, paperNumber));
-                        }
-                    } else {
-                        if (!ExamStatusEnum.SUBMIT.equals(examTask.getStatus())) {
-                            stringSet.add(String.format("课程[%s(%s)],试卷编号[%s]的" + ExceptionResultEnum.EXAM_TASK_NOT_SUBMIT.getMessage(), courseName, courseCode, paperNumber));
-                        }
-                    }
-                }
-                if (examTask != null && !examTask.getEnable()) {
-                    stringSet.add(String.format("课程[%s(%s)],试卷编号[%s]的" + ExceptionResultEnum.EXAM_TASK_ENABLE.getMessage(), courseName, courseCode, paperNumber));
-                }
+                // 校验命题任务是否存在并审核通过
+                this.validExamTaskAuditPass(examDetailCourse.getSchoolId(), examPrintPlan.getExamId(), examDetailCourse.getCourseId(), examDetailCourse.getPaperNumber());
             }
 
             examDetailList.add(examDetail);
@@ -1034,17 +1008,11 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     public ExamTask findExamTaskByFlowStatus(Long schoolId, Long examId, Long courseId, String paperNumber, FlowStatusEnum flowStatus) {
         List<ExamTask> examTaskList = this.baseMapper.findExamTaskByFlowStatus(schoolId, examId, courseId, paperNumber, Objects.nonNull(flowStatus) ? flowStatus.name() : null);
         if (CollectionUtils.isEmpty(examTaskList)) {
-            throw ExceptionResultEnum.EXAM_TASK_IS_NULL.exception();
+            throw ExceptionResultEnum.ERROR.exception("试卷编号[" + paperNumber + "]的" + ExceptionResultEnum.EXAM_TASK_IS_NOT_EXIST.getMessage());
         } else if (examTaskList.size() != 1) {
-            throw ExceptionResultEnum.ERROR.exception("命题任务查询异常:" + ExceptionResultEnum.DATA_COUNT_EXCEPTION.getMessage() + String.format("考试ID[%s],课程ID[%s],试卷编号[%s]", examId, courseId, paperNumber));
-        } else {
-            ExamTask examTask = examTaskList.get(0);
-            if (!examTask.getEnable()) {
-                throw ExceptionResultEnum.EXAM_TASK_ENABLE.exception();
-            }
-
-            return examTask;
+            throw ExceptionResultEnum.ERROR.exception(String.format("试卷编号[%s]", paperNumber) + ExceptionResultEnum.DATA_COUNT_EXCEPTION.getMessage());
         }
+        return examTaskList.get(0);
     }
 
     @Transactional
@@ -2012,6 +1980,31 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         return this.list(new QueryWrapper<ExamTask>().lambda().eq(ExamTask::getExamId, examId));
     }
 
+    @Override
+    public ExamTask validExamTaskAuditPass(Long schoolId, Long examId, Long courseId, String paperNumber) {
+        //查询命题任务绑定的试卷和题卡
+        ExamTask examTask = examTaskService.getByExamIdAndCourseIdAndPaperNumber(examId, courseId, paperNumber);
+        if (examTask == null) {
+            throw ExceptionResultEnum.ERROR.exception(String.format("试卷编号[%s]的" + ExceptionResultEnum.EXAM_TASK_IS_NOT_EXIST.getMessage(), paperNumber));
+        } else {
+            if (!examTask.getEnable()) {
+                throw ExceptionResultEnum.ERROR.exception(String.format("试卷编号[%s]的" + ExceptionResultEnum.EXAM_TASK_ENABLE.getMessage(), paperNumber));
+            } else if (examTask.getReview()) {
+                List<ExamTask> examTaskList = this.baseMapper.findExamTaskByFlowStatus(schoolId, examId, courseId, paperNumber, FlowStatusEnum.FINISH.name());
+                if (CollectionUtils.isEmpty(examTaskList)) {
+                    throw ExceptionResultEnum.ERROR.exception("试卷编号[" + paperNumber + "]的" + ExceptionResultEnum.EXAM_TASK_IS_NOT_EXIST.getMessage());
+                } else if (examTaskList.size() != 1) {
+                    throw ExceptionResultEnum.ERROR.exception(String.format("试卷编号[%s]", paperNumber) + ExceptionResultEnum.DATA_COUNT_EXCEPTION.getMessage());
+                }
+            } else {
+                if (!ExamStatusEnum.SUBMIT.equals(examTask.getStatus())) {
+                    throw ExceptionResultEnum.ERROR.exception(String.format("试卷编号[%s]的" + ExceptionResultEnum.EXAM_TASK_NOT_SUBMIT.getMessage(), paperNumber));
+                }
+            }
+        }
+        return examTask;
+    }
+
     private ExamTaskPaperData saveTikuPaperData(Long examId, Long paperId, String uuid, File zipFile) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         String zipDestPath = null;

+ 4 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/execute/AsyncBasicExamStudentImportService.java

@@ -134,14 +134,15 @@ public class AsyncBasicExamStudentImportService extends AsyncImportTaskTemplete
                 // 自动创建课程管理数据
                 teachCourseService.batchCreateTeachCourse(tbTask.getSchoolId(), tbTask.getExamId(), basicExamStudentList);
                 tbTask.setResult(TaskResultEnum.SUCCESS);
+
+                stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}{4}{5}{6}{7}",
+                        DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), FINISH_TITLE, dataCount,
+                        FINISH_TOTAL_SIZE, successCount, FINISH_SUCCESS_SIZE, errorCount, FINISH_ERROR_SIZE));
             }
         } catch (Exception e) {
             tbTask.setResult(TaskResultEnum.ERROR);
             stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), EXCEPTION_TITLE, EXCEPTION_DATA, e.getMessage()));
         } finally {//生成文件
-            stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}{4}{5}{6}{7}",
-                    DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), FINISH_TITLE, dataCount,
-                    FINISH_TOTAL_SIZE, successCount, FINISH_SUCCESS_SIZE, errorCount, FINISH_ERROR_SIZE));
             tbTask.setStatus(TaskStatusEnum.FINISH);
             tbTask.setSummary(stringJoinerSummary.toString());
             tbTaskService.updateById(tbTask);

+ 4 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/execute/AsyncBasicExamStudentTeacherImportService.java

@@ -117,14 +117,15 @@ public class AsyncBasicExamStudentTeacherImportService extends AsyncImportTaskTe
                 // 自动创建课程管理数据
                 teachCourseService.batchCreateTeachCourse(tbTask.getSchoolId(), tbTask.getExamId(), basicExamStudentList);
                 tbTask.setResult(TaskResultEnum.SUCCESS);
+
+                stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}{4}{5}{6}{7}",
+                        DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), FINISH_TITLE, dataCount,
+                        FINISH_TOTAL_SIZE, successCount, FINISH_SUCCESS_SIZE, errorCount, FINISH_ERROR_SIZE));
             }
         } catch (Exception e) {
             tbTask.setResult(TaskResultEnum.ERROR);
             stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), EXCEPTION_TITLE, EXCEPTION_DATA, e.getMessage()));
         } finally {//生成文件
-            stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}{4}{5}{6}{7}",
-                    DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), FINISH_TITLE, dataCount,
-                    FINISH_TOTAL_SIZE, successCount, FINISH_SUCCESS_SIZE, errorCount, FINISH_ERROR_SIZE));
             tbTask.setStatus(TaskStatusEnum.FINISH);
             tbTask.setSummary(stringJoinerSummary.toString());
             tbTaskService.updateById(tbTask);

+ 26 - 9
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/execute/AsyncExamStudentImportService.java

@@ -18,10 +18,7 @@ import com.qmth.teachcloud.common.entity.BasicExam;
 import com.qmth.teachcloud.common.entity.BasicExamStudent;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.entity.TBTask;
-import com.qmth.teachcloud.common.enums.ExamModelEnum;
-import com.qmth.teachcloud.common.enums.TaskResultEnum;
-import com.qmth.teachcloud.common.enums.TaskStatusEnum;
-import com.qmth.teachcloud.common.enums.UploadFileEnum;
+import com.qmth.teachcloud.common.enums.*;
 import com.qmth.teachcloud.common.service.FileUploadService;
 import com.qmth.teachcloud.common.service.TBTaskService;
 import com.qmth.teachcloud.common.util.Result;
@@ -113,14 +110,33 @@ public class AsyncExamStudentImportService extends AsyncImportTaskTemplete {
                     SystemConstant.addSummary(stringJoinerSummary, "错误文件生成失败," + e.getMessage());
                 }
             } else {
-                SystemConstant.addSummary(stringJoinerSummary, "数据校验通过,开始写入数据库");
+                SystemConstant.addSummary(stringJoinerSummary, "数据校验通过,开始校验命题任务是否审核通过");
+
+                StringJoiner paperNumberValidError = new StringJoiner("\r\n");
+                Map<String, Long> paperNumberCourseIdInMap = (Map<String, Long>) result.get("paperNumberCourseIdInMap");
+                paperNumberCourseIdInMap.forEach((k, v)->{
+                    try {
+                        examTaskService.validExamTaskAuditPass(tbTask.getSchoolId(), tbTask.getExamId(), v, k);
+                    } catch (Exception e) {
+                        paperNumberValidError.add(e.getMessage());
+                    }
+                });
+
+                if(paperNumberValidError.toString().length() > 0){
+                    throw ExceptionResultEnum.ERROR.exception(paperNumberValidError.toString());
+                }
+
+                SystemConstant.addSummary(stringJoinerSummary, "命题任务校验通过,开始保存基础考生数据");
+
                 List<BasicExamStudent> basicExamStudentList = JSON.parseArray(JSON.toJSONString(result.get(SystemConstant.DATASOURCE)), BasicExamStudent.class);
                 basicExamStudentService.saveOrUpdateBatch(basicExamStudentList);
-                SystemConstant.addSummary(stringJoinerSummary, "写入基础考生数据库完成,开始生成印刷任务数据");
+                SystemConstant.addSummary(stringJoinerSummary, "保存基础考生数据完成,开始保存印刷任务数据");
 
                 ExamPrintPlan examPrintPlan = examPrintPlanService.getById(tbTask.getPrintPlanId());
                 // 组装exam_detail数据
                 List<Long> examDetailIdList = examDetailService.saveImportExamStudent(examPrintPlan, basicExamStudentList, tbTask.getCreateId());
+
+                SystemConstant.addSummary(stringJoinerSummary, "保存印刷任务数据完成,提交生成PDF");
                 // 更改印刷计划状态
                 examPrintPlan.setStatus(PrintPlanStatusEnum.READY);
                 examPrintPlanService.updateById(examPrintPlan);
@@ -129,14 +145,15 @@ public class AsyncExamStudentImportService extends AsyncImportTaskTemplete {
 
                 examTaskService.checkDataByExamination(tbTask.getPrintPlanId(), examDetailIdList, user);
                 tbTask.setResult(TaskResultEnum.SUCCESS);
+
+                stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}{4}{5}{6}{7}",
+                        DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), FINISH_TITLE, dataCount,
+                        FINISH_TOTAL_SIZE, successCount, FINISH_SUCCESS_SIZE, errorCount, FINISH_ERROR_SIZE));
             }
         } catch (Exception e) {
             tbTask.setResult(TaskResultEnum.ERROR);
             stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), EXCEPTION_TITLE, EXCEPTION_DATA, e.getMessage()));
         } finally {//生成文件
-            stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}{4}{5}{6}{7}",
-                    DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), FINISH_TITLE, dataCount,
-                    FINISH_TOTAL_SIZE, successCount, FINISH_SUCCESS_SIZE, errorCount, FINISH_ERROR_SIZE));
             tbTask.setStatus(TaskStatusEnum.FINISH);
             tbTask.setSummary(stringJoinerSummary.toString());
             tbTaskService.updateById(tbTask);

+ 32 - 29
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/ImportLogicServiceImpl.java

@@ -227,16 +227,16 @@ public class ImportLogicServiceImpl implements ImportLogicService {
             if (stringJoiner.toString().length() == 0) {
                 basicExamStudents.add(basicExamStudent);
             }
-
-            map.put(SystemConstant.ERROR_DATA_LIST, basicExamStudentImportList);
-            map.put(SystemConstant.DATASOURCE, basicExamStudents);
-            map.put(SystemConstant.DATA_COUNT, basicExamStudentImportList.size());
-            map.put(SystemConstant.SUCCESS_DATA_COUNT, basicExamStudents.size());
-            map.put(SystemConstant.ERROR_DATA_COUNT, basicExamStudentImportList.size() - basicExamStudents.size());
-            map.put(SystemConstant.HAS_ERROR_DATA, hasError);
-            map.put(SystemConstant.COLUMN_NAMES, basicExamStudentParseDto.getColumnNames());
         }
 
+        map.put(SystemConstant.ERROR_DATA_LIST, basicExamStudentImportList);
+        map.put(SystemConstant.DATASOURCE, basicExamStudents);
+        map.put(SystemConstant.DATA_COUNT, basicExamStudentImportList.size());
+        map.put(SystemConstant.SUCCESS_DATA_COUNT, basicExamStudents.size());
+        map.put(SystemConstant.ERROR_DATA_COUNT, basicExamStudentImportList.size() - basicExamStudents.size());
+        map.put(SystemConstant.HAS_ERROR_DATA, hasError);
+        map.put(SystemConstant.COLUMN_NAMES, basicExamStudentParseDto.getColumnNames());
+
         return map;
     }
 
@@ -289,7 +289,7 @@ public class ImportLogicServiceImpl implements ImportLogicService {
         Map<String, Long> courseIdStudentCodeMap = basicExamStudentList.stream().collect(Collectors.toMap(k -> k.getCourseId() + SystemConstant.HYPHEN + k.getStudentCode(), BaseEntity::getId));
 
         // 文件中试卷编号对应多个课程代码
-        Map<String, Long> paperNumberWithCourseCodeInExcelMap = new HashMap<>();
+        Map<String, Long> paperNumberCourseIdInMap = new HashMap<>();
         Map<String, Long> basicCourseIdMap = new HashMap<>();
 
         // 课程管理中课程代码-课程名
@@ -358,13 +358,13 @@ public class ImportLogicServiceImpl implements ImportLogicService {
             }
 
             // 校验试卷编号和课程代码对应关系
-            if (paperNumberWithCourseCodeInExcelMap.containsKey(basicExamStudent.getPaperNumber())) {
-                Long courseId = paperNumberWithCourseCodeInExcelMap.get(basicExamStudent.getPaperNumber());
+            if (paperNumberCourseIdInMap.containsKey(basicExamStudent.getPaperNumber())) {
+                Long courseId = paperNumberCourseIdInMap.get(basicExamStudent.getPaperNumber());
                 if (!basicExamStudent.getCourseId().equals(courseId)) {
                     stringJoiner.add(String.format("文件中试卷编号[%s]对应多个不同的课程代码", basicExamStudent.getPaperNumber()));
                 }
             } else {
-                paperNumberWithCourseCodeInExcelMap.put(basicExamStudent.getPaperNumber(), basicExamStudent.getCourseId());
+                paperNumberCourseIdInMap.put(basicExamStudent.getPaperNumber(), basicExamStudent.getCourseId());
             }
 
             if (paperNumberMap.containsKey(basicExamStudent.getPaperNumber())) {
@@ -372,7 +372,7 @@ public class ImportLogicServiceImpl implements ImportLogicService {
                 if (examTasks.size() > 1) {
                     stringJoiner.add(String.format("试卷编号[%s]在考试[%s]下有多条命题任务,请联系管理员处理", basicExamStudent.getPaperNumber(), examId));
                 } else {
-                    Long courseId = paperNumberWithCourseCodeInExcelMap.get(basicExamStudent.getPaperNumber());
+                    Long courseId = paperNumberCourseIdInMap.get(basicExamStudent.getPaperNumber());
                     ExamTask examTask = examTasks.get(0);
                     if (!examTask.getCourseId().equals(courseId)) {
                         stringJoiner.add(String.format("文件中试卷编号[%s]对应课程代码与命题任务中对应课程代码不一致", basicExamStudent.getPaperNumber()));
@@ -415,16 +415,19 @@ public class ImportLogicServiceImpl implements ImportLogicService {
             if (stringJoiner.toString().length() == 0) {
                 basicExamStudents.add(basicExamStudent);
             }
-
-            map.put(SystemConstant.ERROR_DATA_LIST, basicExamStudentImportList);
-            map.put(SystemConstant.DATASOURCE, basicExamStudents);
-            map.put(SystemConstant.DATA_COUNT, basicExamStudentImportList.size());
-            map.put(SystemConstant.SUCCESS_DATA_COUNT, basicExamStudents.size());
-            map.put(SystemConstant.ERROR_DATA_COUNT, basicExamStudentImportList.size() - basicExamStudents.size());
-            map.put(SystemConstant.HAS_ERROR_DATA, hasError);
-            map.put(SystemConstant.COLUMN_NAMES, basicExamStudentParseDto.getColumnNames());
         }
 
+        //校验命题任务是否存在并审核通过
+
+        map.put(SystemConstant.ERROR_DATA_LIST, basicExamStudentImportList);
+        map.put(SystemConstant.DATASOURCE, basicExamStudents);
+        map.put(SystemConstant.DATA_COUNT, basicExamStudentImportList.size());
+        map.put(SystemConstant.SUCCESS_DATA_COUNT, basicExamStudents.size());
+        map.put(SystemConstant.ERROR_DATA_COUNT, basicExamStudentImportList.size() - basicExamStudents.size());
+        map.put(SystemConstant.HAS_ERROR_DATA, hasError);
+        map.put(SystemConstant.COLUMN_NAMES, basicExamStudentParseDto.getColumnNames());
+        map.put("paperNumberCourseIdInMap", paperNumberCourseIdInMap);
+
         return map;
     }
 
@@ -1136,16 +1139,16 @@ public class ImportLogicServiceImpl implements ImportLogicService {
             if (stringJoiner.toString().length() == 0) {
                 basicExamStudents.add(basicExamStudent);
             }
-
-            map.put(SystemConstant.ERROR_DATA_LIST, basicExamStudentImportList);
-            map.put(SystemConstant.DATASOURCE, basicExamStudents);
-            map.put(SystemConstant.DATA_COUNT, basicExamStudentImportList.size());
-            map.put(SystemConstant.SUCCESS_DATA_COUNT, basicExamStudents.size());
-            map.put(SystemConstant.ERROR_DATA_COUNT, basicExamStudentImportList.size() - basicExamStudents.size());
-            map.put(SystemConstant.HAS_ERROR_DATA, hasError);
-            map.put(SystemConstant.COLUMN_NAMES, basicExamStudentParseDto.getColumnNames());
         }
 
+        map.put(SystemConstant.ERROR_DATA_LIST, basicExamStudentImportList);
+        map.put(SystemConstant.DATASOURCE, basicExamStudents);
+        map.put(SystemConstant.DATA_COUNT, basicExamStudentImportList.size());
+        map.put(SystemConstant.SUCCESS_DATA_COUNT, basicExamStudents.size());
+        map.put(SystemConstant.ERROR_DATA_COUNT, basicExamStudentImportList.size() - basicExamStudents.size());
+        map.put(SystemConstant.HAS_ERROR_DATA, hasError);
+        map.put(SystemConstant.COLUMN_NAMES, basicExamStudentParseDto.getColumnNames());
+
         return map;
     }
 }

+ 1 - 12
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/PdfTaskLogicServiceImpl.java

@@ -235,18 +235,7 @@ public class PdfTaskLogicServiceImpl implements PdfTaskLogicService {
             String[] paperTypes = examDetailCourse.getPaperType().split(",");
 
             //查询命题任务绑定的试卷和题卡
-            ExamTask examTask = examTaskService.getByExamIdAndCourseIdAndPaperNumber(tbTaskPdf.getExamId(), examDetailCourse.getCourseId(), examDetailCourse.getPaperNumber());
-            if (examTask == null) {
-                throw ExceptionResultEnum.EXAM_TASK_IS_NULL.exception();
-            } else if (examTask.getReview()) {
-                examTask = examTaskService.findExamTaskByFlowStatus(tbTaskPdf.getSchoolId(), tbTaskPdf.getExamId(), examDetailCourse.getCourseId(), examDetailCourse.getPaperNumber(), FlowStatusEnum.FINISH);
-            } else {
-                if (!ExamStatusEnum.SUBMIT.equals(examTask.getStatus())) {
-                    throw ExceptionResultEnum.EXAM_TASK_NOT_SUBMIT.exception();
-                } else if (!examTask.getEnable()) {
-                    throw ExceptionResultEnum.EXAM_TASK_ENABLE.exception();
-                }
-            }
+            ExamTask examTask = examTaskService.validExamTaskAuditPass(tbTaskPdf.getSchoolId(),tbTaskPdf.getExamId(), examDetailCourse.getCourseId(), examDetailCourse.getPaperNumber());
             ExamTaskDetail examTaskDetail = examTaskDetailService.getByExamTaskId(examTask.getId());
 
             CreatePdfTypeEnum createPdfType = tbTaskPdf.getCreateType();

+ 17 - 0
distributed-print/install/mysql/upgrade/3.4.0.sql

@@ -162,6 +162,23 @@ ALTER TABLE `basic_exam_student` ADD COLUMN `paper_type` VARCHAR(10) NULL COMMEN
 
 ALTER TABLE `exam_detail` CHANGE COLUMN `org_id` `org_id` BIGINT NULL COMMENT '机构id' ;
 
+
+ALTER TABLE `mark_paper`
+    ADD INDEX `index1`(`exam_id` ASC, `paper_number` ASC) USING BTREE;
+ALTER TABLE `mark_paper`
+    ADD INDEX `index2`(`exam_id` ASC, `course_paper_id` ASC) USING BTREE;
+
+ALTER TABLE `mark_paper_package`
+    ADD INDEX `index1`(`exam_id` ASC, `paper_number` ASC) USING BTREE;
+ALTER TABLE `mark_paper_package`
+    ADD INDEX `index2`(`exam_id` ASC, `course_paper_id` ASC) USING BTREE;
+
+ALTER TABLE `mark_student`
+    ADD INDEX `index4`(`exam_id` ASC, `scan_status` ASC) USING BTREE;
+
+ALTER TABLE `scan_student_paper`
+    ADD INDEX `index1`
+    (`student_id` ASC, `paper_index` ASC) USING BTREE;
 -- drop table if exists exam_detail_course_paper_type;
 -- drop table if exists basic_template_org;
 -- drop table if exists cloud_user_push_status;

+ 1 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/ExceptionResultEnum.java

@@ -80,7 +80,7 @@ public enum ExceptionResultEnum {
 
     EXAM_CARD_IS_NULL(HttpStatus.INTERNAL_SERVER_ERROR, 50000028, "题卡为空"),
 
-    EXAM_TASK_IS_NULL(HttpStatus.INTERNAL_SERVER_ERROR, 50000029, "命题任务为空或未找到审核通过记录"),
+    EXAM_TASK_IS_NULL(HttpStatus.INTERNAL_SERVER_ERROR, 50000029, "命题任务未找到审核通过记录"),
     EXAM_TASK_IS_NOT_EXIST(HttpStatus.INTERNAL_SERVER_ERROR, 50000029, "命题任务不存在"),
     EXAM_TASK_NOT_SUBMIT(HttpStatus.INTERNAL_SERVER_ERROR, 50000030, "命题任务未提交"),
     EXAM_TASK_ENABLE(HttpStatus.INTERNAL_SERVER_ERROR, 50000034, "命题任务已禁用"),