ClassTimeCalendarServiceImpl.java 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. package com.xjrsoft.module.classtime.service.impl;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.github.yulichang.base.MPJBaseServiceImpl;
  5. import com.xjrsoft.common.enums.CourseAdjustTypeEnum;
  6. import com.xjrsoft.common.exception.MyException;
  7. import com.xjrsoft.module.classtime.dto.AddClassTimeCalendarDto;
  8. import com.xjrsoft.module.classtime.entity.ClassTimeCalendar;
  9. import com.xjrsoft.module.classtime.mapper.ClassTimeCalendarMapper;
  10. import com.xjrsoft.module.classtime.service.IClassTimeCalendarService;
  11. import com.xjrsoft.module.courseTable.entity.CourseTable;
  12. import com.xjrsoft.module.courseTable.service.ICourseTableService;
  13. import com.xjrsoft.module.schedule.entity.CourseTableBak;
  14. import com.xjrsoft.module.schedule.service.ICourseTableBakService;
  15. import lombok.AllArgsConstructor;
  16. import org.springframework.stereotype.Service;
  17. import java.time.DayOfWeek;
  18. import java.util.ArrayList;
  19. import java.util.Arrays;
  20. import java.util.Date;
  21. import java.util.List;
  22. import java.util.stream.Collectors;
  23. /**
  24. * @title: 节假日调课设置
  25. * @Author dzx
  26. * @Date: 2024-09-26
  27. * @Version 1.0
  28. */
  29. @Service
  30. @AllArgsConstructor
  31. public class ClassTimeCalendarServiceImpl extends MPJBaseServiceImpl<ClassTimeCalendarMapper, ClassTimeCalendar> implements IClassTimeCalendarService {
  32. private final ICourseTableService courseTableService;
  33. private final ICourseTableBakService courseTableBakService;
  34. @Override
  35. public Boolean add(AddClassTimeCalendarDto dto) {
  36. try {
  37. ClassTimeCalendar classTimeCalendar = BeanUtil.toBean(dto, ClassTimeCalendar.class);
  38. //1、查询补课日期的数据,将日期设置为补班日期然后新增
  39. List<CourseTable> list = courseTableService.list(
  40. new QueryWrapper<CourseTable>().lambda()
  41. .eq(CourseTable::getScheduleDate, dto.getReplaceDate())
  42. .in(dto.getCoverType() == 1, CourseTable::getTimeNumber, Arrays.asList(dto.getTimePeriod().split(",")))
  43. );
  44. if(list.isEmpty()){
  45. throw new MyException("未能查询到补课日期那天的课表信息,请联系管理员");
  46. }
  47. classTimeCalendar.setCreateDate(new Date());
  48. boolean isSuccess = this.save(classTimeCalendar);
  49. //2、删除补班日期的课表数据,包括调课和顶课,并肩删除的数据进行备份
  50. List<CourseTable> deleteList = courseTableService.list(
  51. new QueryWrapper<CourseTable>().lambda()
  52. .eq(CourseTable::getScheduleDate, dto.getSupplementDate())
  53. .in(dto.getCoverType() == 1, CourseTable::getTimeNumber, Arrays.asList(dto.getTimePeriod().split(",")))
  54. );
  55. List<CourseTableBak> bakList = new ArrayList<>();
  56. for (CourseTable courseTable : deleteList) {
  57. CourseTableBak tableBak = BeanUtil.toBean(courseTable, CourseTableBak.class);
  58. tableBak.setWfCourseAdjustId(classTimeCalendar.getId());
  59. bakList.add(tableBak);
  60. }
  61. courseTableBakService.saveBatch(bakList);
  62. courseTableService.removeBatchByIds(deleteList.stream().map(CourseTable::getId).collect(Collectors.toList()));
  63. //3、将补课日期的数据查询出来,将日期改为补班日期进行新增
  64. List<CourseTable> insertList = new ArrayList<>();
  65. for (CourseTable courseTable : list) {
  66. courseTable.setId(null);
  67. courseTable.setWeeks(getNumberDayOfWeek(dto.getSupplementDate().getDayOfWeek()));
  68. courseTable.setWeeksCn(getChineseDayOfWeek(dto.getSupplementDate().getDayOfWeek()));
  69. courseTable.setScheduleDate(dto.getSupplementDate());
  70. courseTable.setAdjustType(CourseAdjustTypeEnum.courseReplace.getCode());
  71. insertList.add(courseTable);
  72. }
  73. courseTableService.saveBatch(insertList);
  74. return isSuccess;
  75. }catch (Exception e){
  76. log.error(e.getMessage(), e);
  77. if(e.getClass().equals(MyException.class)){
  78. throw new MyException(e.getMessage());
  79. }else{
  80. throw new MyException("添加出错,请联系管理员");
  81. }
  82. }
  83. }
  84. String getChineseDayOfWeek(DayOfWeek dayOfWeek) {
  85. switch (dayOfWeek) {
  86. case MONDAY:
  87. return "星期一";
  88. case TUESDAY:
  89. return "星期二";
  90. case WEDNESDAY:
  91. return "星期三";
  92. case THURSDAY:
  93. return "星期四";
  94. case FRIDAY:
  95. return "星期五";
  96. case SATURDAY:
  97. return "星期六";
  98. case SUNDAY:
  99. return "星期天";
  100. default:
  101. return "";
  102. }
  103. }
  104. Integer getNumberDayOfWeek(DayOfWeek dayOfWeek) {
  105. switch (dayOfWeek) {
  106. case MONDAY:
  107. return 1;
  108. case TUESDAY:
  109. return 2;
  110. case WEDNESDAY:
  111. return 3;
  112. case THURSDAY:
  113. return 4;
  114. case FRIDAY:
  115. return 5;
  116. case SATURDAY:
  117. return 6;
  118. case SUNDAY:
  119. return 7;
  120. default:
  121. return null;
  122. }
  123. }
  124. @Override
  125. public Boolean cancel(Long id) {
  126. try{
  127. ClassTimeCalendar calendar = this.getById(id);
  128. //1、作废后,删除新增的补班课表数据
  129. courseTableService.remove(
  130. new QueryWrapper<CourseTable>().lambda()
  131. .eq(CourseTable::getScheduleDate, calendar.getSupplementDate())
  132. .eq(CourseTable::getAdjustType, CourseAdjustTypeEnum.courseReplace.getCode())
  133. );
  134. //查询出来备份的数据,并恢复到课表中
  135. List<CourseTableBak> list = courseTableBakService.list(
  136. new QueryWrapper<CourseTableBak>().lambda()
  137. .eq(CourseTableBak::getWfCourseAdjustId, calendar.getId())
  138. );
  139. List<CourseTable> insertList = new ArrayList<>();
  140. for (CourseTableBak courseTable : list) {
  141. CourseTable table = BeanUtil.toBean(courseTable, CourseTable.class);
  142. insertList.add(table);
  143. }
  144. courseTableService.saveBatch(insertList);
  145. calendar.setStatus(2);
  146. calendar.setModifyDate(new Date());
  147. return this.updateById(calendar);
  148. }catch (Exception e){
  149. log.error(e.getMessage(), e);
  150. if(e.getClass().equals(MyException.class)){
  151. throw new MyException(e.getMessage());
  152. }else{
  153. throw new MyException("添加出错,请联系管理员");
  154. }
  155. }
  156. }
  157. }