TextbookStudentClaimServiceImpl.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. package com.xjrsoft.module.textbook.service.impl;
  2. import cn.dev33.satoken.stp.StpUtil;
  3. import cn.hutool.core.util.ObjectUtil;
  4. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5. import com.baomidou.mybatisplus.core.metadata.IPage;
  6. import com.github.yulichang.base.MPJBaseServiceImpl;
  7. import com.github.yulichang.wrapper.MPJLambdaWrapper;
  8. import com.xjrsoft.common.exception.MyException;
  9. import com.xjrsoft.common.page.ConventPage;
  10. import com.xjrsoft.common.utils.VoToColumnUtil;
  11. import com.xjrsoft.module.base.entity.BaseClass;
  12. import com.xjrsoft.module.base.entity.BaseSemester;
  13. import com.xjrsoft.module.base.service.IBaseClassService;
  14. import com.xjrsoft.module.base.service.IBaseSemesterService;
  15. import com.xjrsoft.module.student.entity.BaseStudent;
  16. import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
  17. import com.xjrsoft.module.teacher.entity.AttendanceRecord;
  18. import com.xjrsoft.module.teacher.entity.XjrUser;
  19. import com.xjrsoft.module.teacher.mapper.XjrUserMapper;
  20. import com.xjrsoft.module.textbook.dto.TeacherCheckByStuDto;
  21. import com.xjrsoft.module.textbook.dto.TeacherCheckByclassDto;
  22. import com.xjrsoft.module.textbook.dto.TeacherCheckStuClaimDto;
  23. import com.xjrsoft.module.textbook.dto.TextbookClaimStudentConfirmDto;
  24. import com.xjrsoft.module.textbook.entity.Textbook;
  25. import com.xjrsoft.module.textbook.entity.TextbookStudentClaim;
  26. import com.xjrsoft.module.textbook.entity.WfTextbookClaim;
  27. import com.xjrsoft.module.textbook.entity.WfTextbookClaimItem;
  28. import com.xjrsoft.module.textbook.mapper.TextbookStudentClaimMapper;
  29. import com.xjrsoft.module.textbook.mapper.WfTextbookClaimItemMapper;
  30. import com.xjrsoft.module.textbook.mapper.WfTextbookClaimMapper;
  31. import com.xjrsoft.module.textbook.service.ITextbookStudentClaimService;
  32. import com.xjrsoft.module.textbook.vo.*;
  33. import lombok.AllArgsConstructor;
  34. import org.springframework.stereotype.Service;
  35. import org.springframework.transaction.annotation.Transactional;
  36. import java.util.ArrayList;
  37. import java.util.Date;
  38. import java.util.List;
  39. /**
  40. * @title: 学生教材认领记录
  41. * @Author szs
  42. * @Date: 2023-12-26
  43. * @Version 1.0
  44. */
  45. @Service
  46. @AllArgsConstructor
  47. public class TextbookStudentClaimServiceImpl extends MPJBaseServiceImpl<TextbookStudentClaimMapper, TextbookStudentClaim> implements ITextbookStudentClaimService {
  48. private final XjrUserMapper xjrUserMapper;
  49. private final TextbookStudentClaimMapper textbookStudentClaimMapper;
  50. private final IBaseSemesterService baseSemesterService;
  51. private final IBaseClassService baseClassService;
  52. private final WfTextbookClaimMapper wfTextbookClaimMapper;
  53. private final WfTextbookClaimItemMapper wfTextbookClaimItemMapper;
  54. @Override
  55. public TextbookClaimStudentConfirmVo getStudentConfirmList(TextbookClaimStudentConfirmDto dto) {
  56. //获取当前登录学生的信息
  57. MPJLambdaWrapper<XjrUser> queryUser = new MPJLambdaWrapper<>();
  58. queryUser.selectAs(XjrUser::getName, TextbookClaimStudentConfirmVo::getStudentName).selectAs(BaseStudent::getStudentId, TextbookClaimStudentConfirmVo::getStudentId).selectAs(BaseClass::getName, TextbookClaimStudentConfirmVo::getClassCN).leftJoin(BaseStudent.class, BaseStudent::getUserId, XjrUser::getId).leftJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getUserId, XjrUser::getId).leftJoin(BaseClass.class, BaseClass::getId, BaseStudentSchoolRoll::getClassId).eq(XjrUser::getId, StpUtil.getLoginIdAsLong()).disableSubLogicDel().orderByDesc(AttendanceRecord::getId);
  59. TextbookClaimStudentConfirmVo textbookClaimStudentConfirmVo = xjrUserMapper.selectJoinOne(TextbookClaimStudentConfirmVo.class, queryUser);
  60. if (ObjectUtil.isNull(textbookClaimStudentConfirmVo)) {
  61. throw new MyException("登录信息出错,请重新登录");
  62. }
  63. //根据学期id查出学期名称
  64. BaseSemester baseSemester = baseSemesterService.getById(dto.getBaseSemesterId());
  65. textbookClaimStudentConfirmVo.setBaseSemesterCN(baseSemester.getName());
  66. dto.setStudentUserId(StpUtil.getLoginIdAsLong());
  67. List<TextbookClaimVO> textbookClaimVOList = textbookStudentClaimMapper.getTextbookClaimList(dto);
  68. textbookClaimStudentConfirmVo.setTextbookClaimVoList(textbookClaimVOList);
  69. return textbookClaimStudentConfirmVo;
  70. }
  71. @Override
  72. public List<TextbookStudentSemesterVo> getStudentSemesterList() {
  73. //获取当前学生领取记录的所有学期
  74. MPJLambdaWrapper<TextbookStudentClaim> qwerySemester = new MPJLambdaWrapper<>();
  75. qwerySemester
  76. .distinct()
  77. .disableSubLogicDel()
  78. .selectAs(BaseSemester::getName, TextbookStudentSemesterVo::getBaseSemesterIdCN)
  79. .select(TextbookStudentClaim.class, x -> VoToColumnUtil.fieldsToColumns(TextbookStudentSemesterVo.class).contains(x.getProperty()))
  80. .leftJoin(BaseSemester.class, BaseSemester::getId, TextbookStudentClaim::getBaseSemesterId)
  81. .eq(TextbookStudentClaim::getStudentUserId, StpUtil.getLoginIdAsLong());
  82. List<TextbookStudentSemesterVo> textbookStudentSemesterVoList = this.selectJoinList(TextbookStudentSemesterVo.class, qwerySemester);
  83. if (ObjectUtil.isNull(textbookStudentSemesterVoList) && textbookStudentSemesterVoList.size() == 0) {
  84. return null;
  85. }
  86. //为每个学期添加未领取人数
  87. for (TextbookStudentSemesterVo textbookStudentSemesterVo : textbookStudentSemesterVoList) {
  88. LambdaQueryWrapper<TextbookStudentClaim> queryWrapperNotClaimNum = new LambdaQueryWrapper<>();
  89. queryWrapperNotClaimNum.eq(TextbookStudentClaim::getStudentUserId, StpUtil.getLoginIdAsLong()).eq(TextbookStudentClaim::getBaseSemesterId, textbookStudentSemesterVo.getBaseSemesterId()).eq(TextbookStudentClaim::getIsClaim, 0);
  90. Long notClaimNum = this.count(queryWrapperNotClaimNum);
  91. textbookStudentSemesterVo.setNotClaimNum(notClaimNum);
  92. }
  93. return textbookStudentSemesterVoList;
  94. }
  95. @Override
  96. public IPage<TeacherCheckByclassVo> getTeacherCheckByclassList(TeacherCheckByclassDto dto) {
  97. //根据当前班主任用户查出所管理的班级Id
  98. LambdaQueryWrapper<BaseClass> queryWrapperClassId = new LambdaQueryWrapper<>();
  99. queryWrapperClassId.eq(BaseClass::getTeacherId, StpUtil.getLoginIdAsLong());
  100. List<BaseClass> baseClassList = baseClassService.list(queryWrapperClassId);
  101. if (ObjectUtil.isNull(baseClassList) && baseClassList.size() == 0) {
  102. return null;
  103. }
  104. List<Long> classIdList = new ArrayList<>();
  105. for (BaseClass baseClass : baseClassList) {
  106. classIdList.add(baseClass.getId());
  107. }
  108. dto.setClassIdList(classIdList);
  109. IPage<TeacherCheckByclassVo> teacherCheckByclassVoList = textbookStudentClaimMapper.getTeacherCheckByclassList(ConventPage.getPage(dto), dto);
  110. //为每本书添加数据
  111. for (TeacherCheckByclassVo t : teacherCheckByclassVoList.getRecords()) {
  112. MPJLambdaWrapper<WfTextbookClaim> qweryActualReceivedNum = new MPJLambdaWrapper<>();
  113. qweryActualReceivedNum
  114. .disableSubLogicDel()
  115. .selectAs(WfTextbookClaimItem::getIssueNumber, TeacherCheckByclassVo::getActualReceivedNum)
  116. .leftJoin(WfTextbookClaimItem.class, WfTextbookClaimItem::getWfTextbookClaimId, WfTextbookClaim::getId)
  117. .eq(WfTextbookClaim::getClassId, t.getClassId())
  118. .eq(WfTextbookClaimItem::getTextbookId, t.getTextbookId());
  119. TeacherCheckByclassVo teacherCheckByclassVo = wfTextbookClaimMapper.selectJoinOne(TeacherCheckByclassVo.class, qweryActualReceivedNum);
  120. t.setActualReceivedNum(teacherCheckByclassVo.getActualReceivedNum());
  121. LambdaQueryWrapper<TextbookStudentClaim> queryActualClaimNum = new LambdaQueryWrapper<>();
  122. queryActualClaimNum
  123. .eq(TextbookStudentClaim::getClassId, t.getClassId())
  124. .eq(TextbookStudentClaim::getTextbookId, t.getTextbookId())
  125. .eq(TextbookStudentClaim::getIsClaim, 1);
  126. Long actualClaimNum = this.count(queryActualClaimNum);
  127. t.setActualClaimNum(actualClaimNum);
  128. }
  129. return teacherCheckByclassVoList;
  130. }
  131. @Override
  132. public IPage<TeacherCheckByStuVo> getTeacherCheckByStuList(TeacherCheckByStuDto dto) {
  133. //根据当前班主任用户查出所管理的班级Id
  134. LambdaQueryWrapper<BaseClass> queryWrapperClassId = new LambdaQueryWrapper<>();
  135. queryWrapperClassId.eq(BaseClass::getTeacherId, StpUtil.getLoginIdAsLong());
  136. List<BaseClass> baseClassList = baseClassService.list(queryWrapperClassId);
  137. if (ObjectUtil.isNull(baseClassList) && baseClassList.size() == 0) {
  138. return null;
  139. }
  140. List<Long> classIdList = new ArrayList<>();
  141. for (BaseClass baseClass : baseClassList) {
  142. classIdList.add(baseClass.getId());
  143. }
  144. dto.setClassIdList(classIdList);
  145. //将班上所有学生进行分组,查询出list集合
  146. IPage<TeacherCheckByStuVo> teacherCheckByStuVoList = textbookStudentClaimMapper.getTeacherCheckByStuList(ConventPage.getPage(dto), dto);
  147. //为每个学生添加教材领取记录集合
  148. for (TeacherCheckByStuVo t : teacherCheckByStuVoList.getRecords()) {
  149. List<TextbookClaimVO> textbookClaimVOList = textbookStudentClaimMapper.getTextbookClaimVOList(t.getStudentUserId());
  150. t.setTextbookClaimVOList(textbookClaimVOList);
  151. }
  152. return teacherCheckByStuVoList;
  153. }
  154. @Override
  155. @Transactional
  156. public Boolean updateByIds(List<Long> textbookStudentClaimIds) {
  157. for (Long textbookStudentClaimId : textbookStudentClaimIds) {
  158. this.updateById(new TextbookStudentClaim() {{
  159. setModifyUserId(StpUtil.getLoginIdAsLong());
  160. setModifyDate(new Date());
  161. setId(textbookStudentClaimId);
  162. setIsClaim(1);
  163. }});
  164. }
  165. return true;
  166. }
  167. @Override
  168. public List<TeacherCheckStuClaimVo> getTeacherCheckStuClaimList(TeacherCheckStuClaimDto dto) {
  169. List<TeacherCheckStuClaimVo> teacherCheckStuClaimVos = textbookStudentClaimMapper.getTeacherCheckStuClaimList(dto);
  170. return teacherCheckStuClaimVos;
  171. }
  172. @Override
  173. public List<TextbookClaimVO> getTeacherGetStuNoClaimList(Long studentUserId) {
  174. MPJLambdaWrapper<TextbookStudentClaim> queryTextbookClaimVOList = new MPJLambdaWrapper<>();
  175. queryTextbookClaimVOList.selectAs(TextbookStudentClaim::getId, TextbookClaimVO::getTextbookStudentClaimId).selectAs(Textbook::getBookName, TextbookClaimVO::getBookName).select(TextbookStudentClaim.class, x -> VoToColumnUtil.fieldsToColumns(TextbookClaimVO.class).contains(x.getProperty())).leftJoin(Textbook.class, Textbook::getId, TextbookStudentClaim::getTextbookId).eq(TextbookStudentClaim::getStudentUserId, studentUserId).disableSubLogicDel();
  176. List<TextbookClaimVO> textbookClaimVOList = this.selectJoinList(TextbookClaimVO.class, queryTextbookClaimVOList);
  177. return textbookClaimVOList;
  178. }
  179. }