CourseTableServiceImpl.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304
  1. package com.ruoyi.system.service.impl;
  2. import java.util.*;
  3. import com.ruoyi.common.core.domain.AjaxResult;
  4. import com.ruoyi.common.core.redis.RedisCache;
  5. import com.ruoyi.common.utils.DateUtils;
  6. import com.ruoyi.common.utils.StringUtils;
  7. import com.ruoyi.system.domain.CourseChange;
  8. import com.ruoyi.system.domain.CourseTableTime;
  9. import com.ruoyi.system.mapper.CourseChangeMapper;
  10. import com.ruoyi.system.mapper.CourseTableTimeMapper;
  11. import lombok.SneakyThrows;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.stereotype.Service;
  14. import com.ruoyi.system.mapper.CourseTableMapper;
  15. import com.ruoyi.system.domain.CourseTable;
  16. import com.ruoyi.system.service.ICourseTableService;
  17. /**
  18. * 课程Service业务层处理
  19. *
  20. * @author ruoyi
  21. * @date 2023-05-24
  22. */
  23. @Service
  24. public class CourseTableServiceImpl implements ICourseTableService {
  25. @Autowired
  26. private CourseTableMapper courseTableMapper;
  27. @Autowired
  28. private CourseTableTimeMapper courseTableTimeMapper;
  29. @Autowired
  30. private RedisCache redisCache;
  31. @Autowired
  32. private CourseChangeMapper courseChangeMapper;
  33. /**
  34. * 查询课程
  35. *
  36. * @param id 课程主键
  37. * @return 课程
  38. */
  39. @Override
  40. public CourseTable selectCourseTableById(Long id) {
  41. return courseTableMapper.selectCourseTableById(id);
  42. }
  43. /**
  44. * 查询课程列表
  45. *
  46. * @param courseTable 课程
  47. * @return 课程
  48. */
  49. @SneakyThrows
  50. @Override
  51. public List<CourseTable> selectCourseTableList(CourseTable courseTable) {
  52. if(StringUtils.isEmpty(courseTable.getClassId()) || StringUtils.isEmpty(courseTable.getSchoolId())){
  53. return new ArrayList<>();
  54. }
  55. List<CourseTable> courseTableList = courseTableMapper.selectCourseTableList(courseTable);
  56. //获取本周一和本周五的时间
  57. String fist = DateUtils.getTimeIntervalOne(new Date());
  58. String five = DateUtils.getTimeIntervalFive(fist);
  59. List<CourseChange> courseChangeList = courseChangeMapper.selectCourseChangeListByEdit(courseTable.getClassId(), fist, five);
  60. if (courseChangeList == null || courseChangeList.size() <=0){
  61. return courseTableList;
  62. }
  63. for (CourseTable table : courseTableList) {
  64. changeCourseTable(table,courseChangeList,fist,five);
  65. }
  66. return courseTableList;
  67. }
  68. @SneakyThrows
  69. private void changeCourseTable(CourseTable table, List<CourseChange> courseChangeList, String fist, String five) {
  70. String format = "yyyy-MM-dd";
  71. Set<Long> classNum = new HashSet<>();
  72. for (CourseChange courseChange : courseChangeList) {
  73. //调课的时间是否在本周
  74. if(DateUtils.isClass(fist,five,DateUtils.dateTime(courseChange.getSubjectTime()),format)){
  75. if(StringUtils.equals(courseChange.getSubjectWeek(),table.getWeek())){
  76. classNum.add(Long.valueOf(courseChange.getIsNum()));
  77. //第几节课
  78. if(StringUtils.equals("1",courseChange.getIsNum())){
  79. table.setOneClass(courseChange.getBeSubject());
  80. table.setOneTeacher(courseChange.getBePersonnel());
  81. }else if(StringUtils.equals("2",courseChange.getIsNum())){
  82. table.setTwoClass(courseChange.getBeSubject());
  83. table.setTwoTeacher(courseChange.getBePersonnel());
  84. }else if(StringUtils.equals("3",courseChange.getIsNum())){
  85. table.setThreeClass(courseChange.getBeSubject());
  86. table.setThreeTeacher(courseChange.getBePersonnel());
  87. }else if(StringUtils.equals("4",courseChange.getIsNum())){
  88. table.setFourClass(courseChange.getBeSubject());
  89. table.setFourTeacher(courseChange.getBePersonnel());
  90. }else if(StringUtils.equals("5",courseChange.getIsNum())){
  91. table.setFiveClass(courseChange.getBeSubject());
  92. table.setFiveTeacher(courseChange.getBePersonnel());
  93. }else if(StringUtils.equals("6",courseChange.getIsNum())){
  94. table.setSixClass(courseChange.getBeSubject());
  95. table.setSixTeacher(courseChange.getBePersonnel());
  96. }else if(StringUtils.equals("7",courseChange.getIsNum())){
  97. table.setSevenClass(courseChange.getBeSubject());
  98. table.setSevenTeacher(courseChange.getBePersonnel());
  99. }else if(StringUtils.equals("8",courseChange.getIsNum())){
  100. table.setEightClass(courseChange.getBeSubject());
  101. table.setEightTeacher(courseChange.getBePersonnel());
  102. }
  103. }
  104. }
  105. //被调课是否在本周
  106. if(DateUtils.isClass(fist,five,DateUtils.dateTime(courseChange.getBeSubjectTime()),format)) {
  107. if(StringUtils.equals(courseChange.getWeek(),table.getWeek())){
  108. classNum.add(Long.valueOf(courseChange.getBeIsNum()));
  109. //第几节课
  110. if(StringUtils.equals("1",courseChange.getBeIsNum())){
  111. table.setOneClass(courseChange.getSubject());
  112. table.setOneTeacher(courseChange.getApplyName());
  113. }else if(StringUtils.equals("2",courseChange.getBeIsNum())){
  114. table.setTwoClass(courseChange.getSubject());
  115. table.setTwoTeacher(courseChange.getApplyName());
  116. }else if(StringUtils.equals("3",courseChange.getBeIsNum())){
  117. table.setThreeClass(courseChange.getSubject());
  118. table.setThreeTeacher(courseChange.getApplyName());
  119. }else if(StringUtils.equals("4",courseChange.getBeIsNum())){
  120. table.setFourClass(courseChange.getSubject());
  121. table.setFourTeacher(courseChange.getApplyName());
  122. }else if(StringUtils.equals("5",courseChange.getBeIsNum())){
  123. table.setFiveClass(courseChange.getSubject());
  124. table.setFiveTeacher(courseChange.getApplyName());
  125. }else if(StringUtils.equals("6",courseChange.getBeIsNum())){
  126. table.setSixClass(courseChange.getSubject());
  127. table.setSixTeacher(courseChange.getApplyName());
  128. }else if(StringUtils.equals("7",courseChange.getBeIsNum())){
  129. table.setSevenClass(courseChange.getSubject());
  130. table.setSevenTeacher(courseChange.getApplyName());
  131. }else if(StringUtils.equals("8",courseChange.getBeIsNum())){
  132. table.setEightClass(courseChange.getSubject());
  133. table.setEightTeacher(courseChange.getApplyName());
  134. }
  135. }
  136. }
  137. }
  138. table.setClassNum(classNum);
  139. }
  140. /**
  141. * 新增课程
  142. *
  143. * @param courseTable 课程
  144. * @return 结果
  145. */
  146. @Override
  147. public AjaxResult insertCourseTable(CourseTable courseTable) {
  148. CourseTable table = new CourseTable();
  149. table.setSchoolId(courseTable.getSchoolId());
  150. table.setClassId(courseTable.getClassId());
  151. table.setWeek(courseTable.getWeek());
  152. List<CourseTable> courseTableList = courseTableMapper.selectCourseTableList(table);
  153. if(courseTableList!=null && courseTableList.size()>0){
  154. return AjaxResult.error("当前课表已存在,请前去修改");
  155. }
  156. courseTable.setCreateTime(DateUtils.getNowDate());
  157. int rows = courseTableMapper.insertCourseTable(courseTable);
  158. return rows > 0 ? AjaxResult.success() : AjaxResult.error();
  159. }
  160. /**
  161. * 修改课程
  162. *
  163. * @param courseTable 课程
  164. * @return 结果
  165. */
  166. @Override
  167. public int updateCourseTable(CourseTable courseTable) {
  168. courseTable.setUpdateTime(DateUtils.getNowDate());
  169. return courseTableMapper.updateCourseTable(courseTable);
  170. }
  171. /**
  172. * 批量删除课程
  173. *
  174. * @param ids 需要删除的课程主键
  175. * @return 结果
  176. */
  177. @Override
  178. public int deleteCourseTableByIds(Long[] ids) {
  179. return courseTableMapper.deleteCourseTableByIds(ids);
  180. }
  181. /**
  182. * 删除课程信息
  183. *
  184. * @param id 课程主键
  185. * @return 结果
  186. */
  187. @Override
  188. public int deleteCourseTableById(Long id) {
  189. return courseTableMapper.deleteCourseTableById(id);
  190. }
  191. @SneakyThrows
  192. @Override
  193. public AjaxResult now(Long schoolId, Long classId) {
  194. //SysUser user = SecurityUtils.getLoginUser().getUser();
  195. Map<String, Object> map = new HashMap<>();
  196. map.put("teacher", "");
  197. map.put("subject", "");
  198. //家长端查询下课时间
  199. String key = schoolId + ":" + classId;
  200. //key = 学校id:班级id
  201. //Redis根据key键,查询对应的值
  202. String xiakeTime = "";
  203. String value = redisCache.getCacheObject(key);
  204. if (StringUtils.isNotEmpty(value)) {
  205. String[] split = value.split(":");
  206. //下课时间
  207. xiakeTime = split[1];
  208. }
  209. map.put("time", xiakeTime);
  210. //获取当前时间
  211. String nowTime = DateUtils.getTime();
  212. //判断当天是周几
  213. int dayForWeek = DateUtils.dayForWeek(nowTime);
  214. if (dayForWeek == 6 || dayForWeek == 7) {
  215. return AjaxResult.success(map);
  216. }
  217. //获取当前账号所属学校时间表
  218. CourseTableTime courseTableTime = courseTableTimeMapper.selectCourseTableTimeBySchoolId(schoolId);
  219. if (courseTableTime == null) {
  220. return AjaxResult.success(map);
  221. }
  222. //判断当前时间是第几节课
  223. int index = isClass(courseTableTime);
  224. if (index == 0) {
  225. return AjaxResult.success(map);
  226. }
  227. //获取当前班级课程
  228. CourseTable courseTable = courseTableMapper.selectCourseTableByClassIdAndWeek(classId, dayForWeek);
  229. if (courseTable == null) {
  230. return AjaxResult.success(map);
  231. }
  232. if (index == 1) {
  233. map.put("teacher", courseTable.getOneTeacher());
  234. map.put("subject", courseTable.getOneClass());
  235. } else if (index == 2) {
  236. map.put("teacher", courseTable.getTwoTeacher());
  237. map.put("subject", courseTable.getTwoClass());
  238. } else if (index == 3) {
  239. map.put("teacher", courseTable.getThreeTeacher());
  240. map.put("subject", courseTable.getThreeClass());
  241. } else if (index == 4) {
  242. map.put("teacher", courseTable.getFourTeacher());
  243. map.put("subject", courseTable.getFourClass());
  244. } else if (index == 5) {
  245. map.put("teacher", courseTable.getFiveTeacher());
  246. map.put("subject", courseTable.getFiveClass());
  247. } else if (index == 6) {
  248. map.put("teacher", courseTable.getSixTeacher());
  249. map.put("subject", courseTable.getSixClass());
  250. } else if (index == 7) {
  251. map.put("teacher", courseTable.getSevenTeacher());
  252. map.put("subject", courseTable.getSevenClass());
  253. } else if (index == 8) {
  254. map.put("teacher", courseTable.getEightTeacher());
  255. map.put("subject", courseTable.getEightClass());
  256. }
  257. return AjaxResult.success(map);
  258. }
  259. @SneakyThrows
  260. private int isClass(CourseTableTime courseTableTime) {
  261. //获取当前时间
  262. String nowTime = DateUtils.getNowTime();
  263. int index = 0;
  264. if (StringUtils.isNotEmpty(courseTableTime.getOneStartTime()) && DateUtils.isClass(courseTableTime.getOneStartTime(), courseTableTime.getOneEndTime(), nowTime, "HH:mm")) {
  265. index = 1;
  266. } else if (StringUtils.isNotEmpty(courseTableTime.getTwoStartTime()) && DateUtils.isClass(courseTableTime.getTwoStartTime(), courseTableTime.getTwoEndTime(), nowTime, "HH:mm")) {
  267. index = 2;
  268. } else if (StringUtils.isNotEmpty(courseTableTime.getThreeStartTime()) && DateUtils.isClass(courseTableTime.getThreeStartTime(), courseTableTime.getThreeEndTime(), nowTime, "HH:mm")) {
  269. index = 3;
  270. } else if (StringUtils.isNotEmpty(courseTableTime.getFourStartTime()) && DateUtils.isClass(courseTableTime.getFourStartTime(), courseTableTime.getFourEndTime(), nowTime, "HH:mm")) {
  271. index = 4;
  272. } else if (StringUtils.isNotEmpty(courseTableTime.getFiveStartTime()) && DateUtils.isClass(courseTableTime.getFiveStartTime(), courseTableTime.getFiveEndTime(), nowTime, "HH:mm")) {
  273. index = 5;
  274. } else if (StringUtils.isNotEmpty(courseTableTime.getSixStartTime()) && DateUtils.isClass(courseTableTime.getSixStartTime(), courseTableTime.getSixEndTime(), nowTime, "HH:mm")) {
  275. index = 6;
  276. } else if (StringUtils.isNotEmpty(courseTableTime.getSevenStartTime()) && DateUtils.isClass(courseTableTime.getSevenStartTime(), courseTableTime.getSevenEndTime(), nowTime, "HH:mm")) {
  277. index = 7;
  278. } else if (StringUtils.isNotEmpty(courseTableTime.getEightStartTime()) && DateUtils.isClass(courseTableTime.getEightStartTime(), courseTableTime.getEightEndTime(), nowTime, "HH:mm")) {
  279. index = 8;
  280. }
  281. return index;
  282. }
  283. }