|
@@ -3,12 +3,14 @@ package com.xjrsoft.module.xycxedu.service.impl;
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.alibaba.excel.EasyExcel;
|
|
|
+import com.alibaba.excel.exception.ExcelDataConvertException;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
|
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
import com.xjrsoft.common.enums.ArchivesStatusEnum;
|
|
|
import com.xjrsoft.common.enums.DeleteMark;
|
|
|
+import com.xjrsoft.common.exception.MyException;
|
|
|
import com.xjrsoft.common.utils.VoToColumnUtil;
|
|
|
import com.xjrsoft.module.base.entity.BaseCourseSubject;
|
|
|
import com.xjrsoft.module.base.service.IBaseCourseSubjectService;
|
|
@@ -73,53 +75,64 @@ public class ExamSubjectScoreEnterServiceImpl extends MPJBaseServiceImpl<ExamSub
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Boolean importData(Long id, MultipartFile file) throws IOException {
|
|
|
- ExamSubjectScoreEnter enter = this.getById(id);
|
|
|
- List<ExamSubjectScoreEnterImportDto> dataList = EasyExcel.read(file.getInputStream()).headRowNumber(3).head(ExamSubjectScoreEnterImportDto.class).sheet().doReadSync();
|
|
|
- List<BaseCourseSubject> classList = courseSubjectService.list(
|
|
|
- new QueryWrapper<BaseCourseSubject>().lambda()
|
|
|
- .eq(BaseCourseSubject::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
- );
|
|
|
- Map<Long, String> courseSubjectMaps = classList.stream().collect(Collectors.toMap(BaseCourseSubject::getId, BaseCourseSubject::getName));
|
|
|
+ try {
|
|
|
+ ExamSubjectScoreEnter enter = this.getById(id);
|
|
|
+ List<ExamSubjectScoreEnterImportDto> dataList = EasyExcel.read(file.getInputStream()).headRowNumber(3).head(ExamSubjectScoreEnterImportDto.class).sheet().doReadSync();
|
|
|
+ List<BaseCourseSubject> classList = courseSubjectService.list(
|
|
|
+ new QueryWrapper<BaseCourseSubject>().lambda()
|
|
|
+ .eq(BaseCourseSubject::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+ );
|
|
|
+ Map<Long, String> courseSubjectMaps = classList.stream().collect(Collectors.toMap(BaseCourseSubject::getId, BaseCourseSubject::getName));
|
|
|
|
|
|
- List<String> credentialNumbers = dataList.stream().filter(x -> StrUtil.isNotEmpty(x.getCredentialNumber())).map(ExamSubjectScoreEnterImportDto::getCredentialNumber).collect(Collectors.toList());
|
|
|
- if(credentialNumbers.isEmpty()){
|
|
|
- return true;
|
|
|
- }
|
|
|
- List<User> userList = userService.list(
|
|
|
- new QueryWrapper<User>().lambda()
|
|
|
- .eq(User::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
- .in(User::getCredentialNumber, credentialNumbers)
|
|
|
- );
|
|
|
- Map<String, Long> userMaps = userList.stream().collect(Collectors.toMap(User::getCredentialNumber, User::getId));
|
|
|
+ List<String> credentialNumbers = dataList.stream().filter(x -> StrUtil.isNotEmpty(x.getCredentialNumber())).map(ExamSubjectScoreEnterImportDto::getCredentialNumber).collect(Collectors.toList());
|
|
|
+ if(credentialNumbers.isEmpty()){
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ List<User> userList = userService.list(
|
|
|
+ new MPJLambdaWrapper<User>()
|
|
|
+ .select(User::getId)
|
|
|
+ .select(User.class, x -> VoToColumnUtil.fieldsToColumns(User.class).contains(x.getProperty()))
|
|
|
+ .innerJoin(ExamSubjectScore.class, ExamSubjectScore::getUserId, User::getId)
|
|
|
+ .eq(User::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+
|
|
|
+ .in(User::getCredentialNumber, credentialNumbers)
|
|
|
+ );
|
|
|
+ Map<String, Long> userMaps = userList.stream().collect(Collectors.toMap(User::getCredentialNumber, User::getId));
|
|
|
|
|
|
- List<ExamSubjectScore> scoreList = scoreService.list(
|
|
|
- new QueryWrapper<ExamSubjectScore>().lambda()
|
|
|
- .eq(ExamSubjectScore::getExamSubjectScoreEnterId, enter.getId())
|
|
|
- .eq(ExamSubjectScore::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
- );
|
|
|
+ List<ExamSubjectScore> scoreList = scoreService.list(
|
|
|
+ new QueryWrapper<ExamSubjectScore>().lambda()
|
|
|
+ .eq(ExamSubjectScore::getExamSubjectScoreEnterId, enter.getId())
|
|
|
+ .eq(ExamSubjectScore::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+ );
|
|
|
|
|
|
- Map<Long, ExamSubjectScore> listMap = scoreList.stream().collect(Collectors.toMap(ExamSubjectScore::getUserId, x -> x));
|
|
|
-
|
|
|
- List<ExamSubjectScore> updateList = new ArrayList<>();
|
|
|
- for (ExamSubjectScoreEnterImportDto importVo : dataList) {
|
|
|
- Long userId = userMaps.get(importVo.getCredentialNumber());
|
|
|
- ExamSubjectScore examSubjectScores = listMap.get(userId);
|
|
|
- examSubjectScores.setCourseSubjectId(enter.getCourseSubjectId());
|
|
|
- examSubjectScores.setScore(importVo.getScore()==null?null:Float.parseFloat(importVo.getScore()));
|
|
|
- examSubjectScores.setSemesterId(enter.getSemesterId());
|
|
|
- examSubjectScores.setExamSubjectScoreEnterId(enter.getId());
|
|
|
- examSubjectScores.setSemesterId(enter.getSemesterId());
|
|
|
- examSubjectScores.setClassRanking(importVo.getClassRanking());
|
|
|
- examSubjectScores.setGradeRanking(importVo.getGradeRanking());
|
|
|
- examSubjectScores.setCoursename(courseSubjectMaps.get(enter.getCourseSubjectId()));
|
|
|
- examSubjectScores.setMilexamid(enter.getExamPlanId());
|
|
|
- updateList.add(examSubjectScores);
|
|
|
- }
|
|
|
+ Map<Long, ExamSubjectScore> listMap = scoreList.stream().collect(Collectors.toMap(ExamSubjectScore::getUserId, x -> x));
|
|
|
+
|
|
|
+ List<ExamSubjectScore> updateList = new ArrayList<>();
|
|
|
+ for (ExamSubjectScoreEnterImportDto importVo : dataList) {
|
|
|
+ Long userId = userMaps.get(importVo.getCredentialNumber());
|
|
|
+ ExamSubjectScore examSubjectScores = listMap.get(userId);
|
|
|
+ examSubjectScores.setCourseSubjectId(enter.getCourseSubjectId());
|
|
|
+ examSubjectScores.setScore(importVo.getScore()==null?null:Float.parseFloat(importVo.getScore()));
|
|
|
+ examSubjectScores.setSemesterId(enter.getSemesterId());
|
|
|
+ examSubjectScores.setExamSubjectScoreEnterId(enter.getId());
|
|
|
+ examSubjectScores.setSemesterId(enter.getSemesterId());
|
|
|
+ examSubjectScores.setClassRanking(importVo.getClassRanking());
|
|
|
+ examSubjectScores.setGradeRanking(importVo.getGradeRanking());
|
|
|
+ examSubjectScores.setCoursename(courseSubjectMaps.get(enter.getCourseSubjectId()));
|
|
|
+ examSubjectScores.setMilexamid(enter.getExamPlanId());
|
|
|
+ updateList.add(examSubjectScores);
|
|
|
+ }
|
|
|
|
|
|
- if(!updateList.isEmpty()){
|
|
|
- scoreService.updateBatchById(updateList);
|
|
|
+ if(!updateList.isEmpty()){
|
|
|
+ scoreService.updateBatchById(updateList);
|
|
|
+ }
|
|
|
+ }catch (Exception e){
|
|
|
+ if(e.getClass().equals(ExcelDataConvertException.class)){
|
|
|
+ throw new MyException("班级排名和年级排名只能填写数字,请检查");
|
|
|
+ }else{
|
|
|
+ throw new MyException("导入出错,请联系管理员");
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
return true;
|
|
|
}
|
|
|
|