BaseClassServiceImpl.java 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package com.xjrsoft.module.base.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.github.yulichang.base.MPJBaseServiceImpl;
  6. import com.github.yulichang.wrapper.MPJLambdaWrapper;
  7. import com.xjrsoft.common.enums.DeleteMark;
  8. import com.xjrsoft.common.enums.EnabledMark;
  9. import com.xjrsoft.module.attendance.dto.AttendanceStatisticDto;
  10. import com.xjrsoft.module.attendance.vo.ClassStatisticsVo;
  11. import com.xjrsoft.module.base.dto.BaseClassPageDto;
  12. import com.xjrsoft.module.base.entity.BaseClass;
  13. import com.xjrsoft.module.base.mapper.BaseClassMapper;
  14. import com.xjrsoft.module.base.service.IBaseClassService;
  15. import com.xjrsoft.module.base.vo.BaseClassPageVo;
  16. import com.xjrsoft.module.base.vo.StudentClassVo;
  17. import com.xjrsoft.module.organization.entity.UserStudent;
  18. import com.xjrsoft.module.organization.service.IUserStudentService;
  19. import com.xjrsoft.module.organization.vo.UserStudentVo;
  20. import com.xjrsoft.module.student.entity.BaseStudent;
  21. import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
  22. import com.xjrsoft.module.student.entity.BaseStudentUser;
  23. import com.xjrsoft.module.teacher.entity.XjrUser;
  24. import lombok.AllArgsConstructor;
  25. import org.springframework.stereotype.Service;
  26. import java.util.List;
  27. import java.util.stream.Collectors;
  28. @Service
  29. @AllArgsConstructor
  30. public class BaseClassServiceImpl extends MPJBaseServiceImpl<BaseClassMapper, BaseClass> implements IBaseClassService {
  31. private final IUserStudentService userStudentService;
  32. private final BaseClassMapper baseClassMapper;
  33. /**
  34. * 获取家长关联的学生 id 是家长的ID
  35. * @param id
  36. * @return
  37. */
  38. public List<UserStudentVo> getStudents(long id) {
  39. List<Long> studentIds = userStudentService.list(Wrappers.lambdaQuery(UserStudent.class)
  40. .eq(UserStudent::getUserId, id).eq(UserStudent::getStatus, 1))
  41. .stream().map(UserStudent::getStudentId).collect(Collectors.toList());
  42. List<UserStudentVo> list = null;
  43. if (studentIds.size() > 0) {
  44. MPJLambdaWrapper<BaseClass> queryWrapper = new MPJLambdaWrapper<>();
  45. queryWrapper
  46. .disableSubLogicDel()
  47. .rightJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getClassId, BaseStudent::getId)
  48. .innerJoin(BaseStudentUser.class, BaseStudentUser::getId, BaseStudentSchoolRoll::getUserId)
  49. .leftJoin(XjrUser.class, XjrUser::getId, BaseClass::getTeacherId)
  50. .in(BaseStudentSchoolRoll::getUserId, studentIds)
  51. .selectAs(BaseClass::getName, UserStudentVo::getClassName)
  52. .selectAs(BaseStudentUser::getName, UserStudentVo::getStudentName)
  53. .selectAs(BaseStudentUser::getId, UserStudentVo::getStudentId)
  54. .selectAs(BaseStudentSchoolRoll::getClassId, UserStudentVo::getClassId)
  55. .selectAs(XjrUser::getName, UserStudentVo::getTeacherName)
  56. .selectAs(XjrUser::getMobile, UserStudentVo::getTeacherMobile)
  57. .selectAs(XjrUser::getId, UserStudentVo::getTeacherId)
  58. .selectAs(BaseStudentUser::getAvatar, UserStudentVo::getAvatar);
  59. list = selectJoinList(UserStudentVo.class, queryWrapper);
  60. }
  61. return list;
  62. }
  63. /**
  64. * 获取学生的班级信息
  65. * @param id
  66. * @return
  67. */
  68. public UserStudentVo getClassInfo(long id) {
  69. MPJLambdaWrapper<BaseClass> queryWrapper = new MPJLambdaWrapper<>();
  70. queryWrapper
  71. .disableSubLogicDel()
  72. .innerJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getClassId, BaseStudent::getId)
  73. .innerJoin(BaseStudentUser.class, BaseStudentUser::getId, BaseStudentSchoolRoll::getUserId)
  74. .leftJoin(XjrUser.class, XjrUser::getId, BaseClass::getTeacherId)
  75. .eq(BaseStudentSchoolRoll::getUserId, id)
  76. .selectAs(BaseClass::getName, UserStudentVo::getClassName)
  77. .selectAs(XjrUser::getName, UserStudentVo::getTeacherName)
  78. .selectAs(XjrUser::getMobile, UserStudentVo::getTeacherMobile)
  79. .selectAs(XjrUser::getId, UserStudentVo::getTeacherId)
  80. .selectAs(BaseStudentUser::getName, UserStudentVo::getStudentName)
  81. .selectAs(BaseStudentUser::getId, UserStudentVo::getStudentId)
  82. .selectAs(BaseStudentSchoolRoll::getClassId, UserStudentVo::getClassId)
  83. .selectAs(BaseStudentUser::getAvatar, UserStudentVo::getAvatar);
  84. return selectJoinOne(UserStudentVo.class, queryWrapper);
  85. }
  86. @Override
  87. public Page<BaseClassPageVo> getPage(Page<BaseClassPageVo> page, BaseClassPageDto dto) {
  88. return baseClassMapper.getPage(page, dto);
  89. }
  90. @Override
  91. public List<StudentClassVo> getStudentClass() {
  92. return baseClassMapper.getStudentClass();
  93. }
  94. @Override
  95. public Page<ClassStatisticsVo> getAttendancePage(Page<ClassStatisticsVo> page, AttendanceStatisticDto dto){
  96. return baseClassMapper.getAttendanceClass(page, dto);
  97. };
  98. /**
  99. * 根据教师id查询班级id
  100. * @param teacherId 教师userId
  101. * @return 班主任所负责的班级id
  102. */
  103. @Override
  104. public Long getIdByTeacherId(Long teacherId){
  105. List<BaseClass> list = this.baseMapper.selectList(
  106. new QueryWrapper<BaseClass>().lambda()
  107. .eq(BaseClass::getTeacherId, teacherId)
  108. .eq(BaseClass::getDeleteMark, DeleteMark.NODELETE.getCode())
  109. .eq(BaseClass::getEnabledMark, EnabledMark.ENABLED.getCode())
  110. .orderByDesc(BaseClass::getCreateDate)
  111. );
  112. if(list.isEmpty()){
  113. return null;
  114. }
  115. return list.get(0).getId();
  116. };
  117. }