diff --git a/src/main/java/com/jevon/controller/ScheduleController.java b/src/main/java/com/jevon/controller/ScheduleController.java index 8d166cd..5721630 100644 --- a/src/main/java/com/jevon/controller/ScheduleController.java +++ b/src/main/java/com/jevon/controller/ScheduleController.java @@ -506,7 +506,7 @@ public class ScheduleController { if(StringUtils.isBlank(classCourse.getCourseName())){ Course course = courseService.selectBySchoolIdAndCourseName(teacherClass.getSchoolId(),teacherClass.getCourseName()); //约束条件判断 - TeacherCourse result = checkConstraint(courseType,classCourse,teacherClass,course,singleOrDouble,week,courseNumber); + TeacherCourse result = checkConstraint(classCourse,teacherClass,course,singleOrDouble,week,courseNumber); if(result == null){ break; } @@ -524,7 +524,7 @@ public class ScheduleController { } if(functionTimes > 2){ //递归次数限制,防止无限循环,内存溢出,手动优化课程 - optimizeCourse(teacherClass,courseType); + optimizeCourse(teacherClass); }else{ if(times < teacherClass.getTimes()){ //优先时段中课程数 不够 @@ -635,15 +635,22 @@ public class ScheduleController { } //判断班级与老师的约束条件 - private TeacherCourse checkConstraint(int courseType , ClassCourse classCourse , TeacherClass teacherClass , + private TeacherCourse checkConstraint(ClassCourse classCourse , TeacherClass teacherClass , Course course , int singleOrDouble , int week , int courseNumber ){ classCourse.setCourseOpenId(course.getCourseId()); classCourse.setCourseName(teacherClass.getCourseName()); - //判断当天是否已经排该课程 主课一天2节,其他课一天1节 - if(courseType == 1 && classCourseService.selectCourseByClassIdAndWeek(classCourse) >= 2){ + //判断当天是否还能继续排课 + TeacherClass searchTeacher = new TeacherClass(); + searchTeacher.setSchoolId(teacherClass.getSchoolId()); + searchTeacher.setTeam(teacherClass.getTeam()); + searchTeacher.setClassId(teacherClass.getClassId()); + searchTeacher.setTeacherName(teacherClass.getTeacherName()); + searchTeacher.setCourseName(teacherClass.getCourseName()); + TeacherClass resultTeacherClass = teacherClassService.selectByTeacher(searchTeacher); + if(resultTeacherClass.getTimes() > 5 && classCourseService.selectCourseByClassIdAndWeek(classCourse) >= 2){ return null ; } - if(courseType != 1 && classCourseService.selectCourseByClassIdAndWeek(classCourse) >= 1){ + if(resultTeacherClass.getTimes() <= 5 && classCourseService.selectCourseByClassIdAndWeek(classCourse) >= 1){ return null ; } TeacherCourse searchTeacherCourse = new TeacherCourse(); @@ -664,9 +671,8 @@ public class ScheduleController { return result ; } - //课程冲突 ,调优 - private void optimizeCourse(TeacherClass teacherClass,int courseType){ + private void optimizeCourse(TeacherClass teacherClass){ int times = teacherClass.getTimes(); int maxCourseNumber = classCourseService.selectMaxCourseNumber(teacherClass.getSchoolId(),teacherClass.getTeam()) ; while (times > 0){ @@ -682,8 +688,18 @@ public class ScheduleController { weekChange = weekChange + 5; } List list = classCourseService.selectWeekCourse(classCourse.getClassId(),weekChange,classCourse.getSingleOrDouble(),teacherClass.getCourseName(),teacherClass.getTeam()); - //查询当天是否已经有该节课,扩大了 - if(list.size() > 1){ + //查询当天的课程还能继续派排课 + TeacherClass searchTeacher = new TeacherClass(); + searchTeacher.setSchoolId(teacherClass.getSchoolId()); + searchTeacher.setTeam(teacherClass.getTeam()); + searchTeacher.setClassId(teacherClass.getClassId()); + searchTeacher.setTeacherName(teacherClass.getTeacherName()); + searchTeacher.setCourseName(teacherClass.getCourseName()); + TeacherClass resultTeacherClass = teacherClassService.selectByTeacher(searchTeacher); + if(resultTeacherClass.getTimes() > 5 && list.size() >= 2){ + continue; + } + if(resultTeacherClass.getTimes() <= 5 && list.size() >= 1){ continue; } for(int j = -1 ; j<=1 ; j++){ diff --git a/src/main/java/com/jevon/controller/ScheduleInitController.java b/src/main/java/com/jevon/controller/ScheduleInitController.java index 2d83a05..e5206c1 100644 --- a/src/main/java/com/jevon/controller/ScheduleInitController.java +++ b/src/main/java/com/jevon/controller/ScheduleInitController.java @@ -86,12 +86,6 @@ public class ScheduleInitController { return baseVo; } - @ApiOperation("tset ") - @RequestMapping(value = "test", method = RequestMethod.POST) - public void test(){ - initMessage(1021); - } - @ApiOperation("更新计划") @RequestMapping(value = "updateSchedule", method = RequestMethod.POST) public BaseVo updateSchedule(@RequestBody UpdateScheduleReqVo updateScheduleReqVo){ @@ -312,6 +306,7 @@ public class ScheduleInitController { } }catch (Exception e){ e.printStackTrace(); + baseVo.setMessage("导入的数据有误"); baseVo.setSuccess(false); } return baseVo; diff --git a/src/main/java/com/jevon/controller/ScheduleMessageController.java b/src/main/java/com/jevon/controller/ScheduleMessageController.java index 14e3a2e..c6f3d86 100644 --- a/src/main/java/com/jevon/controller/ScheduleMessageController.java +++ b/src/main/java/com/jevon/controller/ScheduleMessageController.java @@ -121,11 +121,13 @@ public class ScheduleMessageController { search.setClassId(getClassCourseReqVo.getClassId()); search.setSingleOrDouble(1); search.setTeam(schedule.getTeam()); - classCourseRepVo.setData(classCourseService.selectByClassIdAndSingleOrDouble(search)); List 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 < 7 ; j++){ + for(int j = 1 ; j < max ; j++){ System.out.print(getClassCourse(list,i,j).getCourseName() + " "); } System.out.println(); -- libgit2 0.21.0