|
@@ -5,24 +5,23 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.google.common.collect.Lists;
|
|
|
+import com.ym.mec.biz.dal.enums.JobTypeEnum;
|
|
|
import com.ym.mec.education.base.PageResponse;
|
|
|
-import com.ym.mec.education.entity.ClassGroup;
|
|
|
-import com.ym.mec.education.entity.ClassGroupStudentMapper;
|
|
|
-import com.ym.mec.education.entity.MusicGroupStudentFee;
|
|
|
-import com.ym.mec.education.entity.SysUser;
|
|
|
+import com.ym.mec.education.entity.*;
|
|
|
+import com.ym.mec.education.enums.TeachTypeEnum;
|
|
|
import com.ym.mec.education.mapper.ClassGroupStudentMapperMapper;
|
|
|
import com.ym.mec.education.req.ClassGroupReq;
|
|
|
+import com.ym.mec.education.req.TeacherReq;
|
|
|
import com.ym.mec.education.resp.ClassStudentResp;
|
|
|
import com.ym.mec.education.resp.StudentListResp;
|
|
|
-import com.ym.mec.education.service.IClassGroupService;
|
|
|
-import com.ym.mec.education.service.IClassGroupStudentMapperService;
|
|
|
-import com.ym.mec.education.service.IMusicGroupStudentFeeService;
|
|
|
-import com.ym.mec.education.service.ISysUserService;
|
|
|
+import com.ym.mec.education.service.*;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Objects;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
+
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -41,6 +40,16 @@ public class ClassGroupStudentMapperServiceImpl extends ServiceImpl<ClassGroupSt
|
|
|
private IClassGroupService classGroupService;
|
|
|
@Autowired
|
|
|
private IMusicGroupStudentFeeService musicGroupStudentFeeService;
|
|
|
+ @Autowired
|
|
|
+ private ITeacherService teacherService;
|
|
|
+ @Autowired
|
|
|
+ private IMusicGroupService musicGroupService;
|
|
|
+ @Autowired
|
|
|
+ private IClassGroupStudentMapperService classGroupStudentMapperService;
|
|
|
+ @Autowired
|
|
|
+ private ISubjectService subjectService;
|
|
|
+ @Autowired
|
|
|
+ private IClassGroupTeacherMapperService classGroupTeacherMapperService;
|
|
|
|
|
|
|
|
|
@Override
|
|
@@ -94,4 +103,107 @@ public class ClassGroupStudentMapperServiceImpl extends ServiceImpl<ClassGroupSt
|
|
|
Page<ClassGroupStudentMapper> classGroupStudentMapperPage = new Page(classGroupReq.getPageNo(), classGroupReq.getPageSize());
|
|
|
return baseMapper.selectPageByCondition(classGroupStudentMapperPage, classGroupReq);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public PageResponse getPageByTeacher(TeacherReq teacherReq) {
|
|
|
+ if (Objects.isNull(teacherReq.getUserId())) {
|
|
|
+ return PageResponse.errorParam();
|
|
|
+ }
|
|
|
+ //判断当前登录人角色
|
|
|
+ Teacher teacher = teacherService.getById(teacherReq.getUserId());
|
|
|
+ if (Objects.nonNull(teacher)) {
|
|
|
+ //教学主管
|
|
|
+ QueryWrapper<MusicGroup> musicGroupQueryWrapper = new QueryWrapper<>();
|
|
|
+ if (JobTypeEnum.TEACHING.getCode().equals(teacher.getJobType())) {
|
|
|
+ musicGroupQueryWrapper.lambda().eq(MusicGroup::getOrganId, teacher.getOrganId())
|
|
|
+ .eq(MusicGroup::getEducationalTeacherId, teacher.getId());
|
|
|
+ } else if (JobTypeEnum.ACADEMIC.getCode().equals(teacher.getJobType())) {
|
|
|
+ //教务老师
|
|
|
+ musicGroupQueryWrapper.lambda().eq(MusicGroup::getOrganId, teacher.getOrganId())
|
|
|
+ .eq(MusicGroup::getTeamTeacherId, teacher.getId());
|
|
|
+ }
|
|
|
+ List<MusicGroup> musicGroupList = musicGroupService.list(musicGroupQueryWrapper);
|
|
|
+ if (!CollectionUtils.isEmpty(musicGroupList)) {
|
|
|
+ QueryWrapper<ClassGroup> classGroupQueryWrapper = new QueryWrapper<>();
|
|
|
+ classGroupQueryWrapper.lambda().in(ClassGroup::getMusicGroupId,
|
|
|
+ musicGroupList.stream().map(MusicGroup::getId).collect(Collectors.toList()));
|
|
|
+ List<ClassGroup> classGroupList = classGroupService.list(classGroupQueryWrapper);
|
|
|
+ if (!CollectionUtils.isEmpty(classGroupList)) {
|
|
|
+ return PageResponse.success(getPage(classGroupList, teacherReq, musicGroupList));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //指导老师 助教老师
|
|
|
+ QueryWrapper<ClassGroupTeacherMapper> classGroupTeacherMapperQueryWrapper = new QueryWrapper<>();
|
|
|
+ if (JobTypeEnum.ADVISER.getCode().equals(teacher.getJobType())) {
|
|
|
+ classGroupTeacherMapperQueryWrapper.lambda().eq(ClassGroupTeacherMapper::getTeacherRole, TeachTypeEnum.BISHOP.getCode())
|
|
|
+ .eq(ClassGroupTeacherMapper::getUserId, teacher.getId());
|
|
|
+ } else if (JobTypeEnum.ASSISTANT.getCode().equals(teacher.getJobType())) {
|
|
|
+ classGroupTeacherMapperQueryWrapper.lambda().eq(ClassGroupTeacherMapper::getTeacherRole, TeachTypeEnum.TEACHING.getCode())
|
|
|
+ .eq(ClassGroupTeacherMapper::getUserId, teacher.getId());
|
|
|
+ }
|
|
|
+ List<ClassGroupTeacherMapper> classGroupTeacherMapperList = classGroupTeacherMapperService.list(classGroupTeacherMapperQueryWrapper);
|
|
|
+ if (!CollectionUtils.isEmpty(classGroupTeacherMapperList)) {
|
|
|
+ QueryWrapper<ClassGroup> classGroupQueryWrapper = new QueryWrapper<>();
|
|
|
+ classGroupQueryWrapper.lambda().in(ClassGroup::getMusicGroupId, classGroupTeacherMapperList.stream().
|
|
|
+ map(ClassGroupTeacherMapper::getMusicGroupId).collect(Collectors.toList()));
|
|
|
+ List<ClassGroup> classGroupList = classGroupService.list(classGroupQueryWrapper);
|
|
|
+ if (!CollectionUtils.isEmpty(classGroupList)) {
|
|
|
+ musicGroupQueryWrapper.lambda().in(MusicGroup::getId, classGroupList.stream().map(ClassGroup::getMusicGroupId).collect(Collectors.toList()));
|
|
|
+ musicGroupList = musicGroupService.list(musicGroupQueryWrapper);
|
|
|
+ return PageResponse.success(getPage(classGroupList, teacherReq, musicGroupList));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return PageResponse.noDataExists();
|
|
|
+ }
|
|
|
+
|
|
|
+ private IPage<StudentListResp> getPage(List<ClassGroup> classGroupList, TeacherReq teacherReq, List<MusicGroup> musicGroupList) {
|
|
|
+ Page<StudentListResp> pageResult = new Page<>();
|
|
|
+ ArrayList<StudentListResp> resultList = Lists.newArrayList();
|
|
|
+ QueryWrapper<ClassGroupStudentMapper> classGroupStudentMapperQueryWrapper = new QueryWrapper<>();
|
|
|
+ classGroupStudentMapperQueryWrapper.lambda().in(ClassGroupStudentMapper::getClassGroupId,
|
|
|
+ classGroupList.stream().map(ClassGroup::getId).collect(Collectors.toList()));
|
|
|
+ List<ClassGroupStudentMapper> classGroupStudentMapperList = classGroupStudentMapperService.list(classGroupStudentMapperQueryWrapper);
|
|
|
+ if (!CollectionUtils.isEmpty(classGroupStudentMapperList)) {
|
|
|
+ QueryWrapper<SysUser> sysUserQueryWrapper = new QueryWrapper<>();
|
|
|
+ sysUserQueryWrapper.lambda().in(SysUser::getId,
|
|
|
+ classGroupStudentMapperList.stream().map(ClassGroupStudentMapper::getUserId).collect(Collectors.toList()));
|
|
|
+ Page<SysUser> sysUserPage = new Page<>(teacherReq.getPageNo(), teacherReq.getPageSize());
|
|
|
+ IPage<SysUser> page = sysUserService.page(sysUserPage, sysUserQueryWrapper);
|
|
|
+ if (!CollectionUtils.isEmpty(page.getRecords())) {
|
|
|
+ BeanUtils.copyProperties(page, pageResult);
|
|
|
+ List<MusicGroup> finalMusicGroupList = musicGroupList;
|
|
|
+ page.getRecords().forEach(sysUser -> {
|
|
|
+ StudentListResp studentListResp = new StudentListResp();
|
|
|
+ studentListResp.setStudentName(sysUser.getRealName());
|
|
|
+ classGroupStudentMapperList.stream().filter
|
|
|
+ (classGroupStudentMapper -> classGroupStudentMapper.getUserId().
|
|
|
+ equals(sysUser.getId())).findFirst().ifPresent(classGroupStudentMapper -> {
|
|
|
+ Integer classGroupId = classGroupStudentMapper.getClassGroupId();
|
|
|
+ classGroupList.stream().filter(classGroup -> classGroup.getId().equals(classGroupId)).
|
|
|
+ findFirst().ifPresent(classGroup -> {
|
|
|
+ Integer musicGroupId = classGroup.getMusicGroupId();
|
|
|
+ //连续迟到
|
|
|
+ QueryWrapper<MusicGroupStudentFee> musicGroupStudentFeeQueryWrapper = new QueryWrapper<MusicGroupStudentFee>();
|
|
|
+ musicGroupStudentFeeQueryWrapper.lambda().eq(true, MusicGroupStudentFee::getMusicGroupId, musicGroupId)
|
|
|
+ .eq(true, MusicGroupStudentFee::getUserId, sysUser.getId());
|
|
|
+ MusicGroupStudentFee musicGroupStudentFee = musicGroupStudentFeeService.getOne(musicGroupStudentFeeQueryWrapper);
|
|
|
+ if (Objects.nonNull(musicGroupStudentFee)) {
|
|
|
+ studentListResp.setStudentAttendance("连续旷课" + musicGroupStudentFee.getContinuousAbsenteeismTimes() + "次");
|
|
|
+ }
|
|
|
+ List<Subject> subjectList = subjectService.getSubjectList(classGroup.getSubjectIdList());
|
|
|
+ if (!CollectionUtils.isEmpty(subjectList)) {
|
|
|
+ studentListResp.setSubjectName(subjectList.stream().map(Subject::getName).collect(Collectors.toList()));
|
|
|
+ }
|
|
|
+ finalMusicGroupList.stream().filter(musicGroup -> musicGroup.getId().equals(musicGroupId)).
|
|
|
+ findFirst().ifPresent(musicGroup -> studentListResp.setMusicGroupName(musicGroup.getName()));
|
|
|
+ });
|
|
|
+ });
|
|
|
+ resultList.add(studentListResp);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ pageResult.setRecords(resultList);
|
|
|
+ return pageResult;
|
|
|
+ }
|
|
|
}
|