ScheduleMessageController.java 15 KB
package com.jevon.controller;

import com.jevon.model.*;
import com.jevon.service.*;
import com.jevon.utils.ExcelUtils;
import com.jevon.vo.BaseVo;
import com.jevon.vo.rep.*;
import com.jevon.vo.req.CourseClassReqVo;
import com.jevon.vo.req.GetClassCourseReqVo;
import com.jevon.vo.req.ScheduleIdReqVo;
import com.jevon.vo.req.SchoolIdReqVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author chen
 * @version 1.0
 * @date 2019/10/11 0011 14:00
 */
@RestController
@Api(value = "获取信息")
public class ScheduleMessageController {

    @Autowired
    ScheduleService scheduleService;

    @Autowired
    CourseService courseService;

    @Autowired
    ClassCourseService classCourseService;

    @Autowired
    ClassModelService classModelService;

    @Autowired
    JoinClassService joinClassService;

    @Autowired
    TeacherClassService teacherClassService;

    @ApiOperation("获取学校排课计划")
    @RequestMapping(value = "getScheduleList", method = RequestMethod.POST)
    public ScheduleListRepVo getScheduleList(@RequestBody SchoolIdReqVo schoolIdReqVo){
        ScheduleListRepVo scheduleListRepVo = new ScheduleListRepVo();
        scheduleListRepVo.setData(scheduleService.selectBySchool(schoolIdReqVo.getSchoolId()));
        return scheduleListRepVo;
    }

    @ApiOperation("获取学校下所有班级信息")
    @RequestMapping(value = "getClassList", method = RequestMethod.POST)
    public ClassRepVo getClassList(@RequestBody SchoolIdReqVo schoolIdReqVo){
        ClassRepVo classRepVo = new ClassRepVo();
        classRepVo.setData(classModelService.selectBySchoolId(schoolIdReqVo.getSchoolId()));
        return classRepVo;
    }

    @ApiOperation("获取学校课程")
    @RequestMapping(value = "getCourseList", method = RequestMethod.POST)
    public CourseRepVo getCourseList(@RequestBody ScheduleIdReqVo scheduleIdReqVo){
        CourseRepVo courseRepVo = new CourseRepVo();
        Schedule schedule = scheduleService.selectById(scheduleIdReqVo.getScheduleId());
        if(schedule == null){
            courseRepVo.setSuccess(false);
            courseRepVo.setMessage("请先创建计划");
            return courseRepVo;
        }
        courseRepVo.setData(courseService.selectBySchoolId(schedule.getSchoolId()));
        return courseRepVo;
    }

    @ApiOperation("获取要学习某个学科的班级集合")
    @RequestMapping(value = "getCourseClassList", method = RequestMethod.POST)
    public List<GetCourseClassListRepVo> getCourseClassList(@RequestBody CourseClassReqVo courseClassReqVo){
        List<GetCourseClassListRepVo> repVos = new ArrayList<>();
        Schedule schedule = scheduleService.selectById(courseClassReqVo.getScheduleId());
        if(schedule == null){
            return null;
        }
        TeacherClass search = new TeacherClass();
        search.setSchoolId(schedule.getSchoolId());
        search.setTeam(schedule.getTeam());
        String courseName =courseService.selectBySchoolIdAndCourseId(schedule.getSchoolId(),courseClassReqVo.getCourseId()).getCourseName();
        search.setCourseName(courseName);
        List<TeacherClass> list = teacherClassService.selectByCourseName(search);
        for(TeacherClass teacherClass : list){
            GetCourseClassListRepVo repVo = new GetCourseClassListRepVo();
            repVo.setClassId(teacherClass.getClassId());
            repVo.setClassName(classModelService.selectByPrimaryKey(teacherClass.getClassId()).getClassName());
            repVo.setCourseId(courseClassReqVo.getCourseId());
            repVo.setCourseName(courseName);
            repVo.setTeacherName(teacherClass.getTeacherName());
            repVos.add(repVo);
        }
        return repVos;
    }

    @ApiOperation("获取班级排课课程")
    @RequestMapping(value = "getClassCourseList", method = RequestMethod.POST)
    public ClassCourseRepVo getClassCourseList(@RequestBody GetClassCourseReqVo getClassCourseReqVo){
        ClassCourseRepVo classCourseRepVo = new ClassCourseRepVo();
        Schedule schedule = scheduleService.selectById(getClassCourseReqVo.getScheduleId());
        if(schedule == null){
            classCourseRepVo.setSuccess(false);
            classCourseRepVo.setMessage("请先创建计划");
            return classCourseRepVo;
        }
        ClassCourse search = new ClassCourse();
        search.setClassId(getClassCourseReqVo.getClassId());
        search.setSingleOrDouble(1);
        search.setTeam(schedule.getTeam());
        List<ClassCourse> list = classCourseService.selectByClassIdAndSingleOrDouble(search);
        classCourseRepVo.setData(list);

        int max = schedule.getMorning() + schedule.getAfternoon() + schedule.getNight() ;
        for(int i = 1 ; i < 6 ; i++){
            System.out.print("周"+i+"    ");
            for(int j = 1 ; j < max ; j++){
                System.out.print(getClassCourse(list,i,j).getCourseName() + "   ");
            }
            System.out.println();
        }
        return classCourseRepVo;
    }

    //查所在课表中 返回某天某节课
    private ClassCourse getClassCourse(List<ClassCourse> list  , int week , int courseNumber){
        ClassCourse result = null ;
        for(ClassCourse classCourse : list){
            if(classCourse.getWeek() == week && classCourse.getCourseNumber() == courseNumber){
                result = classCourse ;
                break;
            }
        }
        return result;
    }


    @ApiOperation("获取合班信息")
    @RequestMapping(value = "getJoinList", method = RequestMethod.POST)
    public JoinRepVo getJoinList(@RequestBody ScheduleIdReqVo scheduleIdReqVo){
        JoinRepVo joinRepVo = new JoinRepVo();
        Schedule schedule = scheduleService.selectById(scheduleIdReqVo.getScheduleId());
        JoinClass joinClass = new JoinClass();
        joinClass.setSchoolId(schedule.getSchoolId());
        joinClass.setTeam(schedule.getTeam());
        List<JoinClass> list = joinClassService.selectByCourse(joinClass);
        List<JoinDetail> joinDetails = new ArrayList<>();
        for(JoinClass temp : list){
            boolean flag = false ;
            ClassModel classModel = classModelService.selectByPrimaryKey(temp.getClassId());
            for(JoinDetail joinDetail : joinDetails){
                if(temp.getCourseGroup() == joinDetail.getCourseGroup()){
                    flag = true;
                    if(!joinDetail.getClassName().contains(classModel.getClassName())){
                        joinDetail.setClassName(joinDetail.getClassName()+","+classModel.getClassName());
                    }
                }
            }
            if(!flag){
                JoinDetail joinDetail = new JoinDetail();
                joinDetail.setCourseGroup(temp.getCourseGroup());
                joinDetail.setClassName(classModel.getClassName());
                joinDetail.setCourseName(temp.getCourseName());
                TeacherClass search = new TeacherClass();
                search.setSchoolId(schedule.getSchoolId());
                search.setTeam(schedule.getTeam());
                search.setClassId(temp.getClassId());
                search.setCourseName(temp.getCourseName());
                joinDetail.setTeacherName(teacherClassService.selectByCourseAndClass(search).getTeacherName());
                joinDetails.add(joinDetail);
            }
        }
        joinRepVo.setData(joinDetails);
        return joinRepVo;
    }

    @ApiOperation("获取导入任课信息")
    @RequestMapping(value = "getTeacherClassList", method = RequestMethod.POST)
    public TeacherCourseRepVo getTeacherClassList(@RequestBody ScheduleIdReqVo scheduleIdReqVo){
        TeacherCourseRepVo teacherCourseRepVo = new TeacherCourseRepVo();
        Schedule schedule = scheduleService.selectById(scheduleIdReqVo.getScheduleId());
        TeacherClass temp = new TeacherClass();
        temp.setSchoolId(schedule.getSchoolId());
        temp.setTeam(schedule.getTeam());
        List<ClassCourseVO> data = new ArrayList<>();
        List<String> courseNameList = new ArrayList<>();
        List<TeacherClass> teacherClasses = teacherClassService.selectBySchoolAndTeam(temp);
        for(TeacherClass teacherClass :teacherClasses){
            boolean isExist = false;
            if(!courseNameList.contains(teacherClass.getCourseName())){
                courseNameList.add(teacherClass.getCourseName());
            }
            for(ClassCourseVO classCourseVO : data){
                if(classCourseVO.getClassId() == teacherClass.getClassId()){
                    isExist = true ;
                    ClassCourseDetailVo classCourseDetailVo = new ClassCourseDetailVo(teacherClass);
                    List<ClassCourseDetailVo> classCourseDetailVos = classCourseVO.getList();
                    classCourseDetailVos.add(classCourseDetailVo);
                    classCourseVO.setAllCount(classCourseVO.getAllCount()+teacherClass.getTimes());
                    classCourseVO.setList(classCourseDetailVos);
                }
            }
            if(!isExist){
                ClassCourseVO classCourseVO = new ClassCourseVO();
                classCourseVO.setClassId(teacherClass.getClassId());
                classCourseVO.setAllCount(teacherClass.getTimes());
                classCourseVO.setClassName(classModelService.selectByPrimaryKey(teacherClass.getClassId()).getClassName());
                List<ClassCourseDetailVo> classCourseDetailVos = new ArrayList<>();
                classCourseDetailVos.add(new ClassCourseDetailVo(teacherClass));
                classCourseVO.setList(classCourseDetailVos);
                data.add(classCourseVO);
            }
        }
        teacherCourseRepVo.setData(data);
        teacherCourseRepVo.setCourseNameList(courseNameList);
        return teacherCourseRepVo;
    }

    @ApiOperation("获取主课,副科,公共课列表")
    @RequestMapping(value = "getCourseTypeList", method = RequestMethod.POST)
    public GetCourseTypeListRepVo getCourseTypeList(@RequestBody ScheduleIdReqVo scheduleIdReqVo){
        GetCourseTypeListRepVo getCourseTypeListRepVo = new GetCourseTypeListRepVo();
        List<CourseTypeListVO> data = new ArrayList<>();
        Schedule schedule = scheduleService.selectById(scheduleIdReqVo.getScheduleId());
        if(schedule == null){
            getCourseTypeListRepVo.setSuccess(false);
            getCourseTypeListRepVo.setMessage("请先创建计划");
            return getCourseTypeListRepVo;
        }
        for(int i = 1 ; i <=3 ; i++){
            CourseTypeListVO vo = new CourseTypeListVO();
            vo.setCourseType(i);
            switch (i){
                case 1 :
                    vo.setCourseTypeName("主课");
                    break;
                case 2:
                    vo.setCourseTypeName("副科");
                    break;
                case 3:
                    vo.setCourseTypeName("公共课");
                    break;
            }
            Course course = new Course();
            course.setSchoolId(schedule.getSchoolId());
            course.setCourseType(i);
            vo.setList(courseService.selectByCourse(course));
            data.add(vo);
        }
        getCourseTypeListRepVo.setData(data);
        getCourseTypeListRepVo.setScheduleId(schedule.getSchoolId());
        return getCourseTypeListRepVo;
    }

    @ApiOperation("获取未设置学科类型的科目")
    @RequestMapping(value = "getUnCourseList", method = RequestMethod.POST)
    public CourseRepVo getUnCourseList(@RequestBody ScheduleIdReqVo scheduleIdReqVo){
        CourseRepVo courseRepVo = new CourseRepVo();
        Schedule schedule = scheduleService.selectById(scheduleIdReqVo.getScheduleId());
        if(schedule == null){
            courseRepVo.setSuccess(false);
            courseRepVo.setMessage("请先创建计划");
            return courseRepVo;
        }
        Course course = new Course();
        course.setSchoolId(schedule.getSchoolId());
        course.setCourseType(0);
        courseRepVo.setData(courseService.selectByCourse(course));
        return courseRepVo;
    }

    @ApiOperation("删除设置的 主课 副科 公共课")
    @RequestMapping(value = "deleteCourseType", method = RequestMethod.POST)
    public BaseVo deleteCourseType(@RequestBody CourseClassReqVo courseClassReqVo){
        BaseVo baseVo = new BaseVo();
        Schedule schedule = scheduleService.selectById(courseClassReqVo.getScheduleId());
        if(schedule == null){
            baseVo.setSuccess(false);
            baseVo.setMessage("请先创建计划");
            return baseVo;
        }
        if(teacherClassService.selectHasSchedule(schedule.getSchoolId(),schedule.getTeam()) > 0){
            baseVo.setSuccess(false);
            baseVo.setMessage("已经排课,不能再删除");
            return baseVo;
        }
        courseService.updateCourseType(courseClassReqVo.getCourseId(),0,schedule.getSchoolId());
        return baseVo;
    }

    @ApiOperation("获取设置的作息  获取排课计划详情")
    @RequestMapping(value = "getSchedule", method = RequestMethod.POST)
    public Schedule getSchedule(@RequestBody ScheduleIdReqVo scheduleIdReqVo){
        Schedule schedule = scheduleService.selectById(scheduleIdReqVo.getScheduleId());
        return schedule;
    }

    @ApiOperation("导出模板")
    @RequestMapping(value = "export", method = RequestMethod.GET)
    public void export(int scheduleId , HttpServletRequest request, HttpServletResponse response){
        ExcelUtils excelUtils = new ExcelUtils();
        Schedule schedule = scheduleService.selectById(scheduleId);
        List<String> headList = new ArrayList<>();
        headList.add("年级");
        headList.add("班级");
        List<Course> courses = courseService.selectBySchoolId2(schedule.getSchoolId());
        for(Course course : courses){
            headList.add(course.getCourseName());
            headList.add("任课老师");

        }
        List<String> heardKey = new ArrayList<>();
        heardKey.add("grade");
        heardKey.add("class");
        List<Map<String , String >> data = new ArrayList<>();
        List<ClassModel> list = classModelService.selectBySchoolId(schedule.getSchoolId());
        for(ClassModel classModel : list){
            Map<String ,String> map = new HashMap<>();
            map.put("grade",classModel.getGrade());
            map.put("class",classModel.getClassName());
            data.add(map);
        }
        excelUtils.setHeardList(headList);
        excelUtils.setHeardKey(heardKey);
        excelUtils.setData(data);
        try{
            excelUtils.exportExport(request,response);
        }catch (Exception e){

        }
    }
}