BaseClassCourseServiceImpl.java 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. package com.xjrsoft.module.base.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  4. import com.github.yulichang.base.MPJBaseServiceImpl;
  5. import com.xjrsoft.common.exception.MyException;
  6. import com.xjrsoft.module.base.dto.BaseClassCoursePageDto;
  7. import com.xjrsoft.module.base.dto.ClassCourseReuseDto;
  8. import com.xjrsoft.module.base.entity.BaseClassCourse;
  9. import com.xjrsoft.module.base.entity.ClassCourseTextbook;
  10. import com.xjrsoft.module.base.entity.CourseBookInfo;
  11. import com.xjrsoft.module.base.mapper.BaseClassCourseMapper;
  12. import com.xjrsoft.module.base.service.IBaseClassCourseService;
  13. import com.xjrsoft.module.base.vo.BaseClassCoursePageVo;
  14. import lombok.AllArgsConstructor;
  15. import org.springframework.stereotype.Service;
  16. import org.springframework.transaction.annotation.Transactional;
  17. import java.util.*;
  18. /**
  19. * @title: 班级课程
  20. * @Author brealinxx
  21. * @Date: 2024-06-04
  22. * @Version 1.0
  23. */
  24. @Service
  25. @AllArgsConstructor
  26. public class BaseClassCourseServiceImpl extends MPJBaseServiceImpl<BaseClassCourseMapper, BaseClassCourse> implements IBaseClassCourseService {
  27. private final BaseClassCourseMapper baseClassCourseMapper;
  28. @Override
  29. public Page<BaseClassCoursePageVo> getPage(Page<BaseClassCoursePageVo> page, BaseClassCoursePageDto dto) {
  30. return baseClassCourseMapper.getPage(page, dto);
  31. }
  32. @Override
  33. public List<CourseBookInfo> getAllCourseBook(Long[] classIds, Long subjectGroupId, Long semester){
  34. return baseClassCourseMapper.getAllCourseBook(classIds, subjectGroupId, semester);
  35. }
  36. @Override
  37. public List<CourseBookInfo> getSelectedCourseBook(Long[] subjectGroupId, Long semester){
  38. return baseClassCourseMapper.getSelectedCourseBook(subjectGroupId, semester);
  39. }
  40. @Override
  41. @Transactional
  42. public Boolean updateAddCourseBook(ClassCourseTextbook dto){
  43. if (dto.getClassIds() == null || dto.getClassIds().length == 0 || dto.getBaseSemesterId() == null || dto.getBaseSemesterId() == 0) {
  44. return false;
  45. }
  46. boolean isSuccess = false;
  47. List<Long> classIdList = Arrays.asList(dto.getClassIds());
  48. //删除班级的所有课程教材
  49. LambdaQueryWrapper<BaseClassCourse> baseClassCourseLambdaQueryWrapper = new LambdaQueryWrapper<>();
  50. baseClassCourseLambdaQueryWrapper
  51. .in(BaseClassCourse::getClassId, classIdList)
  52. .eq(BaseClassCourse::getBaseSemesterId, dto.getBaseSemesterId())
  53. ;
  54. isSuccess = this.remove(baseClassCourseLambdaQueryWrapper);
  55. List<BaseClassCourse> baseClassCourseList = new ArrayList<>();
  56. for (Long classId : dto.getClassIds()){
  57. for (String id : dto.getIds()){
  58. String[] idArr = id.split("_");
  59. if(idArr[0].equals("") || idArr[1].equals("")){
  60. continue;
  61. }
  62. Long courseId = Long.parseLong(idArr[0]);
  63. Long textbookId = Long.parseLong(idArr[1]);
  64. baseClassCourseList.add(new BaseClassCourse(){{
  65. setBaseSemesterId(dto.getBaseSemesterId());
  66. setClassId(classId);
  67. setCourseId(courseId);
  68. setTextbookId(textbookId);
  69. }});
  70. }
  71. }
  72. isSuccess = this.saveBatch(baseClassCourseList);
  73. return isSuccess;
  74. //baseClassCourseMapper.updateAddClassCourseTextbooks(classId, courseId, textbookId);
  75. }
  76. @Override
  77. public void updateRemoveCourseBook(Long classId, Long courseId, Long textbookId){
  78. baseClassCourseMapper.updateRemoveClassCourseTextbooks(classId, courseId, textbookId);
  79. }
  80. @Override
  81. public void markExistingRecordsAsDeleted(Long newClassId, Long sourceClassId){
  82. baseClassCourseMapper.markExistingRecordsAsDeleted(newClassId, sourceClassId);
  83. }
  84. @Override
  85. @Transactional
  86. public Boolean duplicateCourseBook(ClassCourseReuseDto dto){
  87. LambdaQueryWrapper<BaseClassCourse> baseClassCourseLambdaQueryWrapper = new LambdaQueryWrapper<>();
  88. baseClassCourseLambdaQueryWrapper
  89. .eq(dto.getOldClassId() != null && dto.getOldClassId() > 0, BaseClassCourse::getClassId, dto.getOldClassId())
  90. .eq(dto.getOldBaseSemesterId() != null && dto.getOldBaseSemesterId() > 0, BaseClassCourse::getBaseSemesterId, dto.getOldBaseSemesterId())
  91. ;
  92. List<BaseClassCourse> baseClassCourseList = this.list(baseClassCourseLambdaQueryWrapper);
  93. if(baseClassCourseList == null || baseClassCourseList.isEmpty()){
  94. throw new MyException("该学期的该班级没有可以复用的课程!");
  95. }
  96. boolean isSuccess = false;
  97. //删除班级的所有课程教材
  98. LambdaQueryWrapper<BaseClassCourse> removeLambdaQueryWrapper = new LambdaQueryWrapper<>();
  99. removeLambdaQueryWrapper
  100. .in(BaseClassCourse::getClassId, dto.getNewClassIds())
  101. .eq(BaseClassCourse::getBaseSemesterId, dto.getNewBaseSemesterId())
  102. ;
  103. isSuccess = this.remove(baseClassCourseLambdaQueryWrapper);
  104. List<BaseClassCourse> newBaseClassCourseList = new ArrayList<>();
  105. for (Long newClassId : dto.getNewClassIds()){
  106. for (BaseClassCourse baseClassCourse : baseClassCourseList){
  107. Long courseId = baseClassCourse.getCourseId();
  108. Long textbookId = baseClassCourse.getTextbookId();
  109. newBaseClassCourseList.add(new BaseClassCourse(){{
  110. setBaseSemesterId(dto.getNewBaseSemesterId());
  111. setClassId(newClassId);
  112. setCourseId(courseId);
  113. setTextbookId(textbookId);
  114. }});
  115. }
  116. }
  117. isSuccess = this.saveBatch(newBaseClassCourseList);
  118. return isSuccess;
  119. //baseClassCourseMapper.insertClassCourseTextbookCombinations(newClassId, sourceClassId, semester);
  120. }
  121. @Override
  122. public Map<String, Map<String, Object>> getSemesterTree() {
  123. List<Map<String, Object>> semesterData = baseClassCourseMapper.getAllSemesterNames();
  124. Map<String, Map<String, Object>> tree = new TreeMap<>();
  125. for (Map<String, Object> data : semesterData) {
  126. String name = (String) data.get("name");
  127. String[] parts = name.split("年");
  128. String year = parts[0]; // 年份
  129. String semesterType = parts[1].substring(0, parts[1].length() - 1); // 学期类型(春期/秋期)
  130. Long id = Long.parseLong(data.get("id").toString());
  131. if (!tree.containsKey(year + "年")) {
  132. tree.put(year + "年", new HashMap<>());
  133. }
  134. Map<String, Object> yearMap = tree.get(year + "年");
  135. if (semesterType.equals("春")) {
  136. yearMap.put("springName", name);
  137. yearMap.put("springId", id);
  138. } else if (semesterType.equals("秋")) {
  139. yearMap.put("autumnName", name);
  140. yearMap.put("autumnId", id);
  141. }
  142. }
  143. return tree;
  144. }
  145. @Override
  146. public Long GetClassIdByName(String name){
  147. return baseClassCourseMapper.getClassIdByName(name);
  148. }
  149. @Override
  150. public Long GetCourseIdByName(String name){
  151. return baseClassCourseMapper.getCourseIdByName(name);
  152. }
  153. @Override
  154. public Long GetTextbookIdByName(String name){
  155. return baseClassCourseMapper.getBookIdByName(name);
  156. }
  157. @Override
  158. public Long GetBaseSemesterIdByName(String name) {
  159. return baseClassCourseMapper.getBaseSemesterIdByName(name);
  160. }
  161. @Override
  162. public boolean checkExits(Long classId,Long courseId,Long textbookId){
  163. return baseClassCourseMapper.checkExits(classId, courseId, textbookId);
  164. }
  165. }