ClassTimeCalendarServiceImpl.java 6.2 KB

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