BandingTaskClassServiceImpl.java 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. package com.xjrsoft.module.banding.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.github.yulichang.base.MPJBaseServiceImpl;
  4. import com.github.yulichang.wrapper.MPJLambdaWrapper;
  5. import com.xjrsoft.common.enums.DeleteMark;
  6. import com.xjrsoft.common.enums.YesOrNoEnum;
  7. import com.xjrsoft.common.utils.VoToColumnUtil;
  8. import com.xjrsoft.module.banding.dto.BandingTaskClassPageDto;
  9. import com.xjrsoft.module.banding.dto.BandingTaskClassStudentPageDto;
  10. import com.xjrsoft.module.banding.entity.BandingTask;
  11. import com.xjrsoft.module.banding.entity.BandingTaskClass;
  12. import com.xjrsoft.module.banding.entity.BandingTaskClassStudent;
  13. import com.xjrsoft.module.banding.mapper.BandingTaskClassMapper;
  14. import com.xjrsoft.module.banding.mapper.BandingTaskClassStudentMapper;
  15. import com.xjrsoft.module.banding.mapper.BandingTaskMapper;
  16. import com.xjrsoft.module.banding.service.IBandingTaskClassService;
  17. import com.xjrsoft.module.banding.vo.BandingTaskClassPageVo;
  18. import com.xjrsoft.module.banding.vo.BandingTaskClassStudentListVo;
  19. import com.xjrsoft.module.banding.vo.BandingTaskClassSureListVo;
  20. import com.xjrsoft.module.base.entity.BaseClassroom;
  21. import com.xjrsoft.module.base.service.IBaseClassroomService;
  22. import com.xjrsoft.module.organization.entity.User;
  23. import com.xjrsoft.module.organization.service.IUserService;
  24. import com.xjrsoft.module.teacher.entity.BaseTeacher;
  25. import lombok.AllArgsConstructor;
  26. import org.springframework.stereotype.Service;
  27. import org.springframework.transaction.annotation.Transactional;
  28. import java.util.ArrayList;
  29. import java.util.Date;
  30. import java.util.HashMap;
  31. import java.util.List;
  32. import java.util.Map;
  33. import java.util.stream.Collectors;
  34. /**
  35. * @title: 新生分班任务
  36. * @Author dzx
  37. * @Date: 2024-07-01
  38. * @Version 1.0
  39. */
  40. @Service
  41. @AllArgsConstructor
  42. public class BandingTaskClassServiceImpl extends MPJBaseServiceImpl<BandingTaskClassMapper, BandingTaskClass> implements IBandingTaskClassService {
  43. private final BandingTaskMapper bandingTaskMapper;
  44. private final BandingTaskClassStudentMapper classStudentMapper;
  45. private final IBaseClassroomService classroomService;
  46. private final IUserService userService;
  47. @Override
  48. public Boolean add(BandingTaskClass bandingTaskClass) {
  49. bandingTaskClass.setCreateDate(new Date());
  50. this.baseMapper.insert(bandingTaskClass);
  51. return true;
  52. }
  53. @Override
  54. public Boolean update(BandingTaskClass bandingTaskClass) {
  55. bandingTaskClass.setModifyDate(new Date());
  56. this.baseMapper.updateById(bandingTaskClass);
  57. return true;
  58. }
  59. @Override
  60. @Transactional(rollbackFor = Exception.class)
  61. public Boolean delete(List<Long> ids) {
  62. this.baseMapper.deleteBatchIds(ids);
  63. return true;
  64. }
  65. @Override
  66. public List<BandingTaskClassPageVo> getList(BandingTaskClassPageDto dto) {
  67. return this.baseMapper.getList(dto);
  68. }
  69. @Override
  70. public Boolean reset(Long bandingTaskId) {
  71. List<BandingTaskClass> classList = this.baseMapper.selectList(
  72. new QueryWrapper<BandingTaskClass>().lambda()
  73. .eq(BandingTaskClass::getBandingTaskId, bandingTaskId)
  74. );
  75. for (BandingTaskClass bandingTaskClass : classList) {
  76. bandingTaskClass.setModifyDate(new Date());
  77. bandingTaskClass.setHeight(null);
  78. bandingTaskClass.setScore(null);
  79. this.baseMapper.updateById(bandingTaskClass);
  80. }
  81. List<Long> classIds = classList.stream().map(BandingTaskClass::getId).collect(Collectors.toList());
  82. if(!classIds.isEmpty()){
  83. classStudentMapper.delete(
  84. new QueryWrapper<BandingTaskClassStudent>().lambda()
  85. .in(BandingTaskClassStudent::getBandingTaskClassId, classIds)
  86. );
  87. }
  88. return true;
  89. }
  90. @Override
  91. public List<BandingTaskClassStudentListVo> classStudent(BandingTaskClassStudentPageDto dto) {
  92. BandingTask bandingTask = bandingTaskMapper.selectById(dto.getBandingTaskId());
  93. dto.setGradeId(bandingTask.getGradeId());
  94. dto.setEnrollType(bandingTask.getEnrollType());
  95. return this.baseMapper.getClassStudent(dto);
  96. }
  97. @Override
  98. public List<BandingTaskClassSureListVo> getClassSure(BandingTaskClassStudentPageDto dto) {
  99. return this.baseMapper.getClassSure(dto);
  100. }
  101. @Override
  102. public Boolean importData(Long bandingTaskId, List<Map<Integer, Object>> excelDataList) {
  103. List<BaseClassroom> classroomList = classroomService.list(
  104. new QueryWrapper<BaseClassroom>().lambda()
  105. .eq(BaseClassroom::getDeleteMark, DeleteMark.NODELETE.getCode())
  106. );
  107. Map<String, Long> classroomMap = new HashMap<>();
  108. for (BaseClassroom classroom : classroomList) {
  109. classroomMap.put(classroom.getName(), classroom.getId());
  110. }
  111. List<User> userList = userService.list(
  112. new MPJLambdaWrapper<User>()
  113. .select(User::getId)
  114. .select(User.class, x -> VoToColumnUtil.fieldsToColumns(User.class).contains(x.getProperty()))
  115. .innerJoin(BaseTeacher.class, BaseTeacher::getUserId, User::getId)
  116. );
  117. Map<String, Long> userMap = new HashMap<>();
  118. for (User user : userList) {
  119. userMap.put(user.getName(), user.getId());
  120. }
  121. List<BandingTaskClass> classList = new ArrayList<>();
  122. Date createDate = new Date();
  123. for (Map<Integer, Object> taskClass : excelDataList) {
  124. classList.add(new BandingTaskClass(){{
  125. setBandingTaskId(bandingTaskId);
  126. setCreateDate(createDate);
  127. setName(taskClass.get(1).toString());
  128. setNumber(Integer.parseInt(taskClass.get(2).toString()));
  129. setClassroomId(classroomMap.get(taskClass.get(4).toString()));
  130. if(taskClass.get(5) != null){
  131. setIsOrderClass(YesOrNoEnum.getCode(taskClass.get(5).toString()));
  132. }
  133. if(taskClass.get(6) != null){
  134. setSortCode(Integer.parseInt(taskClass.get(6).toString()));
  135. }
  136. setTeacherId(userMap.get(taskClass.get(3).toString()));
  137. }});
  138. }
  139. Boolean result = this.saveBatch(classList);
  140. return result;
  141. }
  142. }