|
@@ -1,14 +1,20 @@
|
|
|
package com.ym.mec.biz.service.impl;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.google.common.collect.Lists;
|
|
|
+import com.ym.mec.auth.api.client.SysUserFeignService;
|
|
|
import com.ym.mec.auth.api.entity.SysUser;
|
|
|
import com.ym.mec.biz.dal.dao.*;
|
|
|
import com.ym.mec.biz.dal.dto.*;
|
|
|
import com.ym.mec.biz.dal.entity.*;
|
|
|
import com.ym.mec.biz.dal.enums.*;
|
|
|
+import com.ym.mec.biz.dal.mapper.SchoolActivityMapper;
|
|
|
import com.ym.mec.biz.dal.mapper.StudentPlusMapper;
|
|
|
import com.ym.mec.biz.dal.page.*;
|
|
|
+import com.ym.mec.biz.dal.wrapper.SchoolActivityWrapper;
|
|
|
import com.ym.mec.biz.dal.wrapper.StudentWrapper;
|
|
|
import com.ym.mec.biz.service.*;
|
|
|
import com.ym.mec.common.constant.CommonConstants;
|
|
@@ -88,6 +94,21 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
|
|
|
@Autowired
|
|
|
private StudentPlusMapper studentPlusMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private StudentAttendanceDao studentAttendanceDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private StudentRegistrationService studentRegistrationService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SysUserFeignService sysUserFeignService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SchoolActivityMapper schoolActivityMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private MusicGroupQuitDao musicGroupQuitDao;
|
|
|
+
|
|
|
@Override
|
|
|
public BaseDAO<Integer, Student> getDAO() {
|
|
|
return studentDao;
|
|
@@ -100,20 +121,20 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public boolean register(StudentPreRegistration studentPreRegistration) {
|
|
|
+ public boolean register(StudentPreRegistration studentPreRegistration) {
|
|
|
TenantContextHolder.setTenantId(studentPreRegistration.getTenantId());
|
|
|
Date date = new Date();
|
|
|
-
|
|
|
+
|
|
|
SysUser user = teacherDao.getUserWithPhone(studentPreRegistration.getPhone());
|
|
|
Integer userId = null;
|
|
|
|
|
|
if(user != null && user.getId() != null){
|
|
|
- if (user.getUserType().contains("STUDENT")) {
|
|
|
- throw new BizException("您已注册,请直接下载APP!");
|
|
|
- } else {
|
|
|
+ if (user.getUserType().contains("STUDENT")) {
|
|
|
+ throw new BizException("您已注册,请直接下载APP!");
|
|
|
+ } else {
|
|
|
user.setUserType(user.getUserType() + ",STUDENT");
|
|
|
}
|
|
|
- userId = user.getId();
|
|
|
+ userId = user.getId();
|
|
|
if (studentPreRegistration.getOrganId() != null) {
|
|
|
user.setOrganId(studentPreRegistration.getOrganId());
|
|
|
}
|
|
@@ -127,7 +148,7 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
|
|
|
user.setUpdateTime(date);
|
|
|
teacherDao.updateUser(user);
|
|
|
}else{
|
|
|
- user = new SysUser();
|
|
|
+ user = new SysUser();
|
|
|
user.setPhone(studentPreRegistration.getPhone());
|
|
|
user.setOrganId(studentPreRegistration.getOrganId());
|
|
|
user.setRealName(studentPreRegistration.getParentName());
|
|
@@ -155,31 +176,31 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
|
|
|
TenantContextHolder.clearTenantId();
|
|
|
|
|
|
if(studentPreRegistration.getOrganId() == 59){
|
|
|
-
|
|
|
- if(student.getMembershipEndTime() == null){
|
|
|
- student.setMembershipEndTime(date);
|
|
|
- }
|
|
|
- if(student.getMembershipStartTime() == null){
|
|
|
- student.setMembershipStartTime(date);
|
|
|
- }
|
|
|
- if(student.getMemberRankSettingId() == null){
|
|
|
- student.setMemberRankSettingId(1);
|
|
|
- }
|
|
|
-
|
|
|
- if(student.getMembershipEndTime().before(date)){
|
|
|
- student.setMembershipEndTime(DateUtil.addMonths(date, 1));
|
|
|
- student.setMembershipStartTime(date);
|
|
|
- }else{
|
|
|
- student.setMembershipEndTime(DateUtil.addMonths(student.getMembershipEndTime(), 1));
|
|
|
- }
|
|
|
- student.setUpdateTime(date);
|
|
|
- studentDao.update(student);
|
|
|
+
|
|
|
+ if(student.getMembershipEndTime() == null){
|
|
|
+ student.setMembershipEndTime(date);
|
|
|
+ }
|
|
|
+ if(student.getMembershipStartTime() == null){
|
|
|
+ student.setMembershipStartTime(date);
|
|
|
+ }
|
|
|
+ if(student.getMemberRankSettingId() == null){
|
|
|
+ student.setMemberRankSettingId(1);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(student.getMembershipEndTime().before(date)){
|
|
|
+ student.setMembershipEndTime(DateUtil.addMonths(date, 1));
|
|
|
+ student.setMembershipStartTime(date);
|
|
|
+ }else{
|
|
|
+ student.setMembershipEndTime(DateUtil.addMonths(student.getMembershipEndTime(), 1));
|
|
|
+ }
|
|
|
+ student.setUpdateTime(date);
|
|
|
+ studentDao.update(student);
|
|
|
}
|
|
|
|
|
|
return true;
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
+ @Override
|
|
|
public PageInfo findStudentVipGroupList(StudentQueryInfo queryInfo) {
|
|
|
PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
|
|
|
Map<String, Object> params = new HashMap<String, Object>();
|
|
@@ -401,8 +422,8 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public void updateMemberRank(Integer userId, PeriodEnum periodEnum, int times, Integer memberRankSettingId) {
|
|
|
- Student student = this.get(userId);
|
|
|
+ public void updateMemberRank(Integer userId, PeriodEnum periodEnum, int times, Integer memberRankSettingId) {
|
|
|
+ Student student = this.get(userId);
|
|
|
if (student == null) {
|
|
|
throw new BizException("学员信息不存在");
|
|
|
}
|
|
@@ -413,16 +434,16 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
|
|
|
student.setMembershipStartTime(nowDate);
|
|
|
}
|
|
|
if(student.getMembershipEndTime() != null && student.getMembershipEndTime().after(nowDate)){
|
|
|
- nowDate = student.getMembershipEndTime();
|
|
|
+ nowDate = student.getMembershipEndTime();
|
|
|
}
|
|
|
Date membershipEndTime = getMembershipEndTime(periodEnum, nowDate, times);
|
|
|
|
|
|
student.setMembershipEndTime(DateUtil.addDays(membershipEndTime, 1));
|
|
|
student.setMemberRankSettingId(memberRankSettingId);
|
|
|
this.update(student);
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
+ @Override
|
|
|
public void updateStudentServiceTag(Integer studentId,List<Integer> studentIds,Integer serviceTag) {
|
|
|
studentDao.updateStudentServiceTag(studentId, studentIds, serviceTag);
|
|
|
}
|
|
@@ -432,10 +453,10 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
|
|
|
return studentDao.getStudentNames(studentIdList);
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public Student getLocked(Integer userId) {
|
|
|
- return studentDao.getLocked(userId);
|
|
|
- }
|
|
|
+ @Override
|
|
|
+ public Student getLocked(Integer userId) {
|
|
|
+ return studentDao.getLocked(userId);
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
|
public void cleanMember(Integer userId) {
|
|
@@ -972,7 +993,7 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
+ @Override
|
|
|
public void cleanStudentCloudStudySequenceDays() {
|
|
|
studentDao.cleanStudentCloudStudySequenceDays();
|
|
|
}
|
|
@@ -1302,11 +1323,21 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
|
|
|
@Override
|
|
|
public IPage<StudentWrapper.StudentList> userPage(IPage<StudentWrapper.StudentList> page, StudentWrapper.StudentQuery queryInfo) {
|
|
|
|
|
|
+ queryInfo.setStatusList(Arrays.asList(StudentMusicGroupStatusEnum.NORMAL, StudentMusicGroupStatusEnum.QUIT, StudentMusicGroupStatusEnum.QUIT_SCHOOL));
|
|
|
List<StudentWrapper.StudentList> studentLists = studentPlusMapper.userPage(page, queryInfo);
|
|
|
|
|
|
if (CollectionUtils.isEmpty(studentLists)) {
|
|
|
return page;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ List<Long> musicGroupIds = studentLists.stream()
|
|
|
+ .map(o -> o.getMusicGroupIds())
|
|
|
+ .flatMap(o -> Arrays.stream(o.split(",")))
|
|
|
+ .filter(Objects::nonNull)
|
|
|
+ .map(Long::parseLong)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
|
|
|
List<Integer> studentIds = studentLists.stream().map(StudentWrapper.StudentList::getStudentId).collect(Collectors.toList());
|
|
|
|
|
@@ -1320,28 +1351,229 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
|
|
|
}
|
|
|
});
|
|
|
|
|
|
-
|
|
|
+ String startTerm = DateUtil.getStartTerm(new Date());
|
|
|
+ String endTerm = DateUtil.getEndTerm(new Date());
|
|
|
|
|
|
+ StudentWrapper.StudentAttendanceQuery studentAttendanceQuery = new StudentWrapper.StudentAttendanceQuery();
|
|
|
+ studentAttendanceQuery.setStudentIds(studentIds);
|
|
|
+ studentAttendanceQuery.setStartTime(DateUtil.toDate(startTerm));
|
|
|
+ studentAttendanceQuery.setEndTime(DateUtil.toDateTime(endTerm + " 23:59:59"));
|
|
|
+ studentAttendanceQuery.setMusicGroupId(queryInfo.getMusicGroupId());
|
|
|
+ studentAttendanceQuery.setMusicGroupIds(musicGroupIds);
|
|
|
+ studentAttendanceData(studentLists, studentAttendanceQuery);
|
|
|
|
|
|
+
|
|
|
+ studentHomeworkData(studentLists, studentAttendanceQuery);
|
|
|
|
|
|
|
|
|
+ return page.setRecords(studentLists);
|
|
|
+ }
|
|
|
|
|
|
-
|
|
|
+
|
|
|
+ * 学生端-学生详情
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public StudentWrapper.StudentDetail userDetail(StudentWrapper.StudentQuery queryInfo) {
|
|
|
+ IPage<StudentWrapper.StudentList> studentListIPage = userPage(new Page<>(1, 1), queryInfo);
|
|
|
+ if (CollectionUtils.isEmpty(studentListIPage.getRecords())) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ StudentWrapper.StudentList studentList = studentListIPage.getRecords().get(0);
|
|
|
+ StudentWrapper.StudentDetail studentDetail = JSON.parseObject(JSON.toJSONString(studentList), StudentWrapper.StudentDetail.class);
|
|
|
|
|
|
+
|
|
|
+ StudentRegistration studentRegister = studentRegistrationService.getStudentRegister(queryInfo.getMusicGroupId().toString(), queryInfo.getStudentId());
|
|
|
+ if (studentRegister == null) {
|
|
|
+ return studentDetail;
|
|
|
+ }
|
|
|
|
|
|
- return page.setRecords(studentLists);
|
|
|
+
|
|
|
+ SysUser sysUser = sysUserFeignService.queryUserById(studentDetail.getStudentId());
|
|
|
+ if (sysUser != null) {
|
|
|
+ studentDetail.setGender(sysUser.getGender());
|
|
|
+ studentDetail.setPhone(sysUser.getPhone());
|
|
|
+ Student student = studentDao.get(sysUser.getId());
|
|
|
+ studentDetail.setCurrentGrade(student.getCurrentGrade());
|
|
|
+ studentDetail.setCurrentGradeNum(student.getCurrentGradeNum());
|
|
|
+ studentDetail.setCurrentClass(student.getCurrentClass());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ SchoolActivityWrapper.SchoolActivityQuery build = SchoolActivityWrapper.SchoolActivityQuery.builder()
|
|
|
+ .cooperationOrganId(queryInfo.getCooperationOrganId())
|
|
|
+ .studentId(queryInfo.getStudentId())
|
|
|
+ .musicGroupId(queryInfo.getMusicGroupId())
|
|
|
+ .startTime(DateUtil.toDate(DateUtil.getStartTerm(new Date())))
|
|
|
+ .endTime(DateUtil.toDateTime(DateUtil.getEndTerm(new Date()) + " 23:59:59"))
|
|
|
+ .build();
|
|
|
+ List<SchoolActivityWrapper.SchoolActivity> schoolActivities = schoolActivityMapper.selectPage(new Page<>(1, -1), build);
|
|
|
+ if (!CollectionUtils.isEmpty(schoolActivities)) {
|
|
|
+ studentDetail.setArtPracticeCount(schoolActivities.size());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ MusicGroupQuit musicGroupQuit = musicGroupQuitDao
|
|
|
+ .queryByUserIdAndMusicGroupId(queryInfo.getStudentId(), queryInfo.getMusicGroupId().toString());
|
|
|
+
|
|
|
+ if (StudentMusicGroupStatusEnum.APPLY.equals(studentRegister.getMusicGroupStatus())) {
|
|
|
+ studentDetail.setInGroupStatus(EInGroupStatus.APPLY);
|
|
|
+ } else if (StudentMusicGroupStatusEnum.QUIT.equals(studentRegister.getMusicGroupStatus())) {
|
|
|
+ studentDetail.setInGroupStatus(EInGroupStatus.OUT);
|
|
|
+ } else if (StudentMusicGroupStatusEnum.NORMAL.equals(studentRegister.getMusicGroupStatus())) {
|
|
|
+ studentDetail.setInGroupStatus(EInGroupStatus.IN);
|
|
|
+ if (musicGroupQuit != null && musicGroupQuit.getStatus().equals(ApprovalStatus.PROCESSING)) {
|
|
|
+ studentDetail.setInGroupStatus(EInGroupStatus.APPLY_OUT);
|
|
|
+ }
|
|
|
+ } else if (StudentMusicGroupStatusEnum.QUIT_SCHOOL.equals(studentRegister.getMusicGroupStatus())) {
|
|
|
+ studentDetail.setInGroupStatus(EInGroupStatus.QUIT_SCHOOL);
|
|
|
+ }
|
|
|
+
|
|
|
+ return studentDetail;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * 查询学生的乐团
|
|
|
+ *
|
|
|
+ * @param studentId 学生id
|
|
|
+ * @param coopId 合作商id
|
|
|
+ * @param statusList 乐团状态
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<MusicGroup> userMusicGroup(Integer studentId, Integer coopId, List<StudentMusicGroupStatusEnum> statusList) {
|
|
|
+ return musicGroupDao.userMusicGroup(studentId, coopId, statusList);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * 跟新乐团班级/年级信息
|
|
|
+ *
|
|
|
+ * @param updateStudent 更新信息
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean updateGrade(StudentWrapper.UpdateStudent updateStudent) {
|
|
|
+
|
|
|
+ Student student = studentDao.get(updateStudent.getStudentId());
|
|
|
+ if (student == null) {
|
|
|
+ throw new BizException("学生不存在");
|
|
|
+ }
|
|
|
+ student.setCurrentClass(updateStudent.getCurrentClass());
|
|
|
+ student.setCurrentGrade(updateStudent.getCurrentGrade());
|
|
|
+ student.setCurrentGradeNum(updateStudent.getCurrentGradeNum());
|
|
|
+ studentDao.update(student);
|
|
|
+ return true;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * 学校端-学生统计
|
|
|
+ *
|
|
|
+ * @param queryInfo
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public StudentWrapper.StudentStat userCount(StudentWrapper.StudentQuery queryInfo) {
|
|
|
+ queryInfo.setStatusList(Lists.newArrayList(StudentMusicGroupStatusEnum.NORMAL));
|
|
|
+ List<StudentWrapper.StudentList> studentLists = studentPlusMapper.userPage(new Page<>(1,-1), queryInfo);
|
|
|
+ StudentWrapper.StudentStat studentStat = new StudentWrapper.StudentStat();
|
|
|
+ studentStat.setStudentCount(studentLists.size());
|
|
|
+ queryInfo.setStatusList(Lists.newArrayList(StudentMusicGroupStatusEnum.QUIT));
|
|
|
+ studentLists = studentPlusMapper.userPage(new Page<>(1,-1), queryInfo);
|
|
|
+ studentStat.setQuitCount(studentLists.size());
|
|
|
+ return studentStat;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void studentHomeworkData(List<StudentWrapper.StudentList> studentLists, StudentWrapper.StudentAttendanceQuery studentAttendanceQuery) {
|
|
|
+ List<StudentWrapper.StudentHomework> studentHomework = studentDao.getStudentHomework(studentAttendanceQuery);
|
|
|
+ if (!CollectionUtils.isEmpty(studentHomework)) {
|
|
|
+ Map<Integer, List<StudentWrapper.StudentHomework>> studentHomeworkMap = studentHomework.stream().collect(Collectors.groupingBy(StudentWrapper.StudentHomework::getStudentId));
|
|
|
+ studentLists.forEach(studentList -> {
|
|
|
+ List<StudentWrapper.StudentHomework> studentHomeworks = studentHomeworkMap.get(studentList.getStudentId());
|
|
|
+ if (!CollectionUtils.isEmpty(studentHomeworks)) {
|
|
|
+ studentList.setShouldSubmitCount(studentHomeworks.size());
|
|
|
+
|
|
|
+ Integer qualified = 0;
|
|
|
+
|
|
|
+ Integer unqualified = 0;
|
|
|
+
|
|
|
+ Integer unsubmit = 0;
|
|
|
+ for (StudentWrapper.StudentHomework studentHomework1 : studentHomeworks) {
|
|
|
+ switch (studentHomework1.getStandardFlag()) {
|
|
|
+ case STANDARD:
|
|
|
+ qualified++;
|
|
|
+ break;
|
|
|
+ case NOT_STANDARD:
|
|
|
+ unqualified++;
|
|
|
+ break;
|
|
|
+ case NOT_START:
|
|
|
+ unsubmit++;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ studentList.setQualifiedCount(qualified);
|
|
|
+ studentList.setUnqualifiedCount(unqualified);
|
|
|
+ studentList.setUnsubmitCount(unsubmit);
|
|
|
+ studentList.setActualSubmitCount(qualified + unqualified);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void studentAttendanceData(List<StudentWrapper.StudentList> studentLists, StudentWrapper.StudentAttendanceQuery studentAttendanceQuery) {
|
|
|
+ List<StudentAttendance> studentAttendance = studentAttendanceDao.getStudentAttendance(studentAttendanceQuery);
|
|
|
+
|
|
|
+ if (!CollectionUtils.isEmpty(studentAttendance)) {
|
|
|
+ Map<Integer, List<StudentAttendance>> studentAttendanceMap = studentAttendance.stream().collect(Collectors.groupingBy(StudentAttendance::getUserId));
|
|
|
+
|
|
|
+ studentLists.forEach(studentList -> {
|
|
|
+ List<StudentAttendance> studentAttendances = studentAttendanceMap.get(studentList.getStudentId());
|
|
|
+ if (!CollectionUtils.isEmpty(studentAttendances)) {
|
|
|
+ studentList.setShouldAttendanceCount(studentAttendances.size());
|
|
|
+
|
|
|
+ Integer narmal = 0;
|
|
|
+
|
|
|
+ Integer late = 0;
|
|
|
+
|
|
|
+ Integer truant = 0;
|
|
|
+
|
|
|
+ Integer leave = 0;
|
|
|
+ for (StudentAttendance studentAttendance1 : studentAttendances) {
|
|
|
+ switch (studentAttendance1.getStatus()) {
|
|
|
+ case NORMAL:
|
|
|
+ narmal++;
|
|
|
+ break;
|
|
|
+ case LATE:
|
|
|
+ late++;
|
|
|
+ break;
|
|
|
+ case TRUANT:
|
|
|
+ truant++;
|
|
|
+ break;
|
|
|
+ case LEAVE:
|
|
|
+ leave++;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ studentList.setNormalAttendanceCount(narmal);
|
|
|
+ studentList.setLateCount(late);
|
|
|
+ studentList.setTruancyCount(truant);
|
|
|
+ studentList.setLeaveCount(leave);
|
|
|
+ studentList.setActualAttendanceCount(narmal + late);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
private Map<Integer,Student> getMapByIds(List<Integer> studentIds) {
|
|
|
if (CollectionUtils.isEmpty(studentIds)) {
|
|
|
return Collections.emptyMap();
|
|
|
}
|
|
|
- List<Student> students = studentPlusMapper.findStudentByIds(studentIds);
|
|
|
+ List<Student> students = studentDao.findByStudentIds(studentIds);
|
|
|
if (CollectionUtils.isEmpty(students)) {
|
|
|
return Collections.emptyMap();
|
|
|
}
|
|
|
- Map<Integer, Student> studentMap = students.stream().collect(Collectors.toMap(Student::getUserId, Function.identity()));
|
|
|
- return studentMap;
|
|
|
+ return students.stream().collect(Collectors.toMap(Student::getUserId, Function.identity()));
|
|
|
}
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|