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