package com.xjrsoft.module.base.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; 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.DeleteMark; import com.xjrsoft.common.enums.EnabledMark; import com.xjrsoft.module.attendance.dto.AttendanceStatisticDto; import com.xjrsoft.module.attendance.vo.ClassStatisticsVo; import com.xjrsoft.module.base.dto.BaseClassPageDto; import com.xjrsoft.module.base.entity.BaseClass; import com.xjrsoft.module.base.mapper.BaseClassMapper; import com.xjrsoft.module.base.service.IBaseClassService; import com.xjrsoft.module.base.vo.BaseClassPageVo; import com.xjrsoft.module.base.vo.StudentClassVo; import com.xjrsoft.module.organization.entity.UserStudent; import com.xjrsoft.module.organization.service.IUserStudentService; import com.xjrsoft.module.organization.vo.UserStudentVo; import com.xjrsoft.module.student.entity.BaseStudent; import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll; import com.xjrsoft.module.student.entity.BaseStudentUser; import com.xjrsoft.module.teacher.entity.XjrUser; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; import java.util.stream.Collectors; @Service @AllArgsConstructor public class BaseClassServiceImpl extends MPJBaseServiceImpl implements IBaseClassService { private final IUserStudentService userStudentService; private final BaseClassMapper baseClassMapper; /** * 获取家长关联的学生 id 是家长的ID * @param id * @return */ public List getStudents(long id) { List studentIds = userStudentService.list(Wrappers.lambdaQuery(UserStudent.class) .eq(UserStudent::getUserId, id).eq(UserStudent::getStatus, 1)) .stream().map(UserStudent::getStudentId).collect(Collectors.toList()); List list = null; if (studentIds.size() > 0) { MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); queryWrapper .disableSubLogicDel() .rightJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getClassId, BaseStudent::getId) .innerJoin(BaseStudentUser.class, BaseStudentUser::getId, BaseStudentSchoolRoll::getUserId) .leftJoin(XjrUser.class, XjrUser::getId, BaseClass::getTeacherId) .in(BaseStudentSchoolRoll::getUserId, studentIds) .selectAs(BaseClass::getName, UserStudentVo::getClassName) .selectAs(BaseStudentUser::getName, UserStudentVo::getStudentName) .selectAs(BaseStudentUser::getId, UserStudentVo::getStudentId) .selectAs(BaseStudentSchoolRoll::getClassId, UserStudentVo::getClassId) .selectAs(XjrUser::getName, UserStudentVo::getTeacherName) .selectAs(XjrUser::getMobile, UserStudentVo::getTeacherMobile) .selectAs(XjrUser::getId, UserStudentVo::getTeacherId) .selectAs(BaseStudentUser::getAvatar, UserStudentVo::getAvatar); list = selectJoinList(UserStudentVo.class, queryWrapper); } return list; } /** * 获取学生的班级信息 * @param id * @return */ public UserStudentVo getClassInfo(long id) { MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); queryWrapper .disableSubLogicDel() .innerJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getClassId, BaseStudent::getId) .innerJoin(BaseStudentUser.class, BaseStudentUser::getId, BaseStudentSchoolRoll::getUserId) .leftJoin(XjrUser.class, XjrUser::getId, BaseClass::getTeacherId) .eq(BaseStudentSchoolRoll::getUserId, id) .selectAs(BaseClass::getName, UserStudentVo::getClassName) .selectAs(XjrUser::getName, UserStudentVo::getTeacherName) .selectAs(XjrUser::getMobile, UserStudentVo::getTeacherMobile) .selectAs(XjrUser::getId, UserStudentVo::getTeacherId) .selectAs(BaseStudentUser::getName, UserStudentVo::getStudentName) .selectAs(BaseStudentUser::getId, UserStudentVo::getStudentId) .selectAs(BaseStudentSchoolRoll::getClassId, UserStudentVo::getClassId) .selectAs(BaseStudentUser::getAvatar, UserStudentVo::getAvatar); return selectJoinOne(UserStudentVo.class, queryWrapper); } @Override public Page getPage(Page page, BaseClassPageDto dto) { return baseClassMapper.getPage(page, dto); } @Override public List getStudentClass() { return baseClassMapper.getStudentClass(); } @Override public Page getAttendancePage(Page page, AttendanceStatisticDto dto){ return baseClassMapper.getAttendanceClass(page, dto); }; /** * 根据教师id查询班级id * @param teacherId 教师userId * @return 班主任所负责的班级id */ @Override public Long getIdByTeacherId(Long teacherId){ List list = this.baseMapper.selectList( new QueryWrapper().lambda() .eq(BaseClass::getTeacherId, teacherId) .eq(BaseClass::getDeleteMark, DeleteMark.NODELETE.getCode()) .eq(BaseClass::getEnabledMark, EnabledMark.ENABLED.getCode()) .orderByDesc(BaseClass::getCreateDate) ); if(list.isEmpty()){ return null; } return list.get(0).getId(); }; }