Commit 897d9009d8c1be976f40980611a54387c7f85359
1 parent
2c42e64f
Exists in
master
排课 优化 调整课程
Showing
3 changed files
with
31 additions
and
18 deletions
Show diff stats
src/main/java/com/jevon/controller/ScheduleController.java
... | ... | @@ -506,7 +506,7 @@ public class ScheduleController { |
506 | 506 | if(StringUtils.isBlank(classCourse.getCourseName())){ |
507 | 507 | Course course = courseService.selectBySchoolIdAndCourseName(teacherClass.getSchoolId(),teacherClass.getCourseName()); |
508 | 508 | //约束条件判断 |
509 | - TeacherCourse result = checkConstraint(courseType,classCourse,teacherClass,course,singleOrDouble,week,courseNumber); | |
509 | + TeacherCourse result = checkConstraint(classCourse,teacherClass,course,singleOrDouble,week,courseNumber); | |
510 | 510 | if(result == null){ |
511 | 511 | break; |
512 | 512 | } |
... | ... | @@ -524,7 +524,7 @@ public class ScheduleController { |
524 | 524 | } |
525 | 525 | if(functionTimes > 2){ |
526 | 526 | //递归次数限制,防止无限循环,内存溢出,手动优化课程 |
527 | - optimizeCourse(teacherClass,courseType); | |
527 | + optimizeCourse(teacherClass); | |
528 | 528 | }else{ |
529 | 529 | if(times < teacherClass.getTimes()){ |
530 | 530 | //优先时段中课程数 不够 |
... | ... | @@ -635,15 +635,22 @@ public class ScheduleController { |
635 | 635 | } |
636 | 636 | |
637 | 637 | //判断班级与老师的约束条件 |
638 | - private TeacherCourse checkConstraint(int courseType , ClassCourse classCourse , TeacherClass teacherClass , | |
638 | + private TeacherCourse checkConstraint(ClassCourse classCourse , TeacherClass teacherClass , | |
639 | 639 | Course course , int singleOrDouble , int week , int courseNumber ){ |
640 | 640 | classCourse.setCourseOpenId(course.getCourseId()); |
641 | 641 | classCourse.setCourseName(teacherClass.getCourseName()); |
642 | - //判断当天是否已经排该课程 主课一天2节,其他课一天1节 | |
643 | - if(courseType == 1 && classCourseService.selectCourseByClassIdAndWeek(classCourse) >= 2){ | |
642 | + //判断当天是否还能继续排课 | |
643 | + TeacherClass searchTeacher = new TeacherClass(); | |
644 | + searchTeacher.setSchoolId(teacherClass.getSchoolId()); | |
645 | + searchTeacher.setTeam(teacherClass.getTeam()); | |
646 | + searchTeacher.setClassId(teacherClass.getClassId()); | |
647 | + searchTeacher.setTeacherName(teacherClass.getTeacherName()); | |
648 | + searchTeacher.setCourseName(teacherClass.getCourseName()); | |
649 | + TeacherClass resultTeacherClass = teacherClassService.selectByTeacher(searchTeacher); | |
650 | + if(resultTeacherClass.getTimes() > 5 && classCourseService.selectCourseByClassIdAndWeek(classCourse) >= 2){ | |
644 | 651 | return null ; |
645 | 652 | } |
646 | - if(courseType != 1 && classCourseService.selectCourseByClassIdAndWeek(classCourse) >= 1){ | |
653 | + if(resultTeacherClass.getTimes() <= 5 && classCourseService.selectCourseByClassIdAndWeek(classCourse) >= 1){ | |
647 | 654 | return null ; |
648 | 655 | } |
649 | 656 | TeacherCourse searchTeacherCourse = new TeacherCourse(); |
... | ... | @@ -664,9 +671,8 @@ public class ScheduleController { |
664 | 671 | return result ; |
665 | 672 | } |
666 | 673 | |
667 | - | |
668 | 674 | //课程冲突 ,调优 |
669 | - private void optimizeCourse(TeacherClass teacherClass,int courseType){ | |
675 | + private void optimizeCourse(TeacherClass teacherClass){ | |
670 | 676 | int times = teacherClass.getTimes(); |
671 | 677 | int maxCourseNumber = classCourseService.selectMaxCourseNumber(teacherClass.getSchoolId(),teacherClass.getTeam()) ; |
672 | 678 | while (times > 0){ |
... | ... | @@ -682,8 +688,18 @@ public class ScheduleController { |
682 | 688 | weekChange = weekChange + 5; |
683 | 689 | } |
684 | 690 | List<ClassCourse> list = classCourseService.selectWeekCourse(classCourse.getClassId(),weekChange,classCourse.getSingleOrDouble(),teacherClass.getCourseName(),teacherClass.getTeam()); |
685 | - //查询当天是否已经有该节课,扩大了 | |
686 | - if(list.size() > 1){ | |
691 | + //查询当天的课程还能继续派排课 | |
692 | + TeacherClass searchTeacher = new TeacherClass(); | |
693 | + searchTeacher.setSchoolId(teacherClass.getSchoolId()); | |
694 | + searchTeacher.setTeam(teacherClass.getTeam()); | |
695 | + searchTeacher.setClassId(teacherClass.getClassId()); | |
696 | + searchTeacher.setTeacherName(teacherClass.getTeacherName()); | |
697 | + searchTeacher.setCourseName(teacherClass.getCourseName()); | |
698 | + TeacherClass resultTeacherClass = teacherClassService.selectByTeacher(searchTeacher); | |
699 | + if(resultTeacherClass.getTimes() > 5 && list.size() >= 2){ | |
700 | + continue; | |
701 | + } | |
702 | + if(resultTeacherClass.getTimes() <= 5 && list.size() >= 1){ | |
687 | 703 | continue; |
688 | 704 | } |
689 | 705 | for(int j = -1 ; j<=1 ; j++){ | ... | ... |
src/main/java/com/jevon/controller/ScheduleInitController.java
... | ... | @@ -86,12 +86,6 @@ public class ScheduleInitController { |
86 | 86 | return baseVo; |
87 | 87 | } |
88 | 88 | |
89 | - @ApiOperation("tset ") | |
90 | - @RequestMapping(value = "test", method = RequestMethod.POST) | |
91 | - public void test(){ | |
92 | - initMessage(1021); | |
93 | - } | |
94 | - | |
95 | 89 | @ApiOperation("更新计划") |
96 | 90 | @RequestMapping(value = "updateSchedule", method = RequestMethod.POST) |
97 | 91 | public BaseVo updateSchedule(@RequestBody UpdateScheduleReqVo updateScheduleReqVo){ |
... | ... | @@ -312,6 +306,7 @@ public class ScheduleInitController { |
312 | 306 | } |
313 | 307 | }catch (Exception e){ |
314 | 308 | e.printStackTrace(); |
309 | + baseVo.setMessage("导入的数据有误"); | |
315 | 310 | baseVo.setSuccess(false); |
316 | 311 | } |
317 | 312 | return baseVo; | ... | ... |
src/main/java/com/jevon/controller/ScheduleMessageController.java
... | ... | @@ -121,11 +121,13 @@ public class ScheduleMessageController { |
121 | 121 | search.setClassId(getClassCourseReqVo.getClassId()); |
122 | 122 | search.setSingleOrDouble(1); |
123 | 123 | search.setTeam(schedule.getTeam()); |
124 | - classCourseRepVo.setData(classCourseService.selectByClassIdAndSingleOrDouble(search)); | |
125 | 124 | List<ClassCourse> list = classCourseService.selectByClassIdAndSingleOrDouble(search); |
125 | + classCourseRepVo.setData(list); | |
126 | + | |
127 | + int max = schedule.getMorning() + schedule.getAfternoon() + schedule.getNight() ; | |
126 | 128 | for(int i = 1 ; i < 6 ; i++){ |
127 | 129 | System.out.print("周"+i+" "); |
128 | - for(int j = 1 ; j < 7 ; j++){ | |
130 | + for(int j = 1 ; j < max ; j++){ | |
129 | 131 | System.out.print(getClassCourse(list,i,j).getCourseName() + " "); |
130 | 132 | } |
131 | 133 | System.out.println(); | ... | ... |