wangliang 4 年 前
コミット
009ea7f427

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

@@ -1,7 +1,6 @@
 package com.qmth.distributed.print.business.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.distributed.print.business.bean.dto.*;
 import com.qmth.distributed.print.business.bean.result.WorkResult;
@@ -10,6 +9,7 @@ import com.qmth.distributed.print.business.entity.ExamTaskDetail;
 import com.qmth.distributed.print.business.entity.ExamTaskReviewLog;
 import com.qmth.distributed.print.business.entity.SysUser;
 import com.qmth.distributed.print.business.enums.ExamStatusEnum;
+import com.qmth.distributed.print.business.templete.callback.CallbackCreatePdf;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
@@ -99,18 +99,20 @@ public interface ExamTaskService extends IService<ExamTask> {
 
     /**
      * 检测考务数据的试卷编号和课程代码的正确性(根据试卷编号查询命题任务的试卷编号,如果存在,查询该命题任务记录对应的课程代码和考务数据导入的该条课程代码是否一致)
-     * @param schoolId 考务数据导入的学校代码
+     *
+     * @param schoolId    考务数据导入的学校代码
      * @param paperNumber 考务数据导入的试卷编号
-     * @param courseCode 考务数据导入的课程代码
+     * @param courseCode  考务数据导入的课程代码
      */
-    void verifyCourseCodeByPaperNumber(Long schoolId,String paperNumber,String courseCode);
+    void verifyCourseCodeByPaperNumber(Long schoolId, String paperNumber, String courseCode);
 
     /**
      * 根据考务-考场检验该考场下的所有命题任务是否已经完成,全部完成则生成pdf
-     * @param examDetailIds 考务考场ids
-     * @param user 用户id
+     *
+     * @param examDetailId 考务考场id
+     * @param user         用户id
      */
-    void checkDataByExamination(List<Long> examDetailIds, SysUser user) throws IOException;
+    void checkDataByExamination(Long examDetailId, SysUser user) throws IOException;
 
     List<ExamTask> listExamTaskByCardId(Long cardId);
 }

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

@@ -15,6 +15,7 @@ import com.qmth.distributed.print.business.entity.*;
 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.callback.CallbackCreatePdf;
 import com.qmth.distributed.print.business.templete.execute.AsyncCreatePdfTempleteService;
 import com.qmth.distributed.print.business.util.ConvertUtil;
 import com.qmth.distributed.print.business.util.ExcelUtil;
@@ -884,42 +885,38 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     }
 
     @Override
-    public void checkDataByExamination(List<Long> examDetailIds, SysUser user) throws IOException {
+    public void checkDataByExamination(Long examDetailId, SysUser user) throws IOException {
         boolean judge = true;
-        Long printPlanId = null;
-        Long schoolId = null;
-        for (Long examDetailId : examDetailIds) {
-            ExamDetail examDetail = examDetailService.getById(examDetailId);
-            if (Objects.isNull(examDetail)) {
-                throw ExceptionResultEnum.ERROR.exception("考务-考场不存在");
-            }
-            printPlanId = examDetail.getPrintPlanId();
-            List<ExamDetailCourse> examDetailCourseList = examDetailCourseService.list(new QueryWrapper<ExamDetailCourse>().lambda()
-                    .eq(ExamDetailCourse::getExamDetailId, examDetailId)
-                    .eq(ExamDetailCourse::getSchoolId, examDetail.getSchoolId()));
-            if (examDetailCourseList.size() < 1) {
-                throw ExceptionResultEnum.ERROR.exception("考务-课程不存在");
-            }
-            for (ExamDetailCourse examDetailCourse : examDetailCourseList) {
-                String courseCode = examDetailCourse.getCourseCode();
-                String paperNumber = examDetailCourse.getPaperNumber();
-                schoolId = examDetailCourse.getSchoolId();
-                ExamTask examTask = this.getOne(new QueryWrapper<ExamTask>().lambda()
-                        .eq(ExamTask::getSchoolId, schoolId)
-                        .eq(ExamTask::getCourseCode, courseCode)
-                        .eq(ExamTask::getPaperNumber, paperNumber));
-                if (examTask == null) {
-                    judge = false;
-                } else if (!ExamStatusEnum.FINISH.equals(examTask.getStatus())) {
-                    judge = false;
-                }
+        ExamDetail examDetail = examDetailService.getById(examDetailId);
+        if (Objects.isNull(examDetail)) {
+            throw ExceptionResultEnum.ERROR.exception("考务-考场不存在");
+        }
+        List<ExamDetailCourse> examDetailCourseList = examDetailCourseService.list(new QueryWrapper<ExamDetailCourse>().lambda()
+                .eq(ExamDetailCourse::getExamDetailId, examDetailId)
+                .eq(ExamDetailCourse::getSchoolId, examDetail.getSchoolId()));
+        if (examDetailCourseList.size() < 1) {
+            throw ExceptionResultEnum.ERROR.exception("考务-课程不存在");
+        }
+        for (ExamDetailCourse examDetailCourse : examDetailCourseList) {
+            String courseCode = examDetailCourse.getCourseCode();
+            String paperNumber = examDetailCourse.getPaperNumber();
+            Long schoolId = examDetailCourse.getSchoolId();
+            ExamTask examTask = this.getOne(new QueryWrapper<ExamTask>().lambda()
+                    .eq(ExamTask::getSchoolId, schoolId)
+                    .eq(ExamTask::getCourseCode, courseCode)
+                    .eq(ExamTask::getPaperNumber, paperNumber));
+            if (examTask == null) {
+                judge = false;
+            } else if (!ExamStatusEnum.FINISH.equals(examTask.getStatus())) {
+                judge = false;
             }
         }
         if (judge) {
-            Map<String, Object> map = tbTaskService.saveTask(TaskTypeEnum.CREATE_PDF, printPlanId, user);
-            map.computeIfAbsent("examDetailIds", v -> examDetailIds);
-            Long finalSchoolId = schoolId;
-            map.computeIfAbsent("schoolId", v -> finalSchoolId);
+            Map<String, Object> map = tbTaskService.saveTask(TaskTypeEnum.CREATE_PDF, examDetail.getPrintPlanId(), user);
+            if (Objects.nonNull(examDetail.getId())) {
+                map.computeIfAbsent("examDetailId", v -> examDetail.getId());
+            }
+            map.computeIfAbsent("schoolId", v -> examDetail.getSchoolId());
             asyncCreatePdfTempleteService.createPdf(map, null);
         }
     }

+ 6 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/execute/AsyncExaminationImportTemplateService.java

@@ -6,6 +6,7 @@ import com.qmth.distributed.print.business.entity.TBTask;
 import com.qmth.distributed.print.business.enums.TaskResultEnum;
 import com.qmth.distributed.print.business.enums.TaskStatusEnum;
 import com.qmth.distributed.print.business.service.ExamTaskService;
+import com.qmth.distributed.print.business.templete.callback.CallbackCreatePdf;
 import com.qmth.distributed.print.business.templete.importData.AsyncImportTaskTemplete;
 import com.qmth.distributed.print.business.templete.service.TaskLogicService;
 import com.qmth.distributed.print.common.contant.SpringContextHolder;
@@ -57,13 +58,15 @@ public class AsyncExaminationImportTemplateService extends AsyncImportTaskTemple
             Map<String, Object> result = taskLogicService.executeImportExaminationLogic(map);
 
             // 检测是否去生成pdf
-            if (Objects.isNull(result.get("examDetailIdList"))) {
+            if (Objects.isNull(map.get("examDetailIdList"))) {
                 throw ExceptionResultEnum.ERROR.exception("不能获取考务-场次id集合");
             }
-            List<Long> examDetailIdList = (List<Long>) result.get("examDetailIdList");
+            List<Long> examDetailIdList = (List<Long>) map.get("examDetailIdList");
             // 按照考场检验命题任务是否全部完成,完成生成pdf
             SysUser user = (SysUser) map.get(SystemConstant.USER);
-            examTaskService.checkDataByExamination(examDetailIdList, user);
+            for (Long examDetailId : examDetailIdList) {
+                examTaskService.checkDataByExamination(examDetailId, user);
+            }
 
             stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}", FORMAT_TIME, FINISH_TITLE, Long.valueOf(String.valueOf(result.get("dataCount"))), FINISH_SIZE));
             tbTask.setResult(TaskResultEnum.SUCCESS);

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

@@ -38,6 +38,7 @@ import org.slf4j.LoggerFactory;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.data.redis.support.atomic.RedisAtomicLong;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.FileCopyUtils;