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