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,7 +506,7 @@ public class ScheduleController { | ||
| 506 | if(StringUtils.isBlank(classCourse.getCourseName())){ | 506 | if(StringUtils.isBlank(classCourse.getCourseName())){ |
| 507 | Course course = courseService.selectBySchoolIdAndCourseName(teacherClass.getSchoolId(),teacherClass.getCourseName()); | 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 | if(result == null){ | 510 | if(result == null){ |
| 511 | break; | 511 | break; |
| 512 | } | 512 | } |
| @@ -524,7 +524,7 @@ public class ScheduleController { | @@ -524,7 +524,7 @@ public class ScheduleController { | ||
| 524 | } | 524 | } |
| 525 | if(functionTimes > 2){ | 525 | if(functionTimes > 2){ |
| 526 | //递归次数限制,防止无限循环,内存溢出,手动优化课程 | 526 | //递归次数限制,防止无限循环,内存溢出,手动优化课程 |
| 527 | - optimizeCourse(teacherClass,courseType); | 527 | + optimizeCourse(teacherClass); |
| 528 | }else{ | 528 | }else{ |
| 529 | if(times < teacherClass.getTimes()){ | 529 | if(times < teacherClass.getTimes()){ |
| 530 | //优先时段中课程数 不够 | 530 | //优先时段中课程数 不够 |
| @@ -635,15 +635,22 @@ public class ScheduleController { | @@ -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 | Course course , int singleOrDouble , int week , int courseNumber ){ | 639 | Course course , int singleOrDouble , int week , int courseNumber ){ |
| 640 | classCourse.setCourseOpenId(course.getCourseId()); | 640 | classCourse.setCourseOpenId(course.getCourseId()); |
| 641 | classCourse.setCourseName(teacherClass.getCourseName()); | 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 | return null ; | 651 | return null ; |
| 645 | } | 652 | } |
| 646 | - if(courseType != 1 && classCourseService.selectCourseByClassIdAndWeek(classCourse) >= 1){ | 653 | + if(resultTeacherClass.getTimes() <= 5 && classCourseService.selectCourseByClassIdAndWeek(classCourse) >= 1){ |
| 647 | return null ; | 654 | return null ; |
| 648 | } | 655 | } |
| 649 | TeacherCourse searchTeacherCourse = new TeacherCourse(); | 656 | TeacherCourse searchTeacherCourse = new TeacherCourse(); |
| @@ -664,9 +671,8 @@ public class ScheduleController { | @@ -664,9 +671,8 @@ public class ScheduleController { | ||
| 664 | return result ; | 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 | int times = teacherClass.getTimes(); | 676 | int times = teacherClass.getTimes(); |
| 671 | int maxCourseNumber = classCourseService.selectMaxCourseNumber(teacherClass.getSchoolId(),teacherClass.getTeam()) ; | 677 | int maxCourseNumber = classCourseService.selectMaxCourseNumber(teacherClass.getSchoolId(),teacherClass.getTeam()) ; |
| 672 | while (times > 0){ | 678 | while (times > 0){ |
| @@ -682,8 +688,18 @@ public class ScheduleController { | @@ -682,8 +688,18 @@ public class ScheduleController { | ||
| 682 | weekChange = weekChange + 5; | 688 | weekChange = weekChange + 5; |
| 683 | } | 689 | } |
| 684 | List<ClassCourse> list = classCourseService.selectWeekCourse(classCourse.getClassId(),weekChange,classCourse.getSingleOrDouble(),teacherClass.getCourseName(),teacherClass.getTeam()); | 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 | continue; | 703 | continue; |
| 688 | } | 704 | } |
| 689 | for(int j = -1 ; j<=1 ; j++){ | 705 | for(int j = -1 ; j<=1 ; j++){ |
src/main/java/com/jevon/controller/ScheduleInitController.java
| @@ -86,12 +86,6 @@ public class ScheduleInitController { | @@ -86,12 +86,6 @@ public class ScheduleInitController { | ||
| 86 | return baseVo; | 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 | @ApiOperation("更新计划") | 89 | @ApiOperation("更新计划") |
| 96 | @RequestMapping(value = "updateSchedule", method = RequestMethod.POST) | 90 | @RequestMapping(value = "updateSchedule", method = RequestMethod.POST) |
| 97 | public BaseVo updateSchedule(@RequestBody UpdateScheduleReqVo updateScheduleReqVo){ | 91 | public BaseVo updateSchedule(@RequestBody UpdateScheduleReqVo updateScheduleReqVo){ |
| @@ -312,6 +306,7 @@ public class ScheduleInitController { | @@ -312,6 +306,7 @@ public class ScheduleInitController { | ||
| 312 | } | 306 | } |
| 313 | }catch (Exception e){ | 307 | }catch (Exception e){ |
| 314 | e.printStackTrace(); | 308 | e.printStackTrace(); |
| 309 | + baseVo.setMessage("导入的数据有误"); | ||
| 315 | baseVo.setSuccess(false); | 310 | baseVo.setSuccess(false); |
| 316 | } | 311 | } |
| 317 | return baseVo; | 312 | return baseVo; |
src/main/java/com/jevon/controller/ScheduleMessageController.java
| @@ -121,11 +121,13 @@ public class ScheduleMessageController { | @@ -121,11 +121,13 @@ public class ScheduleMessageController { | ||
| 121 | search.setClassId(getClassCourseReqVo.getClassId()); | 121 | search.setClassId(getClassCourseReqVo.getClassId()); |
| 122 | search.setSingleOrDouble(1); | 122 | search.setSingleOrDouble(1); |
| 123 | search.setTeam(schedule.getTeam()); | 123 | search.setTeam(schedule.getTeam()); |
| 124 | - classCourseRepVo.setData(classCourseService.selectByClassIdAndSingleOrDouble(search)); | ||
| 125 | List<ClassCourse> list = classCourseService.selectByClassIdAndSingleOrDouble(search); | 124 | List<ClassCourse> list = classCourseService.selectByClassIdAndSingleOrDouble(search); |
| 125 | + classCourseRepVo.setData(list); | ||
| 126 | + | ||
| 127 | + int max = schedule.getMorning() + schedule.getAfternoon() + schedule.getNight() ; | ||
| 126 | for(int i = 1 ; i < 6 ; i++){ | 128 | for(int i = 1 ; i < 6 ; i++){ |
| 127 | System.out.print("周"+i+" "); | 129 | System.out.print("周"+i+" "); |
| 128 | - for(int j = 1 ; j < 7 ; j++){ | 130 | + for(int j = 1 ; j < max ; j++){ |
| 129 | System.out.print(getClassCourse(list,i,j).getCourseName() + " "); | 131 | System.out.print(getClassCourse(list,i,j).getCourseName() + " "); |
| 130 | } | 132 | } |
| 131 | System.out.println(); | 133 | System.out.println(); |