caozixuan 4 年之前
父節點
當前提交
be5eabd9f1

+ 18 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -245,6 +245,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     @Override
     public ExamTaskImportDto importFile(MultipartFile file) throws IOException, NoSuchFieldException {
         List<LinkedMultiValueMap<Integer, Object>> finalList = ExcelUtil.excelReader(file.getInputStream(), Lists.newArrayList(ExamTaskTempDto.class), (finalExcelList, finalColumnNameList, finalExcelErrorList) -> {
+            Map<String,String> courseCodePaperNumberMap = new HashMap<>();
             List<ExcelError> excelErrorTemp = new ArrayList<>();
             // 只允许导入一个sheet
             if (finalExcelList.size() > 1) {
@@ -271,6 +272,14 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                     } else if (!course.getName().equals(userImportDto.getCourseName())) {
                         excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[课程名称]与系统中不匹配"));
                     }
+                    if (courseCodePaperNumberMap.containsKey(userImportDto.getCourseCode())){
+                         String paperNumber = courseCodePaperNumberMap.get(userImportDto.getCourseCode());
+                         if (paperNumber != null &&  !paperNumber.equals(userImportDto.getPaperNumber())){
+                             excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[课程代码]与[试卷编号]不唯一"));
+                         }
+                    }else {
+                        courseCodePaperNumberMap.put(userImportDto.getCourseCode(),userImportDto.getPaperNumber());
+                    }
                 }
             }
             if (excelErrorTemp.size() > 0) {
@@ -344,7 +353,13 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                     if (sysUser1 == null) {
                         examTaskDto.setUsers(listUsers(examTaskTemp.getCourseCode(), null));
                     } else {
-                        examTaskDto.setUsers(listUsers(examTaskTemp.getCourseCode(), String.valueOf(sysUser1.getId())));
+                        List<BlurryUserDto> blurryUserDtoList = listUsers(examTaskTemp.getCourseCode(), String.valueOf(sysUser1.getId()));
+
+                        if (blurryUserDtoList.size() == 0){
+                            //如果没有查询到模糊用户数据 可能是excel中命题老师没有该课程权限,则舍弃该用户再次查询该科目-试卷的模糊用户
+                            blurryUserDtoList = listUsers(examTaskTemp.getCourseCode(), null);
+                        }
+                        examTaskDto.setUsers(blurryUserDtoList);
                     }
                 }
                 tasks.add(examTaskDto);
@@ -410,7 +425,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                 // 试卷编号生成规则:年月日(例如:20100419)+0000(例如:0001)顺序编号
                 String date = DateUtil.today().replace("-", "");
                 String paperNumber = convertUtil.getIncre(date, "paperNumber" + schoolId, 5);
-                examTask.setPaperNumber(paperNumber);
+                examTaskTemp.setPaperNumber(paperNumber);
             }
             examTask.setPaperNumber(examTaskTemp.getPaperNumber());
             examTask.setStartTime(task.getStartTime());
@@ -431,7 +446,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             for (Map<String, String> user : task.getUsers()) {
                 String ucourseCode = user.get("courseCode");
                 String upaperNumber = user.get("paperNumber");
-                if (examTaskTemp.getCourseCode().equals(ucourseCode) && examTaskTemp.getPaperNumber().equals(upaperNumber)) {
+                if (examTaskTemp.getCourseCode().equals(ucourseCode)) {
                     userId = user.get("userId");
                     specialty = user.get("specialty");
                 }