|
@@ -112,7 +112,7 @@ public class ImportLogicServiceImpl implements ImportLogicService {
|
|
|
BasicExamStudentParseDto basicExamStudentParseDto;
|
|
|
try {
|
|
|
// 解析excel文件内容
|
|
|
- basicExamStudentParseDto = this.parseBasicExamStudent(schoolId, inputStream);
|
|
|
+ basicExamStudentParseDto = this.parseImportExamStudentData(schoolId, inputStream);
|
|
|
} catch (Exception e) {
|
|
|
SystemConstant.addSummary(stringJoinerSummary, "解析导入文件内容结束,解析失败。" + e.getMessage());
|
|
|
throw ExceptionResultEnum.ERROR.exception(e.getMessage());
|
|
@@ -134,8 +134,6 @@ public class ImportLogicServiceImpl implements ImportLogicService {
|
|
|
boolean needPaperNumber = (basicSchool.getHasPaperNumber() != null && basicSchool.getHasPaperNumber()) || ExamModelEnum.MODEL4.equals(basicExam.getExamModel());
|
|
|
// 试卷编号->课程
|
|
|
Map<String, Long> paperNumberCourseIdMap = new HashMap<>();
|
|
|
- // 课程+教学班->任课老师
|
|
|
- Map<String, Long> courseTeachClassTeacherMap = new HashMap<>();
|
|
|
Map<String, Long> basicCourseIdMap = new HashMap<>();
|
|
|
// 课程学号唯一
|
|
|
List<String> courseCodeStudentCodeList = new ArrayList<>();
|
|
@@ -176,39 +174,43 @@ public class ImportLogicServiceImpl implements ImportLogicService {
|
|
|
}
|
|
|
|
|
|
// 解析考试日期和考试时间
|
|
|
- try {
|
|
|
- Map<String, Object> timeMap = ConvertUtil.analyzeExamTime(basicExamStudentImport.getExamDate(), basicExamStudentImport.getExamTime());
|
|
|
- basicExamStudent.setExamStartTime(Long.valueOf(String.valueOf(timeMap.get("startTime"))));
|
|
|
- basicExamStudent.setExamEndTime(Long.valueOf(String.valueOf(timeMap.get("endTime"))));
|
|
|
- } catch (Exception e) {
|
|
|
- stringJoiner.add(e.getMessage());
|
|
|
+ if (StringUtils.isNoneBlank(basicExamStudentImport.getExamDate(), basicExamStudentImport.getExamTime())) {
|
|
|
+ try {
|
|
|
+ Map<String, Object> timeMap = ConvertUtil.analyzeExamTime(basicExamStudentImport.getExamDate(), basicExamStudentImport.getExamTime());
|
|
|
+ basicExamStudent.setExamStartTime(Long.valueOf(String.valueOf(timeMap.get("startTime"))));
|
|
|
+ basicExamStudent.setExamEndTime(Long.valueOf(String.valueOf(timeMap.get("endTime"))));
|
|
|
+ } catch (Exception e) {
|
|
|
+ stringJoiner.add(e.getMessage());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 校验课程开课学院和课程代码
|
|
|
- String key = basicExamStudentImport.getCourseCode() + SystemConstant.HYPHEN + basicExamStudentImport.getTeachingRoomName();
|
|
|
- if (!basicCourseIdMap.containsKey(key)) {
|
|
|
- List<SysOrg> sysOrgList = sysOrgService.getSecondOrg(schoolId, basicExamStudentImport.getTeachingRoomName());
|
|
|
- if (CollectionUtils.isEmpty(sysOrgList)) {
|
|
|
- stringJoiner.add("开课学院[" + basicExamStudentImport.getTeachingRoomName() + "]在学院层级不存在");
|
|
|
- } else if (sysOrgList.size() == 1) {
|
|
|
- SysOrg sysOrg = sysOrgList.get(0);
|
|
|
- // 校验课程代码和开课学院
|
|
|
- BasicCourse basicCourse = basicCourseService.getByTeachRoomIdAndCode(sysOrg.getId(), basicExamStudentImport.getCourseCode());
|
|
|
- if (Objects.isNull(basicCourse)) {
|
|
|
- stringJoiner.add("课程代码[" + basicExamStudentImport.getCourseCode() + "]在开课学院[" + basicExamStudentImport.getTeachingRoomName() + "]不存在");
|
|
|
+ if (StringUtils.isNoneBlank(basicExamStudentImport.getCourseCode(), basicExamStudentImport.getTeachingRoomName())) {
|
|
|
+ String key = basicExamStudentImport.getCourseCode() + SystemConstant.HYPHEN + basicExamStudentImport.getTeachingRoomName();
|
|
|
+ if (!basicCourseIdMap.containsKey(key)) {
|
|
|
+ List<SysOrg> sysOrgList = sysOrgService.getSecondOrg(schoolId, basicExamStudentImport.getTeachingRoomName());
|
|
|
+ if (CollectionUtils.isEmpty(sysOrgList)) {
|
|
|
+ stringJoiner.add("开课学院[" + basicExamStudentImport.getTeachingRoomName() + "]在学院层级不存在");
|
|
|
+ } else if (sysOrgList.size() == 1) {
|
|
|
+ SysOrg sysOrg = sysOrgList.get(0);
|
|
|
+ // 校验课程代码和开课学院
|
|
|
+ BasicCourse basicCourse = basicCourseService.getByTeachRoomIdAndCode(sysOrg.getId(), basicExamStudentImport.getCourseCode());
|
|
|
+ if (Objects.isNull(basicCourse)) {
|
|
|
+ stringJoiner.add("课程代码[" + basicExamStudentImport.getCourseCode() + "]在开课学院[" + basicExamStudentImport.getTeachingRoomName() + "]不存在");
|
|
|
+ } else {
|
|
|
+ basicExamStudent.setCourseId(basicCourse.getId());
|
|
|
+ basicCourseIdMap.put(key, basicCourse.getId());
|
|
|
+ }
|
|
|
} else {
|
|
|
- basicExamStudent.setCourseId(basicCourse.getId());
|
|
|
- basicCourseIdMap.put(key, basicCourse.getId());
|
|
|
+ stringJoiner.add("开课学院[" + basicExamStudentImport.getTeachingRoomName() + "]存在多个");
|
|
|
}
|
|
|
} else {
|
|
|
- stringJoiner.add("开课学院[" + basicExamStudentImport.getTeachingRoomName() + "]存在多个");
|
|
|
+ basicExamStudent.setCourseId(basicCourseIdMap.get(key));
|
|
|
}
|
|
|
- } else {
|
|
|
- basicExamStudent.setCourseId(basicCourseIdMap.get(key));
|
|
|
}
|
|
|
|
|
|
// 校验任课老师工号和姓名
|
|
|
- if (StringUtils.isNotBlank(basicExamStudentImport.getTeacherCode()) && StringUtils.isNotBlank(basicExamStudentImport.getTeacherName())) {
|
|
|
+ if (StringUtils.isNoneBlank(basicExamStudentImport.getTeacherCode(), basicExamStudentImport.getTeacherName())) {
|
|
|
SysUser sysUser = sysUserService.getByLoginName(schoolId, basicExamStudentImport.getTeacherCode());
|
|
|
if (sysUser == null) {
|
|
|
stringJoiner.add("任课老师工号[" + basicExamStudentImport.getTeacherCode() + "]用户不存在");
|
|
@@ -304,7 +306,7 @@ public class ImportLogicServiceImpl implements ImportLogicService {
|
|
|
SystemConstant.addSummary(stringJoinerSummary, "开始解析导入文件内容");
|
|
|
BasicExamStudentParseDto basicExamStudentParseDto;
|
|
|
try {
|
|
|
- basicExamStudentParseDto = this.parseBasicExamStudent(schoolId, inputStream);
|
|
|
+ basicExamStudentParseDto = this.parseImportExamStudentData(schoolId, inputStream);
|
|
|
} catch (Exception e) {
|
|
|
SystemConstant.addSummary(stringJoinerSummary, "解析导入文件内容结束,解析失败。" + e.getMessage());
|
|
|
throw ExceptionResultEnum.ERROR.exception(e.getMessage());
|
|
@@ -324,8 +326,6 @@ public class ImportLogicServiceImpl implements ImportLogicService {
|
|
|
Map<String, Long> basicCourseIdMap = new HashMap<>();
|
|
|
// 课程学号唯一
|
|
|
List<String> courseCodeStudentCodeList = new ArrayList<>();
|
|
|
- // 课程+教学班->任课老师
|
|
|
- Map<String, Long> courseTeachClassTeacherMap = new HashMap<>();
|
|
|
// 是否有错误提示
|
|
|
boolean hasError = false;
|
|
|
|
|
@@ -345,37 +345,41 @@ public class ImportLogicServiceImpl implements ImportLogicService {
|
|
|
});
|
|
|
|
|
|
// 校验课程
|
|
|
- String key = basicExamStudentImport.getCourseCode() + SystemConstant.HYPHEN + basicExamStudentImport.getTeachingRoomName();
|
|
|
- if (!basicCourseIdMap.containsKey(key)) {
|
|
|
- List<SysOrg> sysOrgList = sysOrgService.getSecondOrg(schoolId, basicExamStudentImport.getTeachingRoomName());
|
|
|
- if (CollectionUtils.isEmpty(sysOrgList)) {
|
|
|
- stringJoiner.add("开课学院[" + basicExamStudentImport.getTeachingRoomName() + "]在学院层级不存在");
|
|
|
- } else {
|
|
|
- SysOrg sysOrg = sysOrgList.get(0);
|
|
|
- // 校验课程代码和开课学院
|
|
|
- BasicCourse basicCourse = basicCourseService.getByTeachRoomIdAndCode(sysOrg.getId(), basicExamStudentImport.getCourseCode());
|
|
|
- if (Objects.isNull(basicCourse)) {
|
|
|
- stringJoiner.add("课程代码[" + basicExamStudentImport.getCourseCode() + "]在开课学院[" + basicExamStudentImport.getTeachingRoomName() + "]不存在");
|
|
|
+ if (StringUtils.isNoneBlank(basicExamStudentImport.getCourseCode(), basicExamStudentImport.getTeachingRoomName())) {
|
|
|
+ String key = basicExamStudentImport.getCourseCode() + SystemConstant.HYPHEN + basicExamStudentImport.getTeachingRoomName();
|
|
|
+ if (!basicCourseIdMap.containsKey(key)) {
|
|
|
+ List<SysOrg> sysOrgList = sysOrgService.getSecondOrg(schoolId, basicExamStudentImport.getTeachingRoomName());
|
|
|
+ if (CollectionUtils.isEmpty(sysOrgList)) {
|
|
|
+ stringJoiner.add("开课学院[" + basicExamStudentImport.getTeachingRoomName() + "]在学院层级不存在");
|
|
|
} else {
|
|
|
- basicExamStudent.setCourseId(basicCourse.getId());
|
|
|
- basicCourseIdMap.put(key, basicCourse.getId());
|
|
|
+ SysOrg sysOrg = sysOrgList.get(0);
|
|
|
+ // 校验课程代码和开课学院
|
|
|
+ BasicCourse basicCourse = basicCourseService.getByTeachRoomIdAndCode(sysOrg.getId(), basicExamStudentImport.getCourseCode());
|
|
|
+ if (Objects.isNull(basicCourse)) {
|
|
|
+ stringJoiner.add("课程代码[" + basicExamStudentImport.getCourseCode() + "]在开课学院[" + basicExamStudentImport.getTeachingRoomName() + "]不存在");
|
|
|
+ } else {
|
|
|
+ basicExamStudent.setCourseId(basicCourse.getId());
|
|
|
+ basicCourseIdMap.put(key, basicCourse.getId());
|
|
|
+ }
|
|
|
}
|
|
|
+ } else {
|
|
|
+ basicExamStudent.setCourseId(basicCourseIdMap.get(key));
|
|
|
}
|
|
|
- } else {
|
|
|
- basicExamStudent.setCourseId(basicCourseIdMap.get(key));
|
|
|
}
|
|
|
|
|
|
//校验任课老师
|
|
|
- SysUser sysUser = sysUserService.getByLoginName(schoolId, basicExamStudentImport.getTeacherCode());
|
|
|
- if (sysUser == null) {
|
|
|
- stringJoiner.add("任课老师工号[" + basicExamStudentImport.getTeacherCode() + "]用户不存在");
|
|
|
- } else {
|
|
|
- if (!sysUser.getEnable()) {
|
|
|
- stringJoiner.add("任课老师工号[" + basicExamStudentImport.getTeacherCode() + "]用户已禁用");
|
|
|
- } else if (!sysUser.getRealName().equals(basicExamStudentImport.getTeacherName())) {
|
|
|
- stringJoiner.add("任课老师[" + basicExamStudentImport.getTeacherName() + "]与用户管理中姓名[" + sysUser.getRealName() + "]不一致");
|
|
|
+ if (StringUtils.isNotBlank(basicExamStudentImport.getTeacherCode())) {
|
|
|
+ SysUser sysUser = sysUserService.getByLoginName(schoolId, basicExamStudentImport.getTeacherCode());
|
|
|
+ if (sysUser == null) {
|
|
|
+ stringJoiner.add("任课老师工号[" + basicExamStudentImport.getTeacherCode() + "]用户不存在");
|
|
|
} else {
|
|
|
- basicExamStudent.setTeacherId(sysUser.getId());
|
|
|
+ if (!sysUser.getEnable()) {
|
|
|
+ stringJoiner.add("任课老师工号[" + basicExamStudentImport.getTeacherCode() + "]用户已禁用");
|
|
|
+ } else if (!sysUser.getRealName().equals(basicExamStudentImport.getTeacherName())) {
|
|
|
+ stringJoiner.add("任课老师[" + basicExamStudentImport.getTeacherName() + "]与用户管理中姓名[" + sysUser.getRealName() + "]不一致");
|
|
|
+ } else {
|
|
|
+ basicExamStudent.setTeacherId(sysUser.getId());
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -480,7 +484,7 @@ public class ImportLogicServiceImpl implements ImportLogicService {
|
|
|
SystemConstant.addSummary(stringJoinerSummary, "开始解析文件内容");
|
|
|
BasicExamStudentParseDto basicExamStudentParseDto;
|
|
|
try {
|
|
|
- basicExamStudentParseDto = this.parseExamStudent(schoolId, inputStream);
|
|
|
+ basicExamStudentParseDto = this.parseImportExamStudentData(schoolId, inputStream);
|
|
|
} catch (Exception e) {
|
|
|
SystemConstant.addSummary(stringJoinerSummary, "解析文件内容结束,解析失败。" + e.getMessage());
|
|
|
throw ExceptionResultEnum.ERROR.exception(e.getMessage());
|
|
@@ -508,8 +512,6 @@ public class ImportLogicServiceImpl implements ImportLogicService {
|
|
|
|
|
|
// 课程学号唯一
|
|
|
List<String> courseCodeStudentCodeList = new ArrayList<>();
|
|
|
- // 课程+教学班->任课老师
|
|
|
- Map<String, Long> courseTeachClassTeacherMap = new HashMap<>();
|
|
|
// 是否有错误提示
|
|
|
boolean hasError = false;
|
|
|
|
|
@@ -543,35 +545,39 @@ public class ImportLogicServiceImpl implements ImportLogicService {
|
|
|
}
|
|
|
|
|
|
// 解析并校验考试日期、考试时间
|
|
|
- try {
|
|
|
- Map<String, Object> timeMap = ConvertUtil.analyzeExamTime(basicExamStudentImport.getExamDate(), basicExamStudentImport.getExamTime());
|
|
|
- basicExamStudent.setExamStartTime(Long.valueOf(String.valueOf(timeMap.get("startTime"))));
|
|
|
- basicExamStudent.setExamEndTime(Long.valueOf(String.valueOf(timeMap.get("endTime"))));
|
|
|
- } catch (Exception e) {
|
|
|
- stringJoiner.add(e.getMessage());
|
|
|
+ if (StringUtils.isNoneBlank(basicExamStudentImport.getExamDate(), basicExamStudentImport.getExamTime())) {
|
|
|
+ try {
|
|
|
+ Map<String, Object> timeMap = ConvertUtil.analyzeExamTime(basicExamStudentImport.getExamDate(), basicExamStudentImport.getExamTime());
|
|
|
+ basicExamStudent.setExamStartTime(Long.valueOf(String.valueOf(timeMap.get("startTime"))));
|
|
|
+ basicExamStudent.setExamEndTime(Long.valueOf(String.valueOf(timeMap.get("endTime"))));
|
|
|
+ } catch (Exception e) {
|
|
|
+ stringJoiner.add(e.getMessage());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 校验开课学院是否存在该课程代码
|
|
|
- String key = basicExamStudentImport.getCourseCode() + SystemConstant.HYPHEN + basicExamStudentImport.getTeachingRoomName();
|
|
|
- if (!basicCourseIdMap.containsKey(key)) {
|
|
|
- List<SysOrg> sysOrgList = sysOrgService.getSecondOrg(schoolId, basicExamStudentImport.getTeachingRoomName());
|
|
|
- if (CollectionUtils.isEmpty(sysOrgList)) {
|
|
|
- stringJoiner.add("开课学院[" + basicExamStudentImport.getTeachingRoomName() + "]在学院层级不存在");
|
|
|
- } else if (sysOrgList.size() == 1) {
|
|
|
- SysOrg sysOrg = sysOrgList.get(0);
|
|
|
- // 校验课程代码和开课学院
|
|
|
- BasicCourse basicCourse = courseCodeNameInBasicCourseMap.get(sysOrg.getId().toString().concat(basicExamStudentImport.getCourseCode()));
|
|
|
- if (Objects.isNull(basicCourse)) {
|
|
|
- stringJoiner.add("课程代码[" + basicExamStudentImport.getCourseCode() + "]在开课学院[" + basicExamStudentImport.getTeachingRoomName() + "]不存在");
|
|
|
+ if (StringUtils.isNoneBlank(basicExamStudentImport.getCourseCode(), basicExamStudentImport.getTeachingRoomName())) {
|
|
|
+ String key = basicExamStudentImport.getCourseCode() + SystemConstant.HYPHEN + basicExamStudentImport.getTeachingRoomName();
|
|
|
+ if (!basicCourseIdMap.containsKey(key)) {
|
|
|
+ List<SysOrg> sysOrgList = sysOrgService.getSecondOrg(schoolId, basicExamStudentImport.getTeachingRoomName());
|
|
|
+ if (CollectionUtils.isEmpty(sysOrgList)) {
|
|
|
+ stringJoiner.add("开课学院[" + basicExamStudentImport.getTeachingRoomName() + "]在学院层级不存在");
|
|
|
+ } else if (sysOrgList.size() == 1) {
|
|
|
+ SysOrg sysOrg = sysOrgList.get(0);
|
|
|
+ // 校验课程代码和开课学院
|
|
|
+ BasicCourse basicCourse = courseCodeNameInBasicCourseMap.get(sysOrg.getId().toString().concat(basicExamStudentImport.getCourseCode()));
|
|
|
+ if (Objects.isNull(basicCourse)) {
|
|
|
+ stringJoiner.add("课程代码[" + basicExamStudentImport.getCourseCode() + "]在开课学院[" + basicExamStudentImport.getTeachingRoomName() + "]不存在");
|
|
|
+ } else {
|
|
|
+ basicExamStudent.setCourseId(basicCourse.getId());
|
|
|
+ basicCourseIdMap.put(key, basicCourse.getId());
|
|
|
+ }
|
|
|
} else {
|
|
|
- basicExamStudent.setCourseId(basicCourse.getId());
|
|
|
- basicCourseIdMap.put(key, basicCourse.getId());
|
|
|
+ stringJoiner.add("开课学院[" + basicExamStudentImport.getTeachingRoomName() + "]存在多个");
|
|
|
}
|
|
|
} else {
|
|
|
- stringJoiner.add("开课学院[" + basicExamStudentImport.getTeachingRoomName() + "]存在多个");
|
|
|
+ basicExamStudent.setCourseId(basicCourseIdMap.get(key));
|
|
|
}
|
|
|
- } else {
|
|
|
- basicExamStudent.setCourseId(basicCourseIdMap.get(key));
|
|
|
}
|
|
|
|
|
|
// 校验试卷编号和课程代码对应关系,试卷编号只能绑定一个课程
|
|
@@ -587,25 +593,27 @@ public class ImportLogicServiceImpl implements ImportLogicService {
|
|
|
}
|
|
|
|
|
|
// 校验试卷编号课程代码是否已命题且命题任务中课程代码是否一致
|
|
|
- if (paperNumberMap.containsKey(basicExamStudent.getPaperNumber())) {
|
|
|
- List<ExamTask> examTasks = paperNumberMap.get(basicExamStudent.getPaperNumber());
|
|
|
- if (examTasks.size() > 1) {
|
|
|
- stringJoiner.add(String.format("试卷编号[%s]在考试[%s]下有多条命题任务,请联系管理员处理", basicExamStudent.getPaperNumber(), basicExam.getName()));
|
|
|
- } else {
|
|
|
- Long courseId = paperNumberCourseIdInMap.get(basicExamStudent.getPaperNumber());
|
|
|
- ExamTask examTask = examTasks.get(0);
|
|
|
- if (!examTask.getCourseId().equals(courseId)) {
|
|
|
- stringJoiner.add(String.format("试卷编号[%s]对应课程代码与命题任务中对应课程代码不一致", basicExamStudent.getPaperNumber()));
|
|
|
+ if (StringUtils.isNotBlank(basicExamStudent.getPaperNumber())) {
|
|
|
+ if (paperNumberMap.containsKey(basicExamStudent.getPaperNumber())) {
|
|
|
+ List<ExamTask> examTasks = paperNumberMap.get(basicExamStudent.getPaperNumber());
|
|
|
+ if (examTasks.size() > 1) {
|
|
|
+ stringJoiner.add(String.format("试卷编号[%s]在考试[%s]下有多条命题任务,请联系管理员处理", basicExamStudent.getPaperNumber(), basicExam.getName()));
|
|
|
} else {
|
|
|
- basicExamStudent.setCoursePaperId(String.valueOf(examTask.getId()));
|
|
|
+ Long courseId = paperNumberCourseIdInMap.get(basicExamStudent.getPaperNumber());
|
|
|
+ ExamTask examTask = examTasks.get(0);
|
|
|
+ if (!examTask.getCourseId().equals(courseId)) {
|
|
|
+ stringJoiner.add(String.format("试卷编号[%s]对应课程代码与命题任务中对应课程代码不一致", basicExamStudent.getPaperNumber()));
|
|
|
+ } else {
|
|
|
+ basicExamStudent.setCoursePaperId(String.valueOf(examTask.getId()));
|
|
|
+ }
|
|
|
}
|
|
|
+ } else {
|
|
|
+ stringJoiner.add(String.format("试卷编号[%s]未命题", basicExamStudent.getPaperNumber()));
|
|
|
}
|
|
|
- } else {
|
|
|
- stringJoiner.add(String.format("试卷编号[%s]未命题", basicExamStudent.getPaperNumber()));
|
|
|
}
|
|
|
|
|
|
//校验任课老师是否存在,且工号和姓名是否与系统一致
|
|
|
- if (StringUtils.isNotBlank(basicExamStudentImport.getTeacherCode()) && StringUtils.isNotBlank(basicExamStudentImport.getTeacherName())) {
|
|
|
+ if (StringUtils.isNoneBlank(basicExamStudentImport.getTeacherCode(), basicExamStudentImport.getTeacherName())) {
|
|
|
SysUser sysUser = sysUserService.getByLoginName(schoolId, basicExamStudentImport.getTeacherCode());
|
|
|
if (sysUser == null) {
|
|
|
stringJoiner.add("任课老师工号[" + basicExamStudentImport.getTeacherCode() + "]用户不存在");
|
|
@@ -632,32 +640,36 @@ public class ImportLogicServiceImpl implements ImportLogicService {
|
|
|
}
|
|
|
|
|
|
// 校验试卷编号学号是否已生成印刷任务
|
|
|
- int studentCount = examStudentService.countByExamIdAndPaperNumberAndStudentCode(examId, basicExamStudent.getPaperNumber(), basicExamStudent.getStudentCode());
|
|
|
- if (studentCount > 0) {
|
|
|
- stringJoiner.add("试卷编号[" + basicExamStudent.getPaperNumber() + "]、学号[" + basicExamStudent.getStudentCode() + "]已有印刷任务,不允许重复导入");
|
|
|
- } else {
|
|
|
- if (basicExamStudent.getCourseId() != null) {
|
|
|
- // 校验课程学号唯一
|
|
|
- String courseCodeStudentCodeKey = basicExamStudent.getCourseId() + basicExamStudent.getStudentCode();
|
|
|
- if (courseCodeStudentCodeList.contains(courseCodeStudentCodeKey)) {
|
|
|
- stringJoiner.add("课程代码[" + basicExamStudentImport.getCourseCode() + "]已存在学号[" + basicExamStudentImport.getStudentCode() + "]的考生数据");
|
|
|
- } else {
|
|
|
- courseCodeStudentCodeList.add(courseCodeStudentCodeKey);
|
|
|
- }
|
|
|
+ if (StringUtils.isNoneBlank(basicExamStudent.getPaperNumber(), basicExamStudent.getStudentCode())) {
|
|
|
+ int studentCount = examStudentService.countByExamIdAndPaperNumberAndStudentCode(examId, basicExamStudent.getPaperNumber(), basicExamStudent.getStudentCode());
|
|
|
+ if (studentCount > 0) {
|
|
|
+ stringJoiner.add("试卷编号[" + basicExamStudent.getPaperNumber() + "]、学号[" + basicExamStudent.getStudentCode() + "]已有印刷任务,不允许重复导入");
|
|
|
+ } else {
|
|
|
+ if (basicExamStudent.getCourseId() != null) {
|
|
|
+ // 校验课程学号唯一
|
|
|
+ String courseCodeStudentCodeKey = basicExamStudent.getCourseId() + basicExamStudent.getStudentCode();
|
|
|
+ if (courseCodeStudentCodeList.contains(courseCodeStudentCodeKey)) {
|
|
|
+ stringJoiner.add("课程代码[" + basicExamStudentImport.getCourseCode() + "]已存在学号[" + basicExamStudentImport.getStudentCode() + "]的考生数据");
|
|
|
+ } else {
|
|
|
+ courseCodeStudentCodeList.add(courseCodeStudentCodeKey);
|
|
|
+ }
|
|
|
|
|
|
- if (courseIdStudentCodeMap.containsKey(basicExamStudent.getCourseId() + SystemConstant.HYPHEN + basicExamStudent.getStudentCode())) {
|
|
|
- BasicExamStudent basicStudent = courseIdStudentCodeMap.get(basicExamStudent.getCourseId() + SystemConstant.HYPHEN + basicExamStudent.getStudentCode());
|
|
|
- basicExamStudent.setId(basicStudent.getId());
|
|
|
+ if (courseIdStudentCodeMap.containsKey(basicExamStudent.getCourseId() + SystemConstant.HYPHEN + basicExamStudent.getStudentCode())) {
|
|
|
+ BasicExamStudent basicStudent = courseIdStudentCodeMap.get(basicExamStudent.getCourseId() + SystemConstant.HYPHEN + basicExamStudent.getStudentCode());
|
|
|
+ basicExamStudent.setId(basicStudent.getId());
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 校验试卷编号、考试日期、考试时间、考点、考场是否已命题
|
|
|
- List<ExamDetail> examDetailList = examDetailService.listExamDetailByExamIdAndCourseIdAndPaperNumber(examId, basicExamStudent.getCourseId(), basicExamStudent.getPaperNumber());
|
|
|
- if (CollectionUtils.isNotEmpty(examDetailList)) {
|
|
|
- long count = examDetailList.stream().filter(m -> basicExamStudent.getExamStartTime().equals(m.getExamStartTime()) && basicExamStudent.getExamEndTime().equals(m.getExamEndTime()) && basicExamStudent.getExamPlace().equals(m.getExamPlace()) && basicExamStudent.getExamRoom().equals(m.getExamRoom())).count();
|
|
|
- if (count != 0) {
|
|
|
- stringJoiner.add("试卷编号[" + basicExamStudentImport.getPaperNumber() + "]、考试日期[" + basicExamStudentImport.getExamDate() + "]、考试时间[" + basicExamStudentImport.getExamTime() + "]、考场[" + basicExamStudentImport.getExamPlace() + "]、考点[" + basicExamStudentImport.getExamRoom() + "]已有印刷任务");
|
|
|
+ if (basicExamStudent.getCourseId() != null && StringUtils.isNotBlank(basicExamStudent.getPaperNumber())) {
|
|
|
+ List<ExamDetail> examDetailList = examDetailService.listExamDetailByExamIdAndCourseIdAndPaperNumber(examId, basicExamStudent.getCourseId(), basicExamStudent.getPaperNumber());
|
|
|
+ if (CollectionUtils.isNotEmpty(examDetailList)) {
|
|
|
+ long count = examDetailList.stream().filter(m -> basicExamStudent.getExamStartTime().equals(m.getExamStartTime()) && basicExamStudent.getExamEndTime().equals(m.getExamEndTime()) && basicExamStudent.getExamPlace().equals(m.getExamPlace()) && basicExamStudent.getExamRoom().equals(m.getExamRoom())).count();
|
|
|
+ if (count != 0) {
|
|
|
+ stringJoiner.add("试卷编号[" + basicExamStudentImport.getPaperNumber() + "]、考试日期[" + basicExamStudentImport.getExamDate() + "]、考试时间[" + basicExamStudentImport.getExamTime() + "]、考场[" + basicExamStudentImport.getExamPlace() + "]、考点[" + basicExamStudentImport.getExamRoom() + "]已有印刷任务");
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -688,7 +700,7 @@ public class ImportLogicServiceImpl implements ImportLogicService {
|
|
|
return map;
|
|
|
}
|
|
|
|
|
|
- private BasicExamStudentParseDto parseBasicExamStudent(Long schoolId, InputStream inputStream) {
|
|
|
+ private BasicExamStudentParseDto parseImportExamStudentData(Long schoolId, InputStream inputStream) {
|
|
|
ExcelReader excelReader = ExcelReader.create(ExcelType.XLSX, inputStream, 1);
|
|
|
List<DataMap> dataMapList;
|
|
|
try {
|
|
@@ -721,91 +733,56 @@ public class ImportLogicServiceImpl implements ImportLogicService {
|
|
|
|
|
|
AtomicInteger i = new AtomicInteger(2);
|
|
|
dataMapList.forEach(m -> {
|
|
|
- BasicExamStudentImport basicExamStudentImport = new BasicExamStudentImport();
|
|
|
- basicExamStudentImport.setRowIndex(i.getAndIncrement());
|
|
|
- Class<BasicExamStudentImport> aClass = (Class<BasicExamStudentImport>) basicExamStudentImport.getClass();
|
|
|
- for (Map.Entry<String, String> entry : m.entrySet()) {
|
|
|
- // 必填字段
|
|
|
- if (requiredMap.containsKey(entry.getKey())) {
|
|
|
- EnumResult enumResult = requiredMap.get(entry.getKey());
|
|
|
- try {
|
|
|
- Field declaredField = aClass.getDeclaredField(enumResult.getCode());
|
|
|
- declaredField.setAccessible(true);
|
|
|
- declaredField.set(basicExamStudentImport, StringUtils.deleteWhitespace(entry.getValue()));
|
|
|
- } catch (NoSuchFieldException e) {
|
|
|
- throw ExceptionResultEnum.ERROR.exception("未获取到表头为[" + entry.getKey() + "]的属性值");
|
|
|
- } catch (IllegalAccessException e) {
|
|
|
- throw ExceptionResultEnum.ERROR.exception("表头为[" + entry.getKey() + "]的值赋值失败");
|
|
|
+ if (m.size() > 0) {
|
|
|
+ BasicExamStudentImport basicExamStudentImport = new BasicExamStudentImport();
|
|
|
+ basicExamStudentImport.setRowIndex(i.getAndIncrement());
|
|
|
+ Class<BasicExamStudentImport> aClass = (Class<BasicExamStudentImport>) basicExamStudentImport.getClass();
|
|
|
+ for (Map.Entry<String, String> entry : m.entrySet()) {
|
|
|
+ // 必填字段
|
|
|
+ if (requiredMap.containsKey(entry.getKey())) {
|
|
|
+ EnumResult enumResult = requiredMap.get(entry.getKey());
|
|
|
+ try {
|
|
|
+ Field declaredField = aClass.getDeclaredField(enumResult.getCode());
|
|
|
+ declaredField.setAccessible(true);
|
|
|
+ declaredField.set(basicExamStudentImport, StringUtils.deleteWhitespace(entry.getValue()));
|
|
|
+ } catch (NoSuchFieldException e) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("未获取到表头为[" + entry.getKey() + "]的属性值");
|
|
|
+ } catch (IllegalAccessException e) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("表头为[" + entry.getKey() + "]的值赋值失败");
|
|
|
+ }
|
|
|
+ basicExamStudentImport.getRequiredFieldList().add(new CodeNameEnableDisabledValue(enumResult.getCode(), enumResult.getName(), enumResult.getEnable(), enumResult.getDisabled(), StringUtils.isNotBlank(entry.getValue()) ? entry.getValue() : null));
|
|
|
+ }
|
|
|
+ // 扩展字段
|
|
|
+ if (extendMap.containsKey(entry.getKey())) {
|
|
|
+ EnumResult enumResult = extendMap.get(entry.getKey());
|
|
|
+ basicExamStudentImport.getExtendFieldList().add(new CodeNameEnableDisabledValue(enumResult.getCode(), enumResult.getName(), enumResult.getEnable(), enumResult.getDisabled(), StringUtils.isNotBlank(entry.getValue()) ? entry.getValue() : null));
|
|
|
}
|
|
|
- basicExamStudentImport.getRequiredFieldList().add(new CodeNameEnableDisabledValue(enumResult.getCode(), enumResult.getName(), enumResult.getEnable(), enumResult.getDisabled(), StringUtils.isNotBlank(entry.getValue()) ? entry.getValue() : ""));
|
|
|
- }
|
|
|
- // 扩展字段
|
|
|
- if (extendMap.containsKey(entry.getKey())) {
|
|
|
- EnumResult enumResult = extendMap.get(entry.getKey());
|
|
|
- basicExamStudentImport.getExtendFieldList().add(new CodeNameEnableDisabledValue(enumResult.getCode(), enumResult.getName(), enumResult.getEnable(), enumResult.getDisabled(), StringUtils.isNotBlank(entry.getValue()) ? entry.getValue() : ""));
|
|
|
}
|
|
|
- }
|
|
|
- list.add(basicExamStudentImport);
|
|
|
- });
|
|
|
- }
|
|
|
- basicExamStudentParseDto.setBasicExamStudentImportList(list);
|
|
|
- return basicExamStudentParseDto;
|
|
|
- }
|
|
|
|
|
|
- private BasicExamStudentParseDto parseExamStudent(Long schoolId, InputStream inputStream) {
|
|
|
- ExcelReader excelReader = ExcelReader.create(ExcelType.XLSX, inputStream, 1);
|
|
|
- List<DataMap> dataMapList = null;
|
|
|
- try {
|
|
|
- dataMapList = excelReader.getDataMapList();
|
|
|
- } catch (Exception e) {
|
|
|
- throw ExceptionResultEnum.ERROR.exception("读取excel内容失败");
|
|
|
- }
|
|
|
- BasicExamStudentParseDto basicExamStudentParseDto = new BasicExamStudentParseDto();
|
|
|
- List<BasicExamStudentImport> list = new ArrayList<>();
|
|
|
- if (CollectionUtils.isNotEmpty(dataMapList)) {
|
|
|
- String[] columnNames = excelReader.getColumnNames();
|
|
|
-
|
|
|
- BasicExamRule basicExamRule = basicExamRuleService.getBySchoolId(schoolId);
|
|
|
- if (basicExamRule == null) {
|
|
|
- throw ExceptionResultEnum.ERROR.exception("通用规则未设置");
|
|
|
- }
|
|
|
-
|
|
|
- Map<String, EnumResult> requiredMap = basicExamRule.getRequiredFieldList().stream().filter(m -> m.getEnable()).collect(Collectors.toMap(EnumResult::getName, e -> e));
|
|
|
- Map<String, EnumResult> extendMap = basicExamRule.getExtendFieldList().stream().filter(m -> m.getEnable()).collect(Collectors.toMap(EnumResult::getName, e -> e));
|
|
|
-
|
|
|
- // 通用规则表头
|
|
|
- List<String> actualTitleList = Stream.concat(requiredMap.keySet().stream(), extendMap.keySet().stream()).collect(Collectors.toList());
|
|
|
- if (!CollectionUtils.isEqualCollection(Arrays.asList(columnNames), actualTitleList)) {
|
|
|
- throw ExceptionResultEnum.ERROR.exception("表头有误,表头字段应为【" + String.join(",", actualTitleList) + "】");
|
|
|
- }
|
|
|
-
|
|
|
- basicExamStudentParseDto.setColumnNames(columnNames);
|
|
|
-
|
|
|
- dataMapList.forEach(m -> {
|
|
|
- BasicExamStudentImport basicExamStudentImport = new BasicExamStudentImport();
|
|
|
- Class<BasicExamStudentImport> aClass = (Class<BasicExamStudentImport>) basicExamStudentImport.getClass();
|
|
|
- for (Map.Entry<String, String> entry : m.entrySet()) {
|
|
|
+ List<CodeNameEnableDisabledValue> requiredFieldList = basicExamStudentImport.getRequiredFieldList();
|
|
|
// 必填字段
|
|
|
- if (requiredMap.containsKey(entry.getKey())) {
|
|
|
- EnumResult enumResult = requiredMap.get(entry.getKey());
|
|
|
- try {
|
|
|
- Field declaredField = aClass.getDeclaredField(enumResult.getCode());
|
|
|
- declaredField.setAccessible(true);
|
|
|
- declaredField.set(basicExamStudentImport, StringUtils.deleteWhitespace(entry.getValue()));
|
|
|
- } catch (NoSuchFieldException e) {
|
|
|
- throw ExceptionResultEnum.ERROR.exception("未获取到表头为[" + entry.getKey() + "]的属性值");
|
|
|
- } catch (IllegalAccessException e) {
|
|
|
- throw ExceptionResultEnum.ERROR.exception("表头为[" + entry.getKey() + "]的值赋值失败");
|
|
|
+ if (requiredMap.keySet().size() > requiredFieldList.size()) {
|
|
|
+ for (String s : requiredMap.keySet()) {
|
|
|
+ Optional<CodeNameEnableDisabledValue> optional = basicExamStudentImport.getRequiredFieldList().stream().filter(r -> s.equals(r.getName())).findFirst();
|
|
|
+ if (!optional.isPresent()) {
|
|
|
+ EnumResult enumResult = requiredMap.get(s);
|
|
|
+ basicExamStudentImport.getRequiredFieldList().add(new CodeNameEnableDisabledValue(enumResult.getCode(), enumResult.getName(), enumResult.getEnable(), enumResult.getDisabled(), null));
|
|
|
+ }
|
|
|
}
|
|
|
- basicExamStudentImport.getRequiredFieldList().add(new CodeNameEnableDisabledValue(enumResult.getCode(), enumResult.getName(), enumResult.getEnable(), enumResult.getDisabled(), StringUtils.isNotBlank(entry.getValue()) ? entry.getValue() : ""));
|
|
|
}
|
|
|
+ List<CodeNameEnableDisabledValue> extendFieldList = basicExamStudentImport.getExtendFieldList();
|
|
|
// 扩展字段
|
|
|
- if (extendMap.containsKey(entry.getKey())) {
|
|
|
- EnumResult enumResult = extendMap.get(entry.getKey());
|
|
|
- basicExamStudentImport.getExtendFieldList().add(new CodeNameEnableDisabledValue(enumResult.getCode(), enumResult.getName(), enumResult.getEnable(), enumResult.getDisabled(), StringUtils.isNotBlank(entry.getValue()) ? entry.getValue() : ""));
|
|
|
+ if (extendMap.keySet().size() > extendFieldList.size()) {
|
|
|
+ for (String s : extendMap.keySet()) {
|
|
|
+ Optional<CodeNameEnableDisabledValue> optional = basicExamStudentImport.getExtendFieldList().stream().filter(r -> s.equals(r.getName())).findFirst();
|
|
|
+ if (!optional.isPresent()) {
|
|
|
+ EnumResult enumResult = extendMap.get(s);
|
|
|
+ basicExamStudentImport.getExtendFieldList().add(new CodeNameEnableDisabledValue(enumResult.getCode(), enumResult.getName(), enumResult.getEnable(), enumResult.getDisabled(), null));
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
+ list.add(basicExamStudentImport);
|
|
|
}
|
|
|
- list.add(basicExamStudentImport);
|
|
|
});
|
|
|
}
|
|
|
basicExamStudentParseDto.setBasicExamStudentImportList(list);
|