|
@@ -555,13 +555,11 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
|
- public List<Long> disposeExamDetailByExaminationExcel(ExamPrintPlan examPrintPlan, List<ExaminationImportDto> dataList, Long userId, SerialNumberParams serialNumberParams, SysUser sysUser) {
|
|
|
+ public List<Long> disposeExamDataByExaminationExcel(ExamPrintPlan examPrintPlan, List<ExaminationImportDto> dataList, SerialNumberParams serialNumberParams, SysUser sysUser) {
|
|
|
List<Map<String, Object>> examDetailKeyList = dataList.stream().flatMap(e -> {
|
|
|
Long schoolIdId = e.getSchoolId();
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
map.put("schoolId", schoolIdId);
|
|
|
- map.put("printPlanId", e.getPrintPlanId());
|
|
|
- map.put("printPlanName", e.getPrintPlanName());
|
|
|
map.put("examPlace", e.getExamPlace());
|
|
|
map.put("examRoom", e.getExamRoom());
|
|
|
map.put("examStartTime", e.getExamStartTime());
|
|
@@ -577,186 +575,129 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
|
|
|
String examStartTime = String.valueOf(map.get("examStartTime"));
|
|
|
String examEndTime = String.valueOf(map.get("examEndTime"));
|
|
|
|
|
|
- long totalSubjects = dataList.stream().filter(e -> e.getExamPlace().equals(examPlace) &&
|
|
|
- e.getExamRoom().equals(examRoom) &&
|
|
|
- e.getExamStartTime().equals(examStartTime) &&
|
|
|
- e.getExamEndTime().equals(examEndTime)).count();
|
|
|
+ List<ExaminationImportDto> examDetailStudentList = dataList.stream().filter(e -> e.getExamPlace().equals(examPlace) &&
|
|
|
+ e.getExamRoom().equals(examRoom) && e.getExamStartTime().equals(examStartTime) && e.getExamEndTime().equals(examEndTime))
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
|
ExamDetail examDetail = new ExamDetail();
|
|
|
examDetail.setId(SystemConstant.getDbUuid());
|
|
|
examDetail.setPackageCode(convertUtil.getIncre(serialNumberParams.getPrefix(), serialNumberParams.getModel(), serialNumberParams.getDigit()));
|
|
|
examDetail.setSchoolId(schoolId);
|
|
|
examDetail.setOrgId(sysUser.getOrgId());
|
|
|
- examDetail.setPrintPlanId(Long.valueOf(String.valueOf(map.get("printPlanId"))));
|
|
|
- examDetail.setPrintPlanName(String.valueOf(map.get("printPlanName")));
|
|
|
+ examDetail.setPrintPlanId(examPrintPlan.getId());
|
|
|
+ examDetail.setPrintPlanName(examPrintPlan.getName());
|
|
|
examDetail.setExamId(examPrintPlan.getExamId());
|
|
|
examDetail.setExamPlace(examPlace);
|
|
|
examDetail.setExamRoom(examRoom);
|
|
|
examDetail.setStatus(ExamDetailStatusEnum.NEW);
|
|
|
- examDetail.setTotalSubjects(Math.toIntExact(totalSubjects));
|
|
|
+ examDetail.setTotalSubjects(examDetailStudentList.size());
|
|
|
examDetail.setExamStartTime(SystemConstant.convertIdToLong(examStartTime));
|
|
|
examDetail.setExamEndTime(SystemConstant.convertIdToLong(examEndTime));
|
|
|
examDetail.setExamDataSource(ExamDataSourceEnum.FILE_IMPORT);
|
|
|
examDetail.setNormal(true);
|
|
|
- examDetail.setCreateId(userId);
|
|
|
- examDetail.setUpdateId(userId);
|
|
|
+ examDetail.setCreateId(sysUser.getId());
|
|
|
examDetail.setBackupCount(examPrintPlan.getBackupCount());
|
|
|
- examDetailList.add(examDetail);
|
|
|
+ this.save(examDetail);
|
|
|
+
|
|
|
+ //组装exam_detail_course数据
|
|
|
+ disposeExamDetailCourseData(examPrintPlan.getExamId(), examDetail.getId(), examDetailStudentList, sysUser);
|
|
|
}
|
|
|
this.saveBatch(examDetailList);
|
|
|
return examDetailList.stream().map(ExamDetail::getId).distinct().collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
- @Override
|
|
|
- public void disposeExamDetailCourseByExaminationExcel(List<ExaminationImportDto> dataList, Long userId, SysUser sysUser) {
|
|
|
- List<Map<String, Object>> examDetailKeyList = dataList.stream().flatMap(e -> {
|
|
|
+ /**
|
|
|
+ * 生成考场科目数据
|
|
|
+ *
|
|
|
+ * @param examId 考试ID
|
|
|
+ * @param examDetailId 考场ID
|
|
|
+ * @param examDetailStudentList 考场下学生集合(excel中读取)
|
|
|
+ * @param sysUser 用户
|
|
|
+ */
|
|
|
+ private void disposeExamDetailCourseData(Long examId, Long examDetailId, List<ExaminationImportDto> examDetailStudentList, SysUser sysUser) {
|
|
|
+ List<Map<String, Object>> examDetailKeyList = examDetailStudentList.stream().flatMap(e -> {
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
- map.put("schoolId", e.getSchoolId());
|
|
|
- map.put("printPlanId", e.getPrintPlanId());
|
|
|
- map.put("examPlace", e.getExamPlace());
|
|
|
- map.put("examRoom", e.getExamRoom());
|
|
|
- map.put("examStartTime", e.getExamStartTime());
|
|
|
- map.put("examEndTime", e.getExamEndTime());
|
|
|
map.put("courseCode", e.getCourseCode());
|
|
|
map.put("courseName", e.getCourseName());
|
|
|
map.put("paperNumber", e.getPaperNumber());
|
|
|
return Stream.of(map);
|
|
|
}).distinct().collect(Collectors.toList());
|
|
|
|
|
|
- List<ExamDetailCourse> examDetailCourseList = new ArrayList<>();
|
|
|
+ Long schoolId = sysUser.getSchoolId();
|
|
|
+
|
|
|
for (Map<String, Object> map : examDetailKeyList) {
|
|
|
- Long schoolId = Long.valueOf(String.valueOf(map.get("schoolId")));
|
|
|
- Long printPlanId = Long.valueOf(String.valueOf(map.get("printPlanId")));
|
|
|
- String examPlace = String.valueOf(map.get("examPlace"));
|
|
|
- String examRoom = String.valueOf(map.get("examRoom"));
|
|
|
- Long examStartTime = SystemConstant.convertIdToLong(String.valueOf(map.get("examStartTime")));
|
|
|
- Long examEndTime = SystemConstant.convertIdToLong(String.valueOf(map.get("examEndTime")));
|
|
|
String courseCode = String.valueOf(map.get("courseCode"));
|
|
|
String courseName = String.valueOf(map.get("courseName"));
|
|
|
String paperNumber = String.valueOf(map.get("paperNumber"));
|
|
|
|
|
|
// 获取该科目下的考生人数
|
|
|
- List<ExaminationImportDto> sameCourseList = dataList.stream().filter(e -> e.getSchoolId().equals(schoolId) &&
|
|
|
- e.getPrintPlanId().equals(printPlanId) &&
|
|
|
- e.getExamPlace().equals(examPlace) &&
|
|
|
- e.getExamRoom().equals(examRoom) &&
|
|
|
- Long.valueOf(e.getExamStartTime()).equals(examStartTime) &&
|
|
|
- Long.valueOf(e.getExamEndTime()).equals(examEndTime) &&
|
|
|
- e.getCourseCode().equals(courseCode) &&
|
|
|
- e.getCourseName().equals(courseName) &&
|
|
|
- e.getPaperNumber().equals(paperNumber)).collect(Collectors.toList());
|
|
|
-
|
|
|
- int totalSubjects = sameCourseList.size();
|
|
|
-
|
|
|
- List<ExamDetail> examDetailList = this.list(new QueryWrapper<ExamDetail>().lambda()
|
|
|
- .eq(ExamDetail::getPrintPlanId, printPlanId)
|
|
|
- .eq(ExamDetail::getExamPlace, examPlace)
|
|
|
- .eq(ExamDetail::getExamRoom, examRoom)
|
|
|
- .eq(ExamDetail::getExamStartTime, examStartTime)
|
|
|
- .eq(ExamDetail::getExamEndTime, examEndTime));
|
|
|
- if (examDetailList.size() != 1) {
|
|
|
- throw ExceptionResultEnum.ERROR.exception("无法找到新增的考务场次数据");
|
|
|
- }
|
|
|
- Long examDetailId = examDetailList.get(0).getId();
|
|
|
+ List<ExaminationImportDto> examDetailCourseStudentList = examDetailStudentList.stream().filter(e -> e.getCourseCode().equals(courseCode) &&
|
|
|
+ e.getCourseName().equals(courseName) && e.getPaperNumber().equals(paperNumber)).collect(Collectors.toList());
|
|
|
+
|
|
|
ExamDetailCourse examDetailCourse = new ExamDetailCourse();
|
|
|
examDetailCourse.setId(SystemConstant.getDbUuid());
|
|
|
examDetailCourse.setSchoolId(schoolId);
|
|
|
- examDetailCourse.setOrgId(sysUser.getOrgId());
|
|
|
examDetailCourse.setExamDetailId(examDetailId);
|
|
|
examDetailCourse.setCourseCode(courseCode);
|
|
|
examDetailCourse.setCourseName(courseName);
|
|
|
examDetailCourse.setPaperNumber(paperNumber);
|
|
|
- examDetailCourse.setTotalSubjects(totalSubjects);
|
|
|
- examDetailCourse.setCreateId(userId);
|
|
|
- examDetailCourse.setUpdateId(userId);
|
|
|
- examDetailCourseList.add(examDetailCourse);
|
|
|
- }
|
|
|
- examDetailCourseService.saveBatch(examDetailCourseList);
|
|
|
- }
|
|
|
+ examDetailCourse.setTotalSubjects(examDetailCourseStudentList.size());
|
|
|
+ examDetailCourse.setCreateId(sysUser.getId());
|
|
|
+ examDetailCourseService.save(examDetailCourse);
|
|
|
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
- @Override
|
|
|
- public void disposeExamStudentByExaminationExcel(Long examId, List<ExaminationImportDto> dataList, Long userId, SysUser sysUser) throws IllegalAccessException {
|
|
|
- BasicExam basicExam = basicExamService.getById(examId);
|
|
|
-
|
|
|
- BasicPrintConfig basicPrintConfig = basicPrintConfigService.getByExamIdAndCourseCode(examId, null);
|
|
|
- if (basicPrintConfig == null) {
|
|
|
- throw ExceptionResultEnum.ERROR.exception("印品配置未设置");
|
|
|
+ //组装exam_student数据
|
|
|
+ disposeExamStudentData(examId, examDetailCourse.getId(), examDetailCourseStudentList, sysUser);
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
+ /**
|
|
|
+ * @param examId 考试ID
|
|
|
+ * @param examDetailCourseId 考场科目
|
|
|
+ * @param examDetailCourseStudentList 考场科目下学生集合(excel读取)
|
|
|
+ * @param sysUser 用户
|
|
|
+ */
|
|
|
+ private void disposeExamStudentData(Long examId, Long examDetailCourseId, List<ExaminationImportDto> examDetailCourseStudentList, SysUser sysUser) {
|
|
|
+ BasicPrintConfig basicPrintConfig = basicPrintConfigService.getByExamId(examId);
|
|
|
BasicCardRule basicCardRule = basicCardRuleService.getById(basicPrintConfig.getCardRuleId());
|
|
|
|
|
|
// 查询学期下所有考务数据的准考证号集合
|
|
|
- List<String> examStudentTicketNumberList = examStudentService.listTicketNumberBySemesterId(basicExam.getSemesterId(), examId);
|
|
|
+ List<String> examStudentTicketNumberList = examStudentService.listTicketNumberByExamId(examId);
|
|
|
|
|
|
List<ExamStudent> examStudentList = new ArrayList<>();
|
|
|
- List<BasicStudentExtrasParam> basicStudentExtrasParamList = new ArrayList<>();
|
|
|
- Map<String, Integer> ticketNumberCodeMap = new HashMap<>();
|
|
|
Set<String> ticketNumberRepeatList = new HashSet<>();
|
|
|
StringJoiner stringJoiner = new StringJoiner(",");
|
|
|
- for (ExaminationImportDto examinationImportDto : dataList) {
|
|
|
- Long schoolId = examinationImportDto.getSchoolId();
|
|
|
- Long printPlanId = examinationImportDto.getPrintPlanId();
|
|
|
- String examPlace = examinationImportDto.getExamPlace();
|
|
|
- String examRoom = examinationImportDto.getExamRoom();
|
|
|
- Long examStartTime = SystemConstant.convertIdToLong(examinationImportDto.getExamStartTime());
|
|
|
- Long examEndTime = SystemConstant.convertIdToLong(examinationImportDto.getExamEndTime());
|
|
|
- String courseCode = examinationImportDto.getCourseCode();
|
|
|
- String courseName = examinationImportDto.getCourseName();
|
|
|
+ Long schoolId = sysUser.getSchoolId();
|
|
|
+ for (ExaminationImportDto examinationImportDto : examDetailCourseStudentList) {
|
|
|
String paperNumber = examinationImportDto.getPaperNumber();
|
|
|
String studentName = examinationImportDto.getStudentName();
|
|
|
String studentCode = examinationImportDto.getStudentCode();
|
|
|
- String ticketNumber = null;
|
|
|
- if (Objects.isNull(examinationImportDto.getTicketNumber()) || Objects.equals(examinationImportDto.getTicketNumber().trim(), "")) {//如果为空
|
|
|
- ticketNumber = printCommonService.createTicketNumber(schoolId, basicCardRule == null ? null : basicCardRule.getExamNumberDigit());
|
|
|
+ String ticketNumber;
|
|
|
+ //如果为空,系统自动生成准考证号
|
|
|
+ if (StringUtils.isBlank(examinationImportDto.getTicketNumber()) || Objects.equals(examinationImportDto.getTicketNumber().trim(), "")) {
|
|
|
+ ticketNumber = printCommonService.createTicketNumber(examStudentTicketNumberList, schoolId, basicCardRule == null ? null : basicCardRule.getExamNumberDigit());
|
|
|
} else {
|
|
|
- ticketNumber = examinationImportDto.getTicketNumber();
|
|
|
+ ticketNumber = examinationImportDto.getTicketNumber().trim();
|
|
|
}
|
|
|
String siteNumber = examinationImportDto.getSiteNumber();
|
|
|
String collegeName = examinationImportDto.getCollegeName();
|
|
|
String majorName = examinationImportDto.getMajorName();
|
|
|
String clazzName = examinationImportDto.getClazzName();
|
|
|
|
|
|
- if (ticketNumberCodeMap.containsKey(ticketNumber)) {
|
|
|
- ticketNumberCodeMap.put(ticketNumber, ticketNumberCodeMap.get(ticketNumber) + 1);
|
|
|
- } else {
|
|
|
- ticketNumberCodeMap.put(ticketNumber, 1);
|
|
|
- }
|
|
|
-
|
|
|
if (!examStudentTicketNumberList.isEmpty() && examStudentTicketNumberList.contains(ticketNumber)) {
|
|
|
ticketNumberRepeatList.add(ticketNumber);
|
|
|
}
|
|
|
|
|
|
List<FieldsDto> fieldsDtoList = examinationImportDto.getSecondaryFieldList();
|
|
|
List<ExtendFieldsDto> extendFieldsDtoList = this.getExtendFieldsByFields(fieldsDtoList);
|
|
|
- List<ExamDetail> examDetailList = this.list(new QueryWrapper<ExamDetail>().lambda()
|
|
|
- .eq(ExamDetail::getPrintPlanId, printPlanId)
|
|
|
- .eq(ExamDetail::getExamPlace, examPlace)
|
|
|
- .eq(ExamDetail::getExamRoom, examRoom)
|
|
|
- .eq(ExamDetail::getExamStartTime, examStartTime)
|
|
|
- .eq(ExamDetail::getExamEndTime, examEndTime));
|
|
|
- if (examDetailList.size() != 1) {
|
|
|
- throw ExceptionResultEnum.ERROR.exception("无法找到新增的考务场次数据");
|
|
|
- }
|
|
|
- Long examDetailId = examDetailList.get(0).getId();
|
|
|
- List<ExamDetailCourse> examDetailCourseList = examDetailCourseService.list(new QueryWrapper<ExamDetailCourse>().lambda()
|
|
|
- .eq(ExamDetailCourse::getExamDetailId, examDetailId)
|
|
|
- .eq(ExamDetailCourse::getCourseCode, courseCode)
|
|
|
- .eq(ExamDetailCourse::getCourseName, courseName)
|
|
|
- .eq(ExamDetailCourse::getPaperNumber, paperNumber));
|
|
|
- if (examDetailCourseList.size() != 1) {
|
|
|
- throw ExceptionResultEnum.ERROR.exception("无法找到新增的考务科目数据");
|
|
|
- }
|
|
|
- Long examDetailCourseId = examDetailCourseList.get(0).getId();
|
|
|
|
|
|
ExamStudent examStudent = new ExamStudent();
|
|
|
examStudent.setId(SystemConstant.getDbUuid());
|
|
|
examStudent.setSchoolId(schoolId);
|
|
|
- examStudent.setOrgId(sysUser.getOrgId());
|
|
|
+ examStudent.setExamId(examId);
|
|
|
examStudent.setExamDetailCourseId(examDetailCourseId);
|
|
|
- examStudent.setStudentName(studentName);
|
|
|
+ examStudent.setPaperNumber(paperNumber);
|
|
|
examStudent.setStudentCode(studentCode);
|
|
|
+ examStudent.setStudentName(studentName);
|
|
|
examStudent.setTicketNumber(ticketNumber);
|
|
|
examStudent.setExtendFields(JSON.toJSONString(extendFieldsDtoList));
|
|
|
examStudent.setSiteNumber(siteNumber);
|
|
@@ -764,42 +705,18 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
|
|
|
examStudent.setMajorName(majorName);
|
|
|
examStudent.setClazzName(clazzName);
|
|
|
examStudent.setStudentClazzType(StudentClazzEnum.BASIC_CLAZZ);
|
|
|
- examStudent.setCreateId(userId);
|
|
|
- examStudent.setUpdateId(userId);
|
|
|
- examStudent.setExamId(examId);
|
|
|
- examStudent.setPaperNumber(paperNumber);
|
|
|
+ examStudent.setCreateId(sysUser.getId());
|
|
|
examStudentList.add(examStudent);
|
|
|
|
|
|
- BasicStudentExtrasParam basicStudentExtrasParam = new BasicStudentExtrasParam();
|
|
|
-
|
|
|
- basicStudentExtrasParam.setStudentName(studentName);
|
|
|
- basicStudentExtrasParam.setStudentCode(studentCode);
|
|
|
- basicStudentExtrasParam.setCollegeName(collegeName);
|
|
|
- basicStudentExtrasParam.setMajorName(majorName);
|
|
|
- basicStudentExtrasParam.setClazzName(clazzName);
|
|
|
- basicStudentExtrasParamList.add(basicStudentExtrasParam);
|
|
|
}
|
|
|
|
|
|
// 校验准考证号是否重复
|
|
|
- List<String> stringList = ticketNumberCodeMap.entrySet().stream().filter(m -> m.getValue().intValue() > 1).map(m -> String.format("考号[%s]有%d条重复数据", m.getKey(), m.getValue().intValue())).collect(Collectors.toList());
|
|
|
- if (!stringList.isEmpty()) {
|
|
|
- stringJoiner.add(String.join(",", stringList));
|
|
|
- }
|
|
|
if (!ticketNumberRepeatList.isEmpty()) {
|
|
|
stringJoiner.add("考号[" + String.join(",", ticketNumberRepeatList) + "]在当前考试下已存在");
|
|
|
}
|
|
|
if (stringJoiner.toString().length() > 1) {
|
|
|
throw ExceptionResultEnum.ERROR.exception(stringJoiner.toString());
|
|
|
}
|
|
|
-
|
|
|
- // 更新基础学生表和附加数据
|
|
|
-// basicStudentService.saveBasicStudentWithExtrasList(basicStudentExtrasParamList, sysUser, false);
|
|
|
-// for (ExamStudent examStudent : examStudentList) {
|
|
|
-// examStudent.setClazzId(String.valueOf(basicClazzService.getOne(new QueryWrapper<BasicClazz>()
|
|
|
-// .lambda()
|
|
|
-// .eq(BasicClazz::getClazzName, examStudent.getClazzName())
|
|
|
-// .eq(BasicClazz::getSchoolId, examStudent.getSchoolId())).getId()));
|
|
|
-// }
|
|
|
try {
|
|
|
examStudentService.saveBatch(examStudentList);
|
|
|
} catch (Exception e) {
|
|
@@ -1127,7 +1044,7 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
|
|
|
@Override
|
|
|
public void deleteByExamIdAndPaperNumber(Long schoolId, Long examId, String paperNumber) {
|
|
|
List<ExamDetailCourse> examDetailCourseList = examDetailCourseService.listExamDetailByExamIdAndPaperNumber(schoolId, examId, paperNumber);
|
|
|
- if(!CollectionUtils.isEmpty(examDetailCourseList)){
|
|
|
+ if (!CollectionUtils.isEmpty(examDetailCourseList)) {
|
|
|
for (ExamDetailCourse examDetailCourse : examDetailCourseList) {
|
|
|
// 删除考场
|
|
|
this.removeById(examDetailCourse.getExamDetailId());
|