caozixuan hace 4 años
padre
commit
1a6960f8f5

+ 1 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/ExaminationDBFieldsEnum.java

@@ -19,6 +19,7 @@ public enum ExaminationDBFieldsEnum {
     EXAM_ROOM("考场", "examRoom", 10),
     EXAM_DATE("考试日期", "examDate", 0),
     EXAM_TIME("考试时间", "examTime", 0),
+    AGE("年龄", "age", 0),
     PAPER_NUMBER("试卷编号", "paperNumber", 15);
     private final String desc;
     private final String code;

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

@@ -107,10 +107,10 @@ public interface ExamTaskService extends IService<ExamTask> {
 
     /**
      * 根据考务-考场检验该考场下的所有命题任务是否已经完成,全部完成则生成pdf
-     * @param examDetailId 考务考场id
+     * @param examDetailIds 考务考场ids
      * @param user 用户id
      */
-    void checkDataByExamination(Long examDetailId, SysUser user) throws IOException;
+    void checkDataByExamination(List<Long> examDetailIds, SysUser user) throws IOException;
 
     List<ExamTask> listExamTaskByCardId(Long cardId);
 }

+ 4 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamPrintPlanServiceImpl.java

@@ -247,12 +247,12 @@ public class ExamPrintPlanServiceImpl extends ServiceImpl<ExamPrintPlanMapper, E
             throw ExceptionResultEnum.ERROR.exception("要删除的项目计划不存在");
         }
         // TODO: 2021/4/23 只有新建能删除  && !PrintPlanStatusEnum.READY.equals(examPrintPlan.getStatus())
-        if (!PrintPlanStatusEnum.NEW.equals(examPrintPlan.getStatus())) {
-            throw ExceptionResultEnum.ERROR.exception("只有'新建'状态的项目计划可以被删除");
-        }
-//        if (!PrintPlanStatusEnum.NEW.equals(examPrintPlan.getStatus()) && !PrintPlanStatusEnum.READY.equals(examPrintPlan.getStatus())){
+//        if (!PrintPlanStatusEnum.NEW.equals(examPrintPlan.getStatus())) {
 //            throw ExceptionResultEnum.ERROR.exception("只有'新建'状态的项目计划可以被删除");
 //        }
+        if (!PrintPlanStatusEnum.NEW.equals(examPrintPlan.getStatus()) && !PrintPlanStatusEnum.READY.equals(examPrintPlan.getStatus())){
+            throw ExceptionResultEnum.ERROR.exception("只有'新建'状态的项目计划可以被删除");
+        }
         examDetailService.deleteExaminationData(id);
         return this.removeById(id);
     }

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

@@ -884,38 +884,42 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     }
 
     @Override
-    public void checkDataByExamination(Long examDetailId, SysUser user) throws IOException {
+    public void checkDataByExamination(List<Long> examDetailIds, SysUser user) throws IOException {
         boolean judge = true;
-        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;
+        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;
+                }
             }
         }
         if (judge) {
-            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());
+            Map<String, Object> map = tbTaskService.saveTask(TaskTypeEnum.CREATE_PDF, printPlanId, user);
+            map.computeIfAbsent("examDetailIds", v -> examDetailIds);
+            Long finalSchoolId = schoolId;
+            map.computeIfAbsent("schoolId", v -> finalSchoolId);
             asyncCreatePdfTempleteService.createPdf(map, null);
         }
     }

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

@@ -44,7 +44,7 @@ public class AsyncExaminationImportTemplateService extends AsyncImportTaskTemple
     public Result importTask(Map<String, Object> map) throws Exception {
         TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
         InputStream inputStream = super.getUploadFileInputStream(tbTask);
-        map.put("inputStream",inputStream);
+        map.put("inputStream", inputStream);
 
         StringJoiner stringJoinerSummary = new StringJoiner("\n")
                 .add(MessageFormat.format("{0}{1}{2}", FORMAT_TIME, BEGIN_TITLE, OBJ_TITLE));
@@ -54,22 +54,20 @@ public class AsyncExaminationImportTemplateService extends AsyncImportTaskTemple
             TaskLogicService taskLogicService = SpringContextHolder.getBean(TaskLogicService.class);
 
             // 执行导入考务数据
-            Map<String,Object> result = taskLogicService.executeImportExaminationLogic(map);
+            Map<String, Object> result = taskLogicService.executeImportExaminationLogic(map);
 
             // 检测是否去生成pdf
-            if (Objects.isNull(map.get("examDetailIdList"))){
+            if (Objects.isNull(result.get("examDetailIdList"))) {
                 throw ExceptionResultEnum.ERROR.exception("不能获取考务-场次id集合");
             }
-            List<Long> examDetailIdList = (List<Long>) map.get("examDetailIdList");
+            List<Long> examDetailIdList = (List<Long>) result.get("examDetailIdList");
             // 按照考场检验命题任务是否全部完成,完成生成pdf
             SysUser user = (SysUser) map.get(SystemConstant.USER);
-            for (Long examDetailId : examDetailIdList) {
-                examTaskService.checkDataByExamination(examDetailId, user);
-            }
+            examTaskService.checkDataByExamination(examDetailIdList, 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);
-        }catch (Exception e){
+        } catch (Exception e) {
             log.error("请求出错", e);
             stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}", FORMAT_TIME, EXCEPTION_TITLE, EXCEPTION_DATA, e.getMessage()));
             tbTask.setResult(TaskResultEnum.ERROR);

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

@@ -455,6 +455,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                         if (dbLength > 0) {
                             ConvertUtil.verifyLength(cellValue, dbLength, dbName);
                         }
+                        // 使用反射 -> 根据db枚举类的code字段为对应的dbDto类中的对应属性赋值(因此要求枚举必须被dto类包含)
                         Field field = examinationImportDto.getClass().getDeclaredField(dbCode);
                         field.setAccessible(true);
                         field.set(examinationImportDto, cellValue);
@@ -462,19 +463,14 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                         break;
                     }
                 }
-                if (!match) {
-                    if ("primary".equals(level)) {
-                        throw ExceptionResultEnum.ERROR.exception("有数据库不需要的必选字段 : " + name);
-                    }
-                    if ("secondary".equals(level)) {
-                        FieldsDto secondaryField = new FieldsDto();
-                        secondaryField.setLevel(level);
-                        secondaryField.setCode(code);
-                        secondaryField.setName(name);
-                        secondaryField.setEnable(true);
-                        secondaryField.setValue(cellValue);
-                        secondaryFieldList.add(secondaryField);
-                    }
+                if (!match || "secondary".equals(level)) {
+                    // 必选+扩展字段不能匹配到数据库中的字段存放 或者 该字段为扩展字段,则添加到扩展字段中
+                    FieldsDto secondaryField = new FieldsDto();
+                    secondaryField.setCode(code);
+                    secondaryField.setName(name);
+                    secondaryField.setEnable(true);
+                    secondaryField.setValue(cellValue);
+                    secondaryFieldList.add(secondaryField);
                 }
             }
             // 校验试卷编号