package com.ym.mec.teacher.controller; import com.ym.mec.auth.api.client.SysUserFeignService; import com.ym.mec.auth.api.entity.SysUser; import com.ym.mec.biz.dal.dto.ClassDateAdjustDto; import com.ym.mec.biz.dal.dto.CourseScheduleDto; import com.ym.mec.biz.dal.entity.CourseSchedule; import com.ym.mec.biz.dal.entity.SysConfig; import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum; import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo; import com.ym.mec.biz.dal.page.CourseScheduleQueryInfo; import com.ym.mec.biz.dal.page.EndCourseScheduleQueryInfo; import com.ym.mec.biz.dal.page.StudentAttendanceQueryInfo; import com.ym.mec.biz.service.CourseScheduleService; import com.ym.mec.biz.service.StudentAttendanceService; import com.ym.mec.biz.service.SysConfigService; import com.ym.mec.common.controller.BaseController; import com.ym.mec.util.date.DateUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.apache.commons.lang3.time.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; import java.util.*; /** * @Author Joburgess * @Date 2019/9/27 */ @Api(tags = "课程计划服务") @RequestMapping("teacherCourseSchedule") @RestController public class TeacherCourseScheduleController extends BaseController { @Autowired private CourseScheduleService scheduleService; @Autowired private StudentAttendanceService studentAttendanceService; @Autowired private SysUserFeignService sysUserFeignService; @Autowired private SysConfigService sysConfigService; @ApiOperation(value = "根据月份获取该月有课的日期") @GetMapping("/getCourseScheduleDateByMonth") public Object getCourseScheduleDateByMonth(@ApiParam(value = "月份", required = true) @RequestParam Date month, @ApiParam(value = "课程类型", required = false) String type) { if(Objects.isNull(month)){ return failed(HttpStatus.FORBIDDEN, "请指定日期!"); } return succeed(scheduleService.getCourseScheduleDateByTeacher(month,type)); } @ApiOperation(value = "根据日期获取当日排课") @GetMapping("/getCourseSchedulesWithDate") public Object getCourseSchedulesWithDate(@ApiParam(value = "日期", required = true) Date date, @ApiParam(value = "课程类型") String type){ if(Objects.isNull(date)){ return failed("请指定日期!"); } SysUser user = sysUserFeignService.queryUserInfo(); if(null==user){ return failed(HttpStatus.FORBIDDEN, "请登录"); } SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE); List teacherCourseSchedulesWithDate = scheduleService.getTeacherCourseSchedulesWithDate(user.getId(),date,type); Map result = new HashMap<>(); result.put("rows",teacherCourseSchedulesWithDate); result.put("appealDaysRange",1); result.put("enableStudentAttendanceTimeRange",sysConfig.getParanValue(Integer.class)); return succeed(result); } @ApiOperation(value = "根据月份获取该月历史有课的日期") @GetMapping("/getHistoryCourseScheduleDateByMonth") public Object getHistoryCourseScheduleDateByTeacher(@ApiParam(value = "月份", required = true) @RequestParam Date month) { SysUser user = sysUserFeignService.queryUserInfo(); if(null==user){ return failed(HttpStatus.FORBIDDEN, "请登录"); } if(Objects.isNull(month)){ return failed(HttpStatus.FORBIDDEN, "请指定日期!"); } return succeed(scheduleService.getHistoryCourseScheduleDateByTeacher(user.getId(),month)); } @ApiOperation(value = "根据日期获取当日历史课程") @GetMapping("/getHistoryCourseSchedulesWithDate") public Object getHistoryCourseSchedulesWithDate(@ApiParam(value = "日期", required = true) Date date){ if(Objects.isNull(date)){ return failed("请指定日期!"); } SysUser user = sysUserFeignService.queryUserInfo(); if(null==user){ return failed(HttpStatus.FORBIDDEN, "请登录"); } List teacherCourseSchedulesWithDate = scheduleService.getTeacherHistoryCourseSchedulesWithDate(user.getId(),date); Map result = new HashMap<>(); result.put("rows",teacherCourseSchedulesWithDate); result.put("appealDaysRange",1); return succeed(result); } @ApiOperation(value = "根据课程ID查询打卡界面课程详情") @GetMapping("/getCurrentCourseDetail") public Object getCurrentCourseDetail(Long courseID){ if(Objects.isNull(courseID)){ return failed("请指定课程!"); } return succeed(scheduleService.getCurrentCourseDetail(courseID)); } @ApiOperation(value = "获取老师指定班级的排课") @GetMapping("/queryTeacherClassCourseSchedule") public Object queryTeacherClassCourseSchedule(CourseScheduleQueryInfo queryInfo){ return succeed(scheduleService.queryTeacherClassCourseSchedule(queryInfo)); } @ApiOperation(value = "获取点名详情头部信息") @GetMapping("/findCourseAttendanceDetailHeadInfo") public Object findCourseAttendanceDetailHeadInfo(Long courseScheduleId){ return succeed(scheduleService.findCourseAttendanceDetailHeadInfo(courseScheduleId)); } @ApiOperation(value = "根据课程获取当前课程的学生列表") @GetMapping("/getCurrentCourseStudents") public Object getCurrentCourseStudents(StudentAttendanceQueryInfo queryInfo){ if(Objects.isNull(queryInfo.getClassGroupId())){ return failed("请指定班级!"); } queryInfo.setFilterStatus(StudentAttendanceStatusEnum.DROP_OUT); return succeed(studentAttendanceService.getCurrentCourseStudents(queryInfo)); } @ApiOperation(value = "课时调整") @PostMapping(value = "/classStartDateAdjust",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public Object classStartDateAdjust(ClassDateAdjustDto classDateAdjustDto){ if(Objects.isNull(classDateAdjustDto.getId())){ return failed("请指定课程!"); } if(classDateAdjustDto.getStartClassTime().before(new Date())){ return failed("课程开始时间不能小于当前时间"); } CourseSchedule oldCourseSchedule = scheduleService.get(classDateAdjustDto.getId()); if(Objects.isNull(oldCourseSchedule)){ return failed("未找到指定课程"); } if(Objects.isNull(classDateAdjustDto.getClassGroupId())){ classDateAdjustDto.setClassGroupId(oldCourseSchedule.getClassGroupId()); } Date now=new Date(); if(DateUtils.isSameDay(now,oldCourseSchedule.getClassDate())){ return failed("不能调整今天的课程"); } Date tomorrow = DateUtil.addDays1(now, 1); if(DateUtils.isSameDay(tomorrow,oldCourseSchedule.getClassDate())){ Calendar calendar=Calendar.getInstance(); calendar.setTime(now); System.out.println(calendar.get(Calendar.HOUR_OF_DAY)); if(calendar.get(Calendar.HOUR_OF_DAY)>22){ return failed("当前时间不可对此课程进行课程调整"); } } List courseSchedules=new ArrayList<>(); courseSchedules.add(classDateAdjustDto); scheduleService.courseAdjust(courseSchedules); return succeed(); } @ApiOperation(value = "课时交换") @PostMapping(value = "/courseSwap",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public Object courseSwap(Long courseScheduleId1,Long courseScheduleId2){ if(Objects.isNull(courseScheduleId1)||Objects.isNull(courseScheduleId2)){ return failed("请指定课程!"); } scheduleService.courseSwap(courseScheduleId1,courseScheduleId2); return succeed(); } @GetMapping("/statisticsInfo") @ApiOperation("历史考勤统计-头信息") public Object getStatisticsInfo(Integer classGroupId) { return succeed(studentAttendanceService.getStatisticsInfo(classGroupId)); } @GetMapping("/statisticsList") @ApiOperation("历史考勤统计-考勤列表") public Object statisticsList(CourseHomeworkQueryInfo queryInfo) { return succeed(studentAttendanceService.statisticsList(queryInfo)); } @ApiOperation(value = "终极课表获取") @GetMapping("/superFindCourseSchedules") public Object superFindCourseSchedules(EndCourseScheduleQueryInfo queryInfo){ return succeed(scheduleService.endFindCourseSchedules(queryInfo)); } }