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(); | ... | ... |