Browse Source

考务数据导出 修改

caozixuan 4 years ago
parent
commit
a715fdab0f

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

@@ -24,6 +24,7 @@ public enum EnumType {
     MAKE_METHOD("题卡制作方式"),
     MAKE_METHOD("题卡制作方式"),
     PRINT_PLAN_STATUS_ENUM("印刷计划状态类型"),
     PRINT_PLAN_STATUS_ENUM("印刷计划状态类型"),
     EXAM_DETAIL_STATUS_ENUM("考场状态类型"),
     EXAM_DETAIL_STATUS_ENUM("考场状态类型"),
+    EXAMINATION_DB_FIELDS_ENUM("考务数据导入-数据库所必须字段枚举"),
     CARD_TYPE("题卡类型");
     CARD_TYPE("题卡类型");
 
 
     EnumType(String desc) {
     EnumType(String desc) {

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

@@ -0,0 +1,45 @@
+package com.qmth.distributed.print.business.enums;
+
+import com.qmth.distributed.print.business.enums.result.EnumResult;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description: 考务数据导入-数据库所必须字段枚举
+ * @Author: CaoZixuan
+ * @Date: 2021-04-20
+ */
+public enum ExaminationDBFieldsEnum {
+    STUDENT_CODE("学号"),
+    STUDENT_NAME("姓名"),
+    COURSE_CODE("课程代码"),
+    COURSE_NAME("课程名称"),
+    EXAM_PLACE("考点"),
+    EXAM_ROOM("考场"),
+    EXAM_DATE("考试日期"),
+    EXAM_TIME("考试时间"),
+    PAPER_NUMBER("试卷编号");
+    private final String desc;
+
+    ExaminationDBFieldsEnum(String desc) {
+        this.desc = desc;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+    public static List<EnumResult> listTypes() {
+        List<EnumResult> list = new ArrayList<>();
+        for (ExaminationDBFieldsEnum value : ExaminationDBFieldsEnum.values()) {
+            EnumResult result = new EnumResult();
+            result.setName(value.name());
+            result.setOrdinal(value.ordinal());
+            result.setCode(null);
+            result.setDesc(value.getDesc());
+            list.add(result);
+        }
+        return list;
+    }
+}

+ 16 - 10
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicCourseServiceImpl.java

@@ -55,7 +55,7 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
     }
     }
 
 
     @Override
     @Override
-    public boolean saveCourse(BasicCourse course,Long userId) {
+    public boolean saveCourse(BasicCourse course, Long userId) {
         Long schoolId = course.getSchoolId();
         Long schoolId = course.getSchoolId();
         course.setSchoolId(schoolId);
         course.setSchoolId(schoolId);
 
 
@@ -108,19 +108,25 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
 
 
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
     @Override
     @Override
-    public void verifyCourseInfo(Long schoolId,String courseCode, String courseName,Long userId) {
-        int count = this.count(new QueryWrapper<BasicCourse>().lambda()
-                .eq(BasicCourse::getSchoolId,schoolId)
-                .eq(BasicCourse::getCode,courseCode)
-                .eq(BasicCourse::getName,courseName));
-        if (count > 1){
-            throw ExceptionResultEnum.ERROR.exception("学校id为 : " + schoolId +  " 课程代码为 : " + courseCode + " 课程名称为 : " + courseName + " 的课程信息异常");
-        }else if (count < 1){
+    public void verifyCourseInfo(Long schoolId, String courseCode, String courseName, Long userId) {
+        QueryWrapper<BasicCourse> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(BasicCourse::getSchoolId, schoolId).eq(BasicCourse::getCode, courseCode);
+
+        BasicCourse tmp = this.getOne(queryWrapper);
+        if (tmp != null) {
+            if (!courseName.equals(tmp.getName())) {
+                throw ExceptionResultEnum.ERROR
+                        .exception("课程代码和课程名称不匹配,课程代码为 :'" + courseCode + "',输入的课程名称 :'" + courseName + "',实际该代码对应的课程名称 :'" + tmp.getName() + "'。");
+            }
+        } else {
             BasicCourse basicCourse = new BasicCourse();
             BasicCourse basicCourse = new BasicCourse();
             basicCourse.setName(courseName);
             basicCourse.setName(courseName);
             basicCourse.setCode(courseCode);
             basicCourse.setCode(courseCode);
             basicCourse.setSchoolId(schoolId);
             basicCourse.setSchoolId(schoolId);
-            this.saveCourse(basicCourse,userId);
+            basicCourse.setId(SystemConstant.getDbUuid());
+            basicCourse.setCreateId(userId);
+            basicCourse.setCreateTime(System.currentTimeMillis());
+            this.saveOrUpdate(basicCourse);
         }
         }
     }
     }
 }
 }

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

@@ -13,10 +13,7 @@ import com.qmth.distributed.print.business.bean.dto.PdfDto;
 import com.qmth.distributed.print.business.bean.params.ArraysParams;
 import com.qmth.distributed.print.business.bean.params.ArraysParams;
 import com.qmth.distributed.print.business.bean.params.SerialNumberParams;
 import com.qmth.distributed.print.business.bean.params.SerialNumberParams;
 import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.entity.*;
-import com.qmth.distributed.print.business.enums.ExamStatusEnum;
-import com.qmth.distributed.print.business.enums.MakeMethodEnum;
-import com.qmth.distributed.print.business.enums.PrintPlanStatusEnum;
-import com.qmth.distributed.print.business.enums.UploadFileEnum;
+import com.qmth.distributed.print.business.enums.*;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.distributed.print.business.templete.service.TaskLogicService;
 import com.qmth.distributed.print.business.templete.service.TaskLogicService;
 import com.qmth.distributed.print.business.util.ConvertUtil;
 import com.qmth.distributed.print.business.util.ConvertUtil;
@@ -431,25 +428,32 @@ public class TaskLogicServiceImpl implements TaskLogicService {
 
 
                 Cell cell = row.getCell(index);
                 Cell cell = row.getCell(index);
                 String cellValue = String.valueOf(ExcelUtil.convert(cell));
                 String cellValue = String.valueOf(ExcelUtil.convert(cell));
-
-                if ("学号".equals(name)) {
+                // TODO: 2021/4/20 可以优化 
+                if (ExaminationDBFieldsEnum.STUDENT_CODE.getDesc().equals(name)) {
                     studentCode = cellValue;
                     studentCode = cellValue;
-                } else if ("姓名".equals(name)) {
+                    ConvertUtil.verifyLength(studentCode,10, ExaminationDBFieldsEnum.STUDENT_CODE.getDesc());
+                } else if (ExaminationDBFieldsEnum.STUDENT_NAME.getDesc().equals(name)) {
                     studentName = cellValue;
                     studentName = cellValue;
-                } else if ("课程代码".equals(name)) {
+                    ConvertUtil.verifyLength(studentName,15,ExaminationDBFieldsEnum.STUDENT_NAME.getDesc());
+                } else if (ExaminationDBFieldsEnum.COURSE_CODE.getDesc().equals(name)) {
                     courseCode = cellValue;
                     courseCode = cellValue;
-                } else if ("课程名称".equals(name)) {
+                    ConvertUtil.verifyLength(courseCode,10,ExaminationDBFieldsEnum.COURSE_CODE.getDesc());
+                } else if (ExaminationDBFieldsEnum.COURSE_NAME.getDesc().equals(name)) {
                     courseName = cellValue;
                     courseName = cellValue;
-                } else if ("考点".equals(name)) {
+                    ConvertUtil.verifyLength(courseName,20,ExaminationDBFieldsEnum.COURSE_NAME.getDesc());
+                } else if (ExaminationDBFieldsEnum.EXAM_PLACE.getDesc().equals(name)) {
                     examPlace = cellValue;
                     examPlace = cellValue;
-                } else if ("考场".equals(name)) {
+                    ConvertUtil.verifyLength(examPlace,10,ExaminationDBFieldsEnum.EXAM_PLACE.getDesc());
+                } else if (ExaminationDBFieldsEnum.EXAM_ROOM.getDesc().equals(name)) {
                     examRoom = cellValue;
                     examRoom = cellValue;
-                } else if ("考试日期".equals(name)) {
+                    ConvertUtil.verifyLength(examRoom,10,ExaminationDBFieldsEnum.EXAM_ROOM.getDesc());
+                } else if (ExaminationDBFieldsEnum.EXAM_DATE.getDesc().equals(name)) {
                     examDate = cellValue;
                     examDate = cellValue;
-                } else if ("考试时间".equals(name)) {
+                } else if (ExaminationDBFieldsEnum.EXAM_TIME.getDesc().equals(name)) {
                     examTime = cellValue;
                     examTime = cellValue;
-                } else if ("试卷编号".equals(name)) {
+                } else if (ExaminationDBFieldsEnum.PAPER_NUMBER.getDesc().equals(name)) {
                     paperNumber = cellValue;
                     paperNumber = cellValue;
+                    ConvertUtil.verifyLength(paperNumber,15,ExaminationDBFieldsEnum.PAPER_NUMBER.getDesc());
                 } else {
                 } else {
                     if ("primary".equals(level)) {
                     if ("primary".equals(level)) {
                         throw ExceptionResultEnum.ERROR.exception("有数据库不需要的必选字段 : " + name);
                         throw ExceptionResultEnum.ERROR.exception("有数据库不需要的必选字段 : " + name);
@@ -490,7 +494,23 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             dataMap.put("printPlanName", printPlanName);
             dataMap.put("printPlanName", printPlanName);
             dataList.add(dataMap);
             dataList.add(dataMap);
         }
         }
-        System.out.println("dataList = " + JSON.toJSONString(dataList));
+        // 校验课程代码和试卷编号在印刷计划下是1对1的关系
+        List<String> courseCodeList = dataList.stream().map(e -> String.valueOf(e.get("courseCode"))).distinct().collect(Collectors.toList());
+        List<String> paperNumberList = dataList.stream().map(e -> String.valueOf(e.get("paperNumber"))).distinct().collect(Collectors.toList());
+        for (String courseCode : courseCodeList) {
+            List<String> tmp = dataList.stream().filter(e -> courseCode.equals(String.valueOf(e.get("courseCode"))))
+                    .map(e -> String.valueOf(e.get("paperNumber"))).distinct().collect(Collectors.toList());
+            if (tmp.size() != 1){
+                throw ExceptionResultEnum.ERROR.exception("课程代码为 " + courseCode + ",对应多个试卷编号 : " + tmp);
+            }
+        }
+        for (String paperNumber : paperNumberList) {
+            List<String> tmp = dataList.stream().filter(e -> paperNumber.equals(String.valueOf(e.get("paperNumber"))))
+                    .map(e -> String.valueOf(e.get("courseCode"))).distinct().collect(Collectors.toList());
+            if (tmp.size() != 1){
+                throw ExceptionResultEnum.ERROR.exception("试卷编号为 " + paperNumber + ",对应多个课程代码 : " + tmp);
+            }
+        }
 
 
         // 删除印刷计划下的考务数据
         // 删除印刷计划下的考务数据
         examDetailService.deleteExaminationData(printPlanId);
         examDetailService.deleteExaminationData(printPlanId);

+ 9 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/ConvertUtil.java

@@ -81,10 +81,6 @@ public class ConvertUtil {
             System.out.println("开始时间要小于结束时间 时间: " + time);
             System.out.println("开始时间要小于结束时间 时间: " + time);
         }
         }
 
 
-        System.out.println("开始时间 : " + startTimeStr + " 结束时间 : " + endTimeStr);
-        System.out.println("开始时间 : " + startTime + " 结束时间 : " + endTime);
-        System.out.println(new Date().getTime());
-
         Map<String, Object> timeMap = new HashMap<>();
         Map<String, Object> timeMap = new HashMap<>();
         timeMap.put("startTime", startTime);
         timeMap.put("startTime", startTime);
         timeMap.put("endTime", endTime);
         timeMap.put("endTime", endTime);
@@ -255,4 +251,13 @@ public class ConvertUtil {
             }
             }
         }
         }
     }
     }
+
+    public static void verifyLength(String str,int length,String name){
+        if (str == null || str.length() == 0 || str.equals("null")){
+            throw ExceptionResultEnum.ERROR.exception(name + "不能为空");
+        }
+        if (str.length() > length){
+            throw ExceptionResultEnum.ERROR.exception("内容'" + str + "' 超过长度限制 : " + length);
+        }
+    }
 }
 }

+ 3 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/EnumsController.java

@@ -101,6 +101,9 @@ public class EnumsController {
         } else if (type.equals(EnumType.EXAM_DETAIL_STATUS_ENUM.name())){
         } else if (type.equals(EnumType.EXAM_DETAIL_STATUS_ENUM.name())){
             // 考场状态
             // 考场状态
             list = ExamDetailStatusEnum.listTypes();
             list = ExamDetailStatusEnum.listTypes();
+        } else if (type.equals(EnumType.EXAMINATION_DB_FIELDS_ENUM.name())){
+            // 考场状态
+            list = ExaminationDBFieldsEnum.listTypes();
         }
         }
         return ResultUtil.ok(list);
         return ResultUtil.ok(list);
     }
     }