Commit 897d9009d8c1be976f40980611a54387c7f85359

Authored by 陈杰
1 parent 2c42e64f
Exists in master

排课 优化 调整课程

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