瀏覽代碼

fix:客观题导入更改

caozixuan 11 月之前
父節點
當前提交
497b7a72de

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

@@ -842,9 +842,13 @@ public class ImportLogicServiceImpl implements ImportLogicService {
             throw ExceptionResultEnum.ERROR.exception("仅针对模式4的考试可以导入");
         }
         // 课程编号名称校验
-        Map<String, String> courseCheckMap = basicCourseService.list(
-                        new QueryWrapper<BasicCourse>().lambda().eq(BasicCourse::getSchoolId, schoolId)).stream()
-                .collect(Collectors.toMap(BasicCourse::getCode, BasicCourse::getName));
+        Map<String, Set<String>> courseCheckMap = basicCourseService.list(
+                new QueryWrapper<BasicCourse>().lambda().eq(BasicCourse::getSchoolId, schoolId)).stream().collect(
+                Collectors.toMap(BasicCourse::getCode, v -> new HashSet<>(Collections.singletonList(v.getName())), (Set<String> v1, Set<String> v2) -> {
+                    v1.addAll(v2);
+                    return v1;
+                }));
+
         List<MarkPaper> markPaperList = markPaperService.findMarkPaperListByExamId(examId);
         // 题号重复校验
         // 导入的客观题题号集合
@@ -880,9 +884,10 @@ public class ImportLogicServiceImpl implements ImportLogicService {
 
             // 1.题号重复校验
             if (SystemConstant.strNotNull(paperNumber) && mainNumber != null && subNumber != null) {
-                logicErrorCommonNotice = String.format("课程代码为[%s],试卷编号为[%s],大题号为[%s],小题号为[%s]的数据异常 : ", courseCode, paperNumber, mainNumber,
-                        subNumber);
-                String questionNumberKey = courseCode + SystemConstant.HYPHEN + paperNumber + SystemConstant.HYPHEN + mainNumber + SystemConstant.HYPHEN + subNumber;
+                logicErrorCommonNotice = String.format("课程代码为[%s],试卷编号为[%s],大题号为[%s],小题号为[%s]的数据异常 : ", courseCode,
+                        paperNumber, mainNumber, subNumber);
+                String questionNumberKey =
+                        courseCode + SystemConstant.HYPHEN + paperNumber + SystemConstant.HYPHEN + mainNumber + SystemConstant.HYPHEN + subNumber;
                 if (questionNumberCheckSet.contains(questionNumberKey)) {
                     logicErrorList.add("excel中题号重复");
                 } else {
@@ -905,10 +910,11 @@ public class ImportLogicServiceImpl implements ImportLogicService {
             if (SystemConstant.strNotNull(courseCode) && SystemConstant.strNotNull(courseName) && SystemConstant.strNotNull(paperNumber)) {
                 if (!courseCheckMap.containsKey(courseCode)) {
                     logicErrorList.add("课程编号不存在");
-                } else if (!courseCheckMap.get(courseCode).equals(courseName)) {
+                } else if (!courseCheckMap.get(courseCode).contains(courseName)) {
                     logicErrorList.add("课程编号名称不匹配");
                 }
-                if (markPaperList.stream().noneMatch(m -> m.getPaperNumber().equals(paperNumber) && m.getCourseCode().equals(courseCode))) {
+                if (markPaperList.stream().noneMatch(
+                        m -> m.getPaperNumber().equals(paperNumber) && m.getCourseCode().equals(courseCode) && m.getCourseName().equals(courseName))) {
                     logicErrorList.add("考试课程中不存在该试卷,请先创建试卷");
                 }
             }
@@ -946,20 +952,20 @@ public class ImportLogicServiceImpl implements ImportLogicService {
             // 4.判断答案是否符合题型
             if (questionType != null && SystemConstant.strNotNull(answer)) {
                 switch (questionType) {
-                    case 1:
-                        if (answer.length() > 1) {
-                            logicErrorList.add("单选题答案只能有一个");
-                        }
-                        break;
-                    case 2:
-                        break;
-                    case 3:
-                        if (optionCount != 2) {
-                            logicErrorList.add("判断题[选项个数]只能为2");
-                        }
-                        break;
-                    default:
-                        logicErrorList.add("[题型(1-单选,2-多选,3-判断)]必须从1、2、3中填写");
+                case 1:
+                    if (answer.length() > 1) {
+                        logicErrorList.add("单选题答案只能有一个");
+                    }
+                    break;
+                case 2:
+                    break;
+                case 3:
+                    if (optionCount != 2) {
+                        logicErrorList.add("判断题[选项个数]只能为2");
+                    }
+                    break;
+                default:
+                    logicErrorList.add("[题型(1-单选,2-多选,3-判断)]必须从1、2、3中填写");
                 }
             }
 
@@ -1029,9 +1035,13 @@ public class ImportLogicServiceImpl implements ImportLogicService {
         }
 
         // 课程编号名称校验
-        Map<String, String> courseCheckMap = basicCourseService.list(
-                        new QueryWrapper<BasicCourse>().lambda().eq(BasicCourse::getSchoolId, schoolId)).stream()
-                .collect(Collectors.toMap(BasicCourse::getCode, BasicCourse::getName));
+        Map<String, Set<String>> courseCheckMap = basicCourseService.list(
+                new QueryWrapper<BasicCourse>().lambda().eq(BasicCourse::getSchoolId, schoolId)).stream().collect(
+                Collectors.toMap(BasicCourse::getCode, v -> new HashSet<>(Collections.singletonList(v.getName())),
+                        (Set<String> v1, Set<String> v2) -> {
+                            v1.addAll(v2);
+                            return v1;
+                        }));
         List<MarkPaper> markPaperList = markPaperService.findMarkPaperListByExamId(examId);
         // 题号重复校验
         // 导入的客观题题号集合
@@ -1061,9 +1071,10 @@ public class ImportLogicServiceImpl implements ImportLogicService {
 
             // 1.题号重复校验
             if (SystemConstant.strNotNull(paperNumber) && mainNumber != null && subNumber != null) {
-                excelErrorCommonNotice = String.format("课程代码为[%s],试卷编号为[%s],大题号为[%s],小题号为[%s]的数据异常 : ", courseCode, paperNumber, mainNumber,
-                        subNumber);
-                String questionNumberKey = courseCode + SystemConstant.HYPHEN + paperNumber + SystemConstant.HYPHEN + mainNumber + SystemConstant.HYPHEN + subNumber;
+                excelErrorCommonNotice = String.format("课程代码为[%s],试卷编号为[%s],大题号为[%s],小题号为[%s]的数据异常 : ", courseCode,
+                        paperNumber, mainNumber, subNumber);
+                String questionNumberKey =
+                        courseCode + SystemConstant.HYPHEN + paperNumber + SystemConstant.HYPHEN + mainNumber + SystemConstant.HYPHEN + subNumber;
                 if (questionNumberCheckSet.contains(questionNumberKey)) {
                     excelErrorList.add("excel中题号重复");
                 } else {
@@ -1078,10 +1089,11 @@ public class ImportLogicServiceImpl implements ImportLogicService {
             if (SystemConstant.strNotNull(courseCode) && SystemConstant.strNotNull(courseName) && SystemConstant.strNotNull(paperNumber)) {
                 if (!courseCheckMap.containsKey(courseCode)) {
                     excelErrorList.add("课程代码不存在");
-                } else if (!courseCheckMap.get(courseCode).equals(courseName)) {
+                } else if (!courseCheckMap.get(courseCode).contains(courseName)) {
                     excelErrorList.add("课程代码名称不匹配");
                 }
-                if (markPaperList.stream().noneMatch(m -> m.getPaperNumber().equals(paperNumber) && m.getCourseCode().equals(courseCode))) {
+                if (markPaperList.stream().noneMatch(
+                        m -> m.getPaperNumber().equals(paperNumber) && m.getCourseCode().equals(courseCode) && m.getCourseName().equals(courseName))) {
                     excelErrorList.add("考试课程中不存在该试卷,请先创建试卷");
                 }
             }
@@ -1220,7 +1232,7 @@ public class ImportLogicServiceImpl implements ImportLogicService {
                                     userSaveParams.setPassword(SystemConstant.DEFAULT_PASSWORD);
                                     userSaveParams.setOrgId(orgId);
                                     userSaveParams.setEnable(true);
-                                    userSaveParams.setRoleIds(new Long[]{markerRole.getId()});
+                                    userSaveParams.setRoleIds(new Long[] { markerRole.getId() });
                                     try {
                                         markUser.setUserId(sysUserService.saveUser(userSaveParams));
                                         markUser.setName(markerCode);