TeacherCourseScheduleController.java 9.0 KB

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