|  | @@ -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;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  }
 |