TeacherCourseScheduleController.java 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. package com.ym.mec.teacher.controller;
  2. import com.ym.mec.auth.api.client.SysUserFeignService;
  3. import com.ym.mec.auth.api.entity.SysUser;
  4. import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
  5. import com.ym.mec.biz.dal.dto.CourseScheduleDto;
  6. import com.ym.mec.biz.dal.entity.CourseSchedule;
  7. import com.ym.mec.biz.dal.entity.SysConfig;
  8. import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
  9. import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
  10. import com.ym.mec.biz.dal.page.CourseScheduleQueryInfo;
  11. import com.ym.mec.biz.dal.page.EndCourseScheduleQueryInfo;
  12. import com.ym.mec.biz.dal.page.StudentAttendanceQueryInfo;
  13. import com.ym.mec.biz.service.CourseScheduleService;
  14. import com.ym.mec.biz.service.StudentAttendanceService;
  15. import com.ym.mec.biz.service.SysConfigService;
  16. import com.ym.mec.common.controller.BaseController;
  17. import io.swagger.annotations.Api;
  18. import io.swagger.annotations.ApiOperation;
  19. import io.swagger.annotations.ApiParam;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.http.HttpStatus;
  22. import org.springframework.http.MediaType;
  23. import org.springframework.web.bind.annotation.*;
  24. import java.util.*;
  25. /**
  26. * @Author Joburgess
  27. * @Date 2019/9/27
  28. */
  29. @Api(tags = "课程计划服务")
  30. @RequestMapping("teacherCourseSchedule")
  31. @RestController
  32. public class TeacherCourseScheduleController extends BaseController {
  33. @Autowired
  34. private CourseScheduleService scheduleService;
  35. @Autowired
  36. private StudentAttendanceService studentAttendanceService;
  37. @Autowired
  38. private SysUserFeignService sysUserFeignService;
  39. @Autowired
  40. private SysConfigService sysConfigService;
  41. @ApiOperation(value = "根据月份获取该月有课的日期")
  42. @GetMapping("/getCourseScheduleDateByMonth")
  43. public Object getCourseScheduleDateByMonth(@ApiParam(value = "月份", required = true) @RequestParam Date month,
  44. @ApiParam(value = "课程类型") String type) {
  45. if(Objects.isNull(month)){
  46. return failed(HttpStatus.FORBIDDEN, "请指定日期!");
  47. }
  48. return succeed(scheduleService.getCourseScheduleDateByTeacher(month,type));
  49. }
  50. @ApiOperation(value = "根据日期获取当日排课")
  51. @GetMapping("/getCourseSchedulesWithDate")
  52. public Object getCourseSchedulesWithDate(@ApiParam(value = "日期", required = true) Date date,
  53. @ApiParam(value = "课程类型") String type){
  54. if(Objects.isNull(date)){
  55. return failed("请指定日期!");
  56. }
  57. SysUser user = sysUserFeignService.queryUserInfo();
  58. if(null==user){
  59. return failed(HttpStatus.FORBIDDEN, "请登录");
  60. }
  61. SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE);
  62. SysConfig sysConfigVip = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE_VIP);
  63. SysConfig studentAttendanceAfterTimeConfig = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_BEFOR_COURSE_START_TIME_RANGE_VIP);
  64. List<CourseScheduleDto> teacherCourseSchedulesWithDate = scheduleService.getTeacherCourseSchedulesWithDate(user.getId(),date,type);
  65. Map<String,Object> result = new HashMap<>();
  66. result.put("rows",teacherCourseSchedulesWithDate);
  67. result.put("appealHoursRange",4);
  68. result.put("enableStudentAttendanceTimeRange",sysConfig.getParanValue(Integer.class));
  69. result.put("enableStudentAttendanceTimeRangeVip",sysConfigVip.getParanValue(Integer.class));
  70. result.put("joinRoomBeforeTime",studentAttendanceAfterTimeConfig.getParanValue(Integer.class));
  71. return succeed(result);
  72. }
  73. @ApiOperation(value = "根据月份获取该月历史有课的日期")
  74. @GetMapping("/getHistoryCourseScheduleDateByMonth")
  75. public Object getHistoryCourseScheduleDateByTeacher(@ApiParam(value = "月份", required = true) @RequestParam Date month) {
  76. SysUser user = sysUserFeignService.queryUserInfo();
  77. if(null==user){
  78. return failed(HttpStatus.FORBIDDEN, "请登录");
  79. }
  80. if(Objects.isNull(month)){
  81. return failed(HttpStatus.FORBIDDEN, "请指定日期!");
  82. }
  83. return succeed(scheduleService.getHistoryCourseScheduleDateByTeacher(user.getId(),month));
  84. }
  85. @ApiOperation(value = "根据日期获取当日历史课程")
  86. @GetMapping("/getHistoryCourseSchedulesWithDate")
  87. public Object getHistoryCourseSchedulesWithDate(@ApiParam(value = "日期", required = true) Date date){
  88. if(Objects.isNull(date)){
  89. return failed("请指定日期!");
  90. }
  91. SysUser user = sysUserFeignService.queryUserInfo();
  92. if(null==user){
  93. return failed(HttpStatus.FORBIDDEN, "请登录");
  94. }
  95. List<CourseScheduleDto> teacherCourseSchedulesWithDate = scheduleService.getTeacherHistoryCourseSchedulesWithDate(user.getId(),date);
  96. Map<String,Object> result = new HashMap<>();
  97. result.put("rows",teacherCourseSchedulesWithDate);
  98. result.put("appealDaysRange",1);
  99. return succeed(result);
  100. }
  101. @ApiOperation(value = "根据课程ID查询打卡界面课程详情")
  102. @GetMapping("/getCurrentCourseDetail")
  103. public Object getCurrentCourseDetail(Long courseID){
  104. if(Objects.isNull(courseID)){
  105. return failed("请指定课程!");
  106. }
  107. return succeed(scheduleService.getCurrentCourseDetail(courseID));
  108. }
  109. @ApiOperation(value = "获取老师指定班级的排课")
  110. @GetMapping("/queryTeacherClassCourseSchedule")
  111. public Object queryTeacherClassCourseSchedule(CourseScheduleQueryInfo queryInfo){
  112. return succeed(scheduleService.queryTeacherClassCourseSchedule(queryInfo));
  113. }
  114. @ApiOperation(value = "获取点名详情头部信息")
  115. @GetMapping("/findCourseAttendanceDetailHeadInfo")
  116. public Object findCourseAttendanceDetailHeadInfo(Long courseScheduleId){
  117. return succeed(scheduleService.findCourseAttendanceDetailHeadInfo(courseScheduleId));
  118. }
  119. @ApiOperation(value = "根据课程获取当前课程的学生列表")
  120. @GetMapping("/getCurrentCourseStudents")
  121. public Object getCurrentCourseStudents(StudentAttendanceQueryInfo queryInfo){
  122. if(Objects.isNull(queryInfo.getClassGroupId())){
  123. return failed("请指定班级!");
  124. }
  125. queryInfo.setFilterStatus(StudentAttendanceStatusEnum.DROP_OUT);
  126. return succeed(studentAttendanceService.getCurrentCourseStudents(queryInfo));
  127. }
  128. @ApiOperation(value = "课时调整")
  129. @PostMapping(value = "/classStartDateAdjust",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
  130. public Object classStartDateAdjust(ClassDateAdjustDto classDateAdjustDto){
  131. if(Objects.isNull(classDateAdjustDto.getId())){
  132. return failed("请指定课程!");
  133. }
  134. if(classDateAdjustDto.getStartClassTime().before(new Date())){
  135. return failed("课程开始时间不能小于当前时间");
  136. }
  137. CourseSchedule oldCourseSchedule = scheduleService.get(classDateAdjustDto.getId());
  138. if(Objects.isNull(oldCourseSchedule)){
  139. return failed("未找到指定课程");
  140. }
  141. if(Objects.isNull(classDateAdjustDto.getClassGroupId())){
  142. classDateAdjustDto.setClassGroupId(oldCourseSchedule.getClassGroupId());
  143. }
  144. List<CourseSchedule> courseSchedules=new ArrayList<>();
  145. courseSchedules.add(classDateAdjustDto);
  146. scheduleService.courseAdjust(courseSchedules);
  147. return succeed();
  148. }
  149. @ApiOperation(value = "课时交换")
  150. @PostMapping(value = "/courseSwap",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
  151. public Object courseSwap(Long courseScheduleId1,Long courseScheduleId2){
  152. if(Objects.isNull(courseScheduleId1)||Objects.isNull(courseScheduleId2)){
  153. return failed("请指定课程!");
  154. }
  155. scheduleService.courseSwap(courseScheduleId1,courseScheduleId2);
  156. return succeed();
  157. }
  158. @GetMapping("/statisticsInfo")
  159. @ApiOperation("历史考勤统计-头信息")
  160. public Object getStatisticsInfo(Integer classGroupId) {
  161. return succeed(studentAttendanceService.getStatisticsInfo(classGroupId));
  162. }
  163. @GetMapping("/statisticsList")
  164. @ApiOperation("历史考勤统计-考勤列表")
  165. public Object statisticsList(CourseHomeworkQueryInfo queryInfo) {
  166. return succeed(studentAttendanceService.statisticsList(queryInfo));
  167. }
  168. @ApiOperation(value = "终极课表获取")
  169. @GetMapping("/superFindCourseSchedules")
  170. public Object superFindCourseSchedules(EndCourseScheduleQueryInfo queryInfo){
  171. return succeed(scheduleService.endFindCourseSchedules(queryInfo));
  172. }
  173. }