Commit 2c42e64f4f72d2b651290da09436f9650b69d00d

Authored by 陈杰
1 parent 037d605e
Exists in master

排课 一个老师对应多个课程 优化

src/main/java/com/jevon/controller/LearnStatController.java
... ... @@ -579,6 +579,20 @@ public class LearnStatController {
579 579 return repVO;
580 580 }
581 581  
  582 + @ApiOperation("getForm2_2_5")
  583 + @RequestMapping(value = "getForm2_2_5", method = RequestMethod.POST)
  584 + public Map<String,Double> getForm2_2_5(@RequestBody GetLearnReqVo getLearnReqVo){
  585 + Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId());
  586 + //分数段
  587 + Double maxScore = analyse.getMaxScore();
  588 + Map<String,Double> segmentMap = new HashMap<>();
  589 + segmentMap.put("A",maxScore*0.85);
  590 + segmentMap.put("B",maxScore*0.7);
  591 + segmentMap.put("C",maxScore*0.6);
  592 + segmentMap.put("D",maxScore*0.6);
  593 + return segmentMap ;
  594 + }
  595 +
582 596 @ApiOperation("getForm3_1")
583 597 @RequestMapping(value = "getForm3_1", method = RequestMethod.POST)
584 598 public Form6RepVO getForm3_1(@RequestBody GetLearnReqVo getLearnReqVo){
... ...
src/main/java/com/jevon/controller/ScheduleController.java
... ... @@ -236,13 +236,8 @@ public class ScheduleController {
236 236 for(String msg : parallelClassReqVo.getIntervalList()){
237 237 String[] arrayMsg = msg.split("-");
238 238 ClassCourse classCourse = new ClassCourse();
239   - if(Integer.valueOf(arrayMsg[0]) > 5){
240   - classCourse.setSingleOrDouble(2);
241   - classCourse.setWeek(Integer.valueOf(arrayMsg[0])-5);
242   - }else {
243   - classCourse.setSingleOrDouble(1);
244   - classCourse.setWeek(Integer.valueOf(arrayMsg[0]));
245   - }
  239 + classCourse.setSingleOrDouble(1);
  240 + classCourse.setWeek(Integer.valueOf(arrayMsg[0]));
246 241 classCourse.setCourseNumber(Integer.valueOf(arrayMsg[1]));
247 242 limitList.add(classCourse);
248 243 }
... ... @@ -291,10 +286,11 @@ public class ScheduleController {
291 286 insertTeacherCourse(isDouble, teacherCourse);
292 287 }
293 288 TeacherClass searchTeacher = new TeacherClass();
294   - searchTeacher.setTeacherName(temp.getTeacherName());
295 289 searchTeacher.setSchoolId(temp.getSchoolId());
296   - searchTeacher.setClassId(temp.getClassId());
297 290 searchTeacher.setTeam(temp.getTeam());
  291 + searchTeacher.setClassId(temp.getClassId());
  292 + searchTeacher.setTeacherName(temp.getTeacherName());
  293 + searchTeacher.setCourseName(temp.getCourseName());
298 294 TeacherClass teacherClass = teacherClassService.selectByTeacher(searchTeacher);
299 295 if(teacherClass.getStatus() == 1){
300 296 //已经排课不再排课
... ... @@ -302,47 +298,32 @@ public class ScheduleController {
302 298 ClassCourse classCourse = new ClassCourse();
303 299 classCourse.setClassId(temp.getClassId());
304 300 classCourse.setTeam(schedule.getTeam());
305   - if(isDouble){
306   -// //双周排课 先排第一周
307   -// int times = teacherClass.getTimes();
308   -// int joinTimes = teacherClass.getJoinTimes();
309   -// classCourse.setSingleOrDouble(1);
310   -// teacherClass.setJoinTimes(times/2);
311   -// teacherClass.setJoinTimes(joinTimes/2);
312   -// List<ClassCourse> classCourses = classCourseService.selectByClassIdAndSingleOrDouble(classCourse);
313   -// initWeekCourse(joinList,teacherClass,teacherCourse,classCourses,limitList,0);
314   -// //第二周
315   -// classCourse.setSingleOrDouble(1);
316   -// teacherClass.setJoinTimes(times/2+1);
317   -// teacherClass.setJoinTimes(joinTimes/2+1);
318   -// classCourses = classCourseService.selectByClassIdAndSingleOrDouble(classCourse);
319   -// initWeekCourse(joinList,teacherClass,teacherCourse,classCourses,limitList,0);
320   - }else {
321   - classCourse.setSingleOrDouble(1);
322   - List<ClassCourse> classCourses = classCourseService.selectByClassIdAndSingleOrDouble(classCourse);
323   - initWeekCourse(joinList,teacherClass,teacherCourse,classCourses,limitList,0);
324   - //排课结束,更新
325   - //如果是合班的话,需要更新多个teacherClass
326   - teacherClassService.updateSchedule(teacherClass.gettClassId());
327   - JoinClass joinClass = new JoinClass();
328   - joinClass.setSchoolId(schedule.getSchoolId());
329   - joinClass.setTeam(schedule.getTeam());
330   - joinClass.setCourseId(courseService.selectBySchoolIdAndCourseName(schedule.getSchoolId(),teacherClass.getCourseName()).getCourseId());
331   - joinClass.setClassId(classCourse.getClassId());
332   - List<JoinClass> joinClasses = joinClassService.selectByCourse(joinClass);
333   - if(joinClasses != null && joinClasses.size() > 0){
334   - List<JoinClass> resultList = joinClassService.selectByCourseGroup(joinClasses.get(0).getCourseGroup());
335   - for(JoinClass joinClass1 :resultList){
336   - TeacherClass searchTeacherClass = new TeacherClass();
337   - searchTeacherClass.setSchoolId(schedule.getSchoolId());
338   - searchTeacherClass.setTeam(schedule.getTeam());
339   - searchTeacherClass.setCourseName(teacherClass.getCourseName());
340   - searchTeacherClass.setClassId(joinClass1.getClassId());
341   - TeacherClass resultTeacherClass = teacherClassService.selectByCourseAndClass(searchTeacherClass);
342   - teacherClassService.updateSchedule(resultTeacherClass.gettClassId());
343   - }
  301 + classCourse.setSchoolId(schedule.getSchoolId());
  302 + classCourse.setSingleOrDouble(1);
  303 + List<ClassCourse> classCourses = classCourseService.selectByClassIdAndSingleOrDouble(classCourse);
  304 + initWeekCourse(parallelClassReqVo.getCourseType(),joinList,teacherClass,classCourses,limitList,0);
  305 + //排课结束,更新
  306 + //如果是合班的话,需要更新多个teacherClass
  307 + teacherClassService.updateSchedule(teacherClass.gettClassId());
  308 + JoinClass joinClass = new JoinClass();
  309 + joinClass.setSchoolId(schedule.getSchoolId());
  310 + joinClass.setTeam(schedule.getTeam());
  311 + joinClass.setCourseId(courseService.selectBySchoolIdAndCourseName(schedule.getSchoolId(),teacherClass.getCourseName()).getCourseId());
  312 + joinClass.setClassId(classCourse.getClassId());
  313 + List<JoinClass> joinClasses = joinClassService.selectByCourse(joinClass);
  314 + if(joinClasses != null && joinClasses.size() > 0){
  315 + List<JoinClass> resultList = joinClassService.selectByCourseGroup(joinClasses.get(0).getCourseGroup());
  316 + for(JoinClass joinClass1 :resultList){
  317 + TeacherClass searchTeacherClass = new TeacherClass();
  318 + searchTeacherClass.setSchoolId(schedule.getSchoolId());
  319 + searchTeacherClass.setTeam(schedule.getTeam());
  320 + searchTeacherClass.setCourseName(teacherClass.getCourseName());
  321 + searchTeacherClass.setClassId(joinClass1.getClassId());
  322 + TeacherClass resultTeacherClass = teacherClassService.selectByCourseAndClass(searchTeacherClass);
  323 + teacherClassService.updateSchedule(resultTeacherClass.gettClassId());
344 324 }
345 325 }
  326 +
346 327 }
347 328 }
348 329 return baseVo;
... ... @@ -422,7 +403,16 @@ public class ScheduleController {
422 403 return classCourses;
423 404 }
424 405  
425   - private void initWeekCourse(List<Integer> joinList ,TeacherClass teacherClass , TeacherCourse teacherCourse ,
  406 + /**
  407 + *
  408 + * @param courseType 所排课的课程类型 // 1 主课 2 副课 3 公共课
  409 + * @param joinList 联课优先级
  410 + * @param teacherClass 老师授课信息
  411 + * @param list 班级课程
  412 + * @param limitList 单课优先级
  413 + * @param functionTimes 循环次数
  414 + */
  415 + private void initWeekCourse(int courseType ,List<Integer> joinList ,TeacherClass teacherClass ,
426 416 List<ClassCourse> list , List<ClassCourse> limitList ,int functionTimes){
427 417 List<Integer> sort = new ArrayList<>();
428 418 String team = teacherClass.getTeam();
... ... @@ -448,19 +438,19 @@ public class ScheduleController {
448 438 }
449 439 ClassCourse classCourseNext =getClassCourse(list, week, courseNumber+1);
450 440 if (StringUtils.isBlank(classCourse.getCourseName()) && StringUtils.isBlank(classCourseNext.getCourseName())) {
451   - Course course = courseService.selectBySchoolIdAndCourseName(teacherClass.getSchoolId(),teacherCourse.getCourseName());
  441 + Course course = courseService.selectBySchoolIdAndCourseName(teacherClass.getSchoolId(),teacherClass.getCourseName());
452 442 classCourse.setCourseOpenId(course.getCourseId());
453 443 classCourse.setCourseName(teacherClass.getCourseName());
454 444 classCourseNext.setCourseOpenId(course.getCourseId());
455 445 classCourseNext.setCourseName(teacherClass.getCourseName());
456 446 TeacherCourse searchTeacherCourse = new TeacherCourse();
457 447 searchTeacherCourse.setTeam(team);
458   - searchTeacherCourse.setSchoolId(teacherCourse.getSchoolId());
459   - searchTeacherCourse.setGrade(teacherCourse.getGrade());
460   - searchTeacherCourse.setTeacherName(teacherCourse.getTeacherName());
  448 + searchTeacherCourse.setSchoolId(teacherClass.getSchoolId());
  449 + searchTeacherCourse.setGrade(teacherClass.getGrade());
  450 + searchTeacherCourse.setTeacherName(teacherClass.getTeacherName());
461 451 searchTeacherCourse.setSingleOrDouble(singleOrDouble);
462 452 searchTeacherCourse.setWeek(week);
463   - searchTeacherCourse.setCourseName(teacherCourse.getCourseName());
  453 + searchTeacherCourse.setCourseName(teacherClass.getCourseName());
464 454 //查询当天老师的课是否已经大于等于2 防止老师一天课程太多
465 455 int dayCourse = teacherCourseService.selectTeacherDayCourseNumber(searchTeacherCourse);
466 456 if(dayCourse >= 2){
... ... @@ -473,9 +463,9 @@ public class ScheduleController {
473 463 if (StringUtils.isBlank(teacherFirst.getCourseName()) && StringUtils.isBlank(teacherSecond.getCourseName())) {
474 464 classCourseService.updateByPrimaryKey(classCourse);
475 465 classCourseService.updateByPrimaryKey(classCourseNext);
476   - teacherFirst.setCourseName(teacherCourse.getCourseName());
  466 + teacherFirst.setCourseName(teacherClass.getCourseName());
477 467 teacherFirst.setClassId(classCourse.getClassId()+"");
478   - teacherSecond.setCourseName(teacherCourse.getCourseName());
  468 + teacherSecond.setCourseName(teacherClass.getCourseName());
479 469 teacherSecond.setClassId(classCourse.getClassId()+"");
480 470 teacherCourseService.updateTeacherCourse(teacherFirst);
481 471 teacherCourseService.updateTeacherCourse(teacherSecond);
... ... @@ -515,118 +505,170 @@ public class ScheduleController {
515 505 if(flag){
516 506 if(StringUtils.isBlank(classCourse.getCourseName())){
517 507 Course course = courseService.selectBySchoolIdAndCourseName(teacherClass.getSchoolId(),teacherClass.getCourseName());
518   - classCourse.setCourseOpenId(course.getCourseId());
519   - classCourse.setCourseName(teacherClass.getCourseName());
520   - //判断当天是否已经排该课程
521   - if(classCourseService.selectCourseByClassIdAndWeek(classCourse) > 1){
522   - break;
  508 + //约束条件判断
  509 + TeacherCourse result = checkConstraint(courseType,classCourse,teacherClass,course,singleOrDouble,week,courseNumber);
  510 + if(result == null){
  511 + break;
523 512 }
524   - TeacherCourse searchTeacherCourse = new TeacherCourse();
525   - searchTeacherCourse.setTeam(team);
526   - searchTeacherCourse.setSchoolId(teacherCourse.getSchoolId());
527   - searchTeacherCourse.setGrade(teacherCourse.getGrade());
528   - searchTeacherCourse.setTeacherName(teacherCourse.getTeacherName());
529   - searchTeacherCourse.setSingleOrDouble(singleOrDouble);
530   - searchTeacherCourse.setWeek(week);
531   - searchTeacherCourse.setCourseNumber(courseNumber);
532   - searchTeacherCourse.setCourseName(teacherClass.getCourseName());
533   - TeacherCourse result = teacherCourseService.selectTeacherCourse(searchTeacherCourse);
534   - //老师当天课程不能多于2
535   - if(teacherCourseService.selectTeacherDayCourseNumber(searchTeacherCourse) >= 2){
  513 + //设置课程
  514 + if(setCourse(classCourse,teacherClass,result,course)){
  515 + times++;
  516 + before = courseNumber;
536 517 break;
537   - }
538   - //合课 多做一层判断 另一个班级这节课也为空
539   - JoinClass joinClass = new JoinClass();
540   - joinClass.setSchoolId(classCourse.getSchoolId());
541   - joinClass.setTeam(classCourse.getTeam());
542   - joinClass.setCourseId(classCourse.getCourseOpenId());
543   - joinClass.setClassId(classCourse.getClassId());
544   - List<JoinClass> joinClasses = joinClassService.selectByCourse(joinClass);
545   - if(joinClasses != null && joinClasses.size() > 0){
546   - //说明是合班的课程
547   - boolean isClash = false ;
548   - List<ClassCourse> joinClassList = new ArrayList<>();
549   - List<JoinClass> resultList = joinClassService.selectByCourseGroup(joinClasses.get(0).getCourseGroup());
550   - for(JoinClass temp : resultList){
551   - ClassCourse joinClassCourse = new ClassCourse();
552   - joinClassCourse.setTeam(classCourse.getTeam());
553   - joinClassCourse.setClassId(temp.getClassId());
554   - joinClassCourse.setWeek(classCourse.getWeek());
555   - joinClassCourse.setCourseNumber(classCourse.getCourseNumber());
556   - joinClassCourse.setSingleOrDouble(classCourse.getSingleOrDouble());
557   - ClassCourse joinResultClassCourse = classCourseService.selectClassCourse(joinClassCourse);
558   - joinClassList.add(joinResultClassCourse);
559   - if(StringUtils.isNotBlank(joinResultClassCourse.getCourseName())){
560   - isClash = true ;
561   - break;
562   - }
563   - }
564   - if(isClash){
565   - //合班的班级有 该节次的课 已经有老师上了
566   - continue;
567   - }else {
568   - String classIdString = "";
569   - for(ClassCourse temp : joinClassList){
570   - classIdString = course.getCourseId() + "," ;
571   - temp.setCourseOpenId(course.getCourseId());
572   - temp.setCourseName(teacherClass.getCourseName());
573   - classCourseService.updateByPrimaryKey(temp);
574   - }
575   - result.setGrade(classCourse.getGrade());
576   - result.setClassId(classIdString);
577   - result.setCourseName(classCourse.getCourseName());
578   - teacherCourseService.updateTeacherCourse(result);
579   - times++;
580   - before = courseNumber;
581   - break;
582   - }
583 518 }else {
584   - //普通课程
585   - if(StringUtils.isBlank(result.getCourseName())){
586   - classCourseService.updateByPrimaryKey(classCourse);
587   - result.setGrade(classCourse.getGrade());
588   - result.setClassId(classCourse.getClassId()+"");
589   - result.setCourseName(classCourse.getCourseName());
590   - teacherCourseService.updateTeacherCourse(result);
591   - times++;
592   - before = courseNumber;
593   - break;
594   - }else {
595   - continue;
596   - }
  519 + continue;
597 520 }
598 521 }
599 522 }
600 523 }
601 524 }
602   - if(functionTimes > 1){
  525 + if(functionTimes > 2){
603 526 //递归次数限制,防止无限循环,内存溢出,手动优化课程
604   - optimizeCourse(teacherClass);
  527 + optimizeCourse(teacherClass,courseType);
605 528 }else{
606 529 if(times < teacherClass.getTimes()){
607 530 //优先时段中课程数 不够
608 531 teacherClass.setTimes(teacherClass.getTimes()-times);
609 532 teacherClass.setJoinTimes(teacherClass.getJoinTimes()-joinTimes);
610   - //放大范围
611   - limitList = new ArrayList<>();
  533 + //放大优先范围,上下一节,并去掉原来的优先范围
  534 + List<ClassCourse> newLimitList = new ArrayList<>();
612 535 int maxCourseNumber =classCourseService.selectMaxCourseNumber(teacherClass.getSchoolId(),team);
613   - for(int i = 1 ; i<= 5 ; i++){
614   - for(int j = 1 ; j <=maxCourseNumber ; j++) {
  536 + for(ClassCourse classCourse : limitList){
  537 + if(classCourse.getCourseNumber() == 1){
615 538 ClassCourse temp = new ClassCourse();
616   - temp.setWeek(i);
617   - temp.setCourseNumber(j);
618   - limitList.add(temp);
  539 + temp.setWeek(classCourse.getWeek());
  540 + temp.setCourseNumber(2);
  541 + newLimitList.add(temp);
  542 + }else if(classCourse.getCourseNumber() == maxCourseNumber){
  543 + ClassCourse temp = new ClassCourse();
  544 + temp.setWeek(classCourse.getWeek());
  545 + temp.setCourseNumber(maxCourseNumber-1);
  546 + newLimitList.add(temp);
  547 + }else{
  548 + ClassCourse temp = new ClassCourse();
  549 + temp.setWeek(classCourse.getWeek());
  550 + temp.setCourseNumber(classCourse.getCourseNumber()-1);
  551 + newLimitList.add(temp);
  552 + ClassCourse temp2 = new ClassCourse();
  553 + temp2.setWeek(classCourse.getWeek());
  554 + temp2.setCourseNumber(classCourse.getCourseNumber()+1);
  555 + newLimitList.add(temp2);
  556 + }
  557 + }
  558 + List<ClassCourse> result = new ArrayList<>();
  559 + for (int i = 0; i < newLimitList.size() ; i++) {
  560 + boolean isExist = false ;
  561 + for(ClassCourse classCourse : limitList){
  562 + if(newLimitList.get(i).getWeek() == classCourse.getWeek() &&
  563 + newLimitList.get(i).getCourseNumber() == classCourse.getCourseNumber()){
  564 + isExist = true ;
  565 + }
  566 + }
  567 + if(!isExist){
  568 + result.add(newLimitList.get(i));
619 569 }
620 570 }
621 571 functionTimes ++ ;
622   - initWeekCourse(joinList,teacherClass,teacherCourse,list,limitList,functionTimes);
  572 + initWeekCourse(courseType,joinList,teacherClass,list,result,functionTimes);
  573 + }
  574 + }
  575 + }
  576 +
  577 + //设置课程
  578 + private boolean setCourse(ClassCourse classCourse ,TeacherClass teacherClass , TeacherCourse result , Course course){
  579 + //合课 多做一层判断 另一个班级这节课也为空
  580 + JoinClass joinClass = new JoinClass();
  581 + joinClass.setSchoolId(classCourse.getSchoolId());
  582 + joinClass.setTeam(classCourse.getTeam());
  583 + joinClass.setCourseId(classCourse.getCourseOpenId());
  584 + joinClass.setClassId(classCourse.getClassId());
  585 + List<JoinClass> joinClasses = joinClassService.selectByCourse(joinClass);
  586 + if(joinClasses != null && joinClasses.size() > 0){
  587 + //说明是合班的课程
  588 + boolean isClash = false ;
  589 + List<ClassCourse> joinClassList = new ArrayList<>();
  590 + List<JoinClass> resultList = joinClassService.selectByCourseGroup(joinClasses.get(0).getCourseGroup());
  591 + for(JoinClass temp : resultList){
  592 + ClassCourse joinClassCourse = new ClassCourse();
  593 + joinClassCourse.setTeam(classCourse.getTeam());
  594 + joinClassCourse.setClassId(temp.getClassId());
  595 + joinClassCourse.setWeek(classCourse.getWeek());
  596 + joinClassCourse.setCourseNumber(classCourse.getCourseNumber());
  597 + joinClassCourse.setSingleOrDouble(classCourse.getSingleOrDouble());
  598 + ClassCourse joinResultClassCourse = classCourseService.selectClassCourse(joinClassCourse);
  599 + joinClassList.add(joinResultClassCourse);
  600 + if(StringUtils.isNotBlank(joinResultClassCourse.getCourseName())){
  601 + isClash = true ;
  602 + break;
  603 + }
  604 + }
  605 + if(isClash){
  606 + //合班的班级有 该节次的课 已经有老师上了
  607 + return false;
  608 + }else {
  609 + String classIdString = "";
  610 + for(ClassCourse temp : joinClassList){
  611 + classIdString = course.getCourseId() + "," ;
  612 + temp.setCourseOpenId(course.getCourseId());
  613 + temp.setCourseName(teacherClass.getCourseName());
  614 + classCourseService.updateByPrimaryKey(temp);
  615 + }
  616 + result.setGrade(classCourse.getGrade());
  617 + result.setClassId(classIdString);
  618 + result.setCourseName(classCourse.getCourseName());
  619 + teacherCourseService.updateTeacherCourse(result);
  620 + return true;
623 621 }
  622 + }else {
  623 + //普通课程
  624 + if(StringUtils.isBlank(result.getCourseName())){
  625 + classCourseService.updateByPrimaryKey(classCourse);
  626 + result.setGrade(classCourse.getGrade());
  627 + result.setClassId(classCourse.getClassId()+"");
  628 + result.setCourseName(classCourse.getCourseName());
  629 + teacherCourseService.updateTeacherCourse(result);
  630 + return true;
  631 + }else {
  632 + return false ;
  633 + }
  634 + }
  635 + }
  636 +
  637 + //判断班级与老师的约束条件
  638 + private TeacherCourse checkConstraint(int courseType , ClassCourse classCourse , TeacherClass teacherClass ,
  639 + Course course , int singleOrDouble , int week , int courseNumber ){
  640 + classCourse.setCourseOpenId(course.getCourseId());
  641 + classCourse.setCourseName(teacherClass.getCourseName());
  642 + //判断当天是否已经排该课程 主课一天2节,其他课一天1节
  643 + if(courseType == 1 && classCourseService.selectCourseByClassIdAndWeek(classCourse) >= 2){
  644 + return null ;
  645 + }
  646 + if(courseType != 1 && classCourseService.selectCourseByClassIdAndWeek(classCourse) >= 1){
  647 + return null ;
624 648 }
  649 + TeacherCourse searchTeacherCourse = new TeacherCourse();
  650 + searchTeacherCourse.setTeam(teacherClass.getTeam());
  651 + searchTeacherCourse.setSchoolId(teacherClass.getSchoolId());
  652 + searchTeacherCourse.setGrade(teacherClass.getGrade());
  653 + searchTeacherCourse.setTeacherName(teacherClass.getTeacherName());
  654 + searchTeacherCourse.setSingleOrDouble(singleOrDouble);
  655 + searchTeacherCourse.setWeek(week);
  656 + searchTeacherCourse.setCourseNumber(courseNumber);
  657 + searchTeacherCourse.setCourseName(teacherClass.getCourseName());
  658 + TeacherCourse result = teacherCourseService.selectTeacherCourse(searchTeacherCourse);
  659 + //老师当天课程不能多于 该老师平均课程
  660 + if(teacherCourseService.selectTeacherDayCourseNumber(searchTeacherCourse)
  661 + >= teacherClassService.selectTeacherDayClass(teacherClass.getSchoolId(),teacherClass.getTeam(),teacherClass.getTeacherName())){
  662 + return null ;
  663 + }
  664 + return result ;
625 665 }
626 666  
  667 +
627 668 //课程冲突 ,调优
628   - private void optimizeCourse(TeacherClass teacherClass){
  669 + private void optimizeCourse(TeacherClass teacherClass,int courseType){
629 670 int times = teacherClass.getTimes();
  671 + int maxCourseNumber = classCourseService.selectMaxCourseNumber(teacherClass.getSchoolId(),teacherClass.getTeam()) ;
630 672 while (times > 0){
631 673 boolean flag = false ;
632 674 List<ClassCourse> noClassList = classCourseService.selectNoCourse(teacherClass.getClassId(),teacherClass.getTeam());
... ... @@ -646,7 +688,7 @@ public class ScheduleController {
646 688 }
647 689 for(int j = -1 ; j<=1 ; j++){
648 690 int courseNumberChange = classCourse.getCourseNumber() + j ;
649   - if(courseNumberChange > classCourseService.selectMaxCourseNumber(teacherClass.getSchoolId(),teacherClass.getTeam())){
  691 + if(courseNumberChange > maxCourseNumber){
650 692 continue;
651 693 }
652 694 if(courseNumberChange < 1){
... ...
src/main/java/com/jevon/controller/ScheduleInitController.java
... ... @@ -86,6 +86,12 @@ 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 +
89 95 @ApiOperation("更新计划")
90 96 @RequestMapping(value = "updateSchedule", method = RequestMethod.POST)
91 97 public BaseVo updateSchedule(@RequestBody UpdateScheduleReqVo updateScheduleReqVo){
... ... @@ -210,7 +216,8 @@ public class ScheduleInitController {
210 216 // 获得工作簿
211 217 Workbook workbook = null;
212 218 String file = excelFile.getName();
213   - InputStream inputStream = HttpClientUtils.GetFileInputStream(initTeacherCourseReqVo.getUrl());
  219 + InputStream inputStream = new FileInputStream(excelFile) ;
  220 + //InputStream inputStream = HttpClientUtils.GetFileInputStream(initTeacherCourseReqVo.getUrl());
214 221 if(inputStream == null){
215 222 baseVo.setMessage("路径不存在");
216 223 baseVo.setSuccess(false);
... ...
src/main/java/com/jevon/controller/ScheduleMessageController.java
... ... @@ -122,9 +122,30 @@ public class ScheduleMessageController {
122 122 search.setSingleOrDouble(1);
123 123 search.setTeam(schedule.getTeam());
124 124 classCourseRepVo.setData(classCourseService.selectByClassIdAndSingleOrDouble(search));
  125 + List<ClassCourse> list = classCourseService.selectByClassIdAndSingleOrDouble(search);
  126 + for(int i = 1 ; i < 6 ; i++){
  127 + System.out.print("周"+i+" ");
  128 + for(int j = 1 ; j < 7 ; j++){
  129 + System.out.print(getClassCourse(list,i,j).getCourseName() + " ");
  130 + }
  131 + System.out.println();
  132 + }
125 133 return classCourseRepVo;
126 134 }
127 135  
  136 + //查所在课表中 返回某天某节课
  137 + private ClassCourse getClassCourse(List<ClassCourse> list , int week , int courseNumber){
  138 + ClassCourse result = null ;
  139 + for(ClassCourse classCourse : list){
  140 + if(classCourse.getWeek() == week && classCourse.getCourseNumber() == courseNumber){
  141 + result = classCourse ;
  142 + break;
  143 + }
  144 + }
  145 + return result;
  146 + }
  147 +
  148 +
128 149 @ApiOperation("获取合班信息")
129 150 @RequestMapping(value = "getJoinList", method = RequestMethod.POST)
130 151 public JoinRepVo getJoinList(@RequestBody ScheduleIdReqVo scheduleIdReqVo){
... ...
src/main/java/com/jevon/mapper/TeacherClassMapper.java
1 1 package com.jevon.mapper;
2 2  
3   -import com.jevon.model.Teacher;
4 3 import com.jevon.model.TeacherClass;
5 4  
6 5 import java.util.List;
... ... @@ -13,21 +12,14 @@ public interface TeacherClassMapper {
13 12  
14 13 int insertBatch(List<TeacherClass> teacherClasses);
15 14  
16   - List<TeacherClass> selectByCourseName(TeacherClass teacherClass);
17   -
18   - TeacherClass selectByTeacher(TeacherClass teacherClass);
19   -
20   - TeacherClass selectByCourseAndClass(TeacherClass teacherClass);
21   -
22   - List<TeacherClass> selectBySchoolAndTeam(TeacherClass teacherClass);
23   -
24 15 int deleteBySchoolAndTeam(TeacherClass teacherClass);
25 16  
26   - TeacherClass selectById(int tClassId);
27   -
28 17 int updateSchedule(int tClassId);
29 18  
30 19 int selectHasSchedule(TeacherClass teacherClass);
31 20  
32 21 int recallTeacherClass(int tClassId);
  22 +
  23 +
  24 + List<TeacherClass> selectByTeacherClass(TeacherClass teacherClass);
33 25 }
34 26 \ No newline at end of file
... ...
src/main/java/com/jevon/service/TeacherClassService.java
... ... @@ -35,4 +35,7 @@ public interface TeacherClassService {
35 35  
36 36 int recallTeacherClass(int tClassId);
37 37  
  38 + //查询该老师一周的课程,并计算平均每天最多课
  39 + int selectTeacherDayClass(int schoolId , String team , String teacherName);
  40 +
38 41 }
... ...
src/main/java/com/jevon/service/impl/TeacherClassServiceImpl.java
... ... @@ -45,22 +45,41 @@ public class TeacherClassServiceImpl implements TeacherClassService {
45 45  
46 46 @Override
47 47 public List<TeacherClass> selectByCourseName(TeacherClass teacherClass) {
48   - return teacherClassMapper.selectByCourseName(teacherClass);
  48 + TeacherClass search = new TeacherClass();
  49 + search.setTeam(teacherClass.getTeam());
  50 + search.setSchoolId(teacherClass.getSchoolId());
  51 + search.setCourseName(teacherClass.getCourseName());
  52 + return teacherClassMapper.selectByTeacherClass(search);
49 53 }
50 54  
51 55 @Override
52 56 public TeacherClass selectByTeacher(TeacherClass teacherClass) {
53   - return teacherClassMapper.selectByTeacher(teacherClass);
  57 + TeacherClass search = new TeacherClass();
  58 + search.setTeam(teacherClass.getTeam());
  59 + search.setSchoolId(teacherClass.getSchoolId());
  60 + search.setCourseName(teacherClass.getCourseName());
  61 + search.setTeacherName(teacherClass.getTeacherName());
  62 + search.setClassId(teacherClass.getClassId());
  63 + return teacherClassMapper.selectByTeacherClass(search).get(0);
54 64 }
55 65  
56 66 @Override
57 67 public TeacherClass selectByCourseAndClass(TeacherClass teacherClass) {
58   - return teacherClassMapper.selectByCourseAndClass(teacherClass);
  68 + TeacherClass search = new TeacherClass();
  69 + search.setTeam(teacherClass.getTeam());
  70 + search.setSchoolId(teacherClass.getSchoolId());
  71 + search.setCourseName(teacherClass.getCourseName());
  72 + search.setGrade(teacherClass.getGrade());
  73 + search.setClassId(teacherClass.getClassId());
  74 + return teacherClassMapper.selectByTeacherClass(search).get(0);
59 75 }
60 76  
61 77 @Override
62 78 public List<TeacherClass> selectBySchoolAndTeam(TeacherClass teacherClass) {
63   - return teacherClassMapper.selectBySchoolAndTeam(teacherClass);
  79 + TeacherClass search = new TeacherClass();
  80 + search.setTeam(teacherClass.getTeam());
  81 + search.setSchoolId(teacherClass.getSchoolId());
  82 + return teacherClassMapper.selectByTeacherClass(search);
64 83 }
65 84  
66 85 @Override
... ... @@ -70,7 +89,9 @@ public class TeacherClassServiceImpl implements TeacherClassService {
70 89  
71 90 @Override
72 91 public TeacherClass selectById(int tClassId) {
73   - return teacherClassMapper.selectById(tClassId);
  92 + TeacherClass search = new TeacherClass();
  93 + search.settClassId(tClassId);
  94 + return teacherClassMapper.selectByTeacherClass(search).get(0);
74 95 }
75 96  
76 97 @Override
... ... @@ -90,4 +111,18 @@ public class TeacherClassServiceImpl implements TeacherClassService {
90 111 public int recallTeacherClass(int tClassId) {
91 112 return teacherClassMapper.recallTeacherClass(tClassId);
92 113 }
  114 +
  115 + @Override
  116 + public int selectTeacherDayClass(int schoolId, String team, String teacherName) {
  117 + TeacherClass search = new TeacherClass() ;
  118 + search.setSchoolId(schoolId);
  119 + search.setTeam(team);
  120 + search.setTeacherName(teacherName);
  121 + List<TeacherClass> list = teacherClassMapper.selectByTeacherClass(search);
  122 + int sumClassNumber = 0 ;
  123 + for(TeacherClass teacherClass :list){
  124 + sumClassNumber += teacherClass.getTimes();
  125 + }
  126 + return (sumClassNumber/5) +1;
  127 + }
93 128 }
... ...
src/main/java/com/jevon/vo/req/ParallelClassReqVo.java
... ... @@ -13,7 +13,7 @@ public class ParallelClassReqVo {
13 13 private List<String> intervalList ;
14 14 private int courseType;
15 15  
16   - private int level ;
  16 + private int level ; //1 班级不排 2 年级不排 3 学校不排
17 17 private String grade ;
18 18 private int classId ;
19 19  
... ...
src/main/resources/application.yml
... ... @@ -3,12 +3,12 @@ server:
3 3  
4 4 spring:
5 5 datasource:
6   -# username: SZJXTUSER
7   -# password: xst200919
8   -# url: jdbc:sqlserver://60.190.202.57:14333;database=SmartPaike
9   - username: szjxtuser
10   - password: RQminVCJota3H1u8bBYH
11   - url: jdbc:sqlserver://116.62.241.27:33419;database=SmartCampus_java
  6 + username: SZJXTUSER
  7 + password: xst200919
  8 + url: jdbc:sqlserver://60.190.202.57:14333;database=SmartPaike
  9 +# username: szjxtuser
  10 +# password: RQminVCJota3H1u8bBYH
  11 +# url: jdbc:sqlserver://116.62.241.27:33419;database=SmartCampus_java
12 12 driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
13 13 filters: stat
14 14 maxActive: 20
... ...
src/main/resources/mapping/TeacherClassMapper.xml
... ... @@ -41,10 +41,6 @@
41 41 </foreach>
42 42 </insert>
43 43  
44   - <select id="selectById" parameterType="java.lang.Integer" resultMap="BaseResultMap">
45   - select * from sz_sch_teacher_class where t_class_id =#{tClassId}
46   - </select>
47   -
48 44 <select id="selectHasSchedule" parameterType="com.jevon.model.TeacherClass" resultType="java.lang.Integer">
49 45 select count(status) from sz_sch_teacher_class where school_id = #{schoolId} and team = #{team} and status=1
50 46 </select>
... ... @@ -56,30 +52,37 @@
56 52 update sz_sch_teacher_class set status = 0 where t_class_id =#{tClassId}
57 53 </update>
58 54  
59   - <select id="selectBySchoolAndTeam" parameterType="com.jevon.model.TeacherClass" resultMap="BaseResultMap">
60   - select * from sz_sch_teacher_class where team =#{team} and school_id = #{schoolId}
61   - </select>
62 55 <delete id="deleteBySchoolAndTeam" parameterType="com.jevon.model.TeacherClass">
63 56 delete from sz_sch_teacher_class where team =#{team} and school_id = #{schoolId}
64 57 </delete>
65 58  
66   - <select id="selectByCourseName" parameterType="com.jevon.model.TeacherClass" resultMap="BaseResultMap">
67   - select * from sz_sch_teacher_class where team =#{team} and school_id = #{schoolId} and course_name = #{courseName}
  59 + <select id="selectByTeacherClass" parameterType="java.lang.Integer" resultMap="BaseResultMap">
  60 + select * from sz_sch_teacher_class
  61 + <where>
  62 + <if test="tClassId != null and tClassId != 0">
  63 + and t_class_id =#{tClassId}
  64 + </if>
  65 + <if test="schoolId != null">
  66 + and school_id = #{schoolId}
  67 + </if>
  68 + <if test="team != null">
  69 + and team =#{team}
  70 + </if>
  71 + <if test="courseName != null">
  72 + and course_name = #{courseName}
  73 + </if>
  74 + <if test="teacherName != null">
  75 + and teacher_name = #{teacherName}
  76 + </if>
  77 + <if test="grade != null">
  78 + and grade = #{grade}
  79 + </if>
  80 + <if test="classId != null">
  81 + and class_id =#{classId}
  82 + </if>
  83 + </where>
68 84 </select>
69 85  
70   - <select id="selectByCourseAndClass" parameterType="com.jevon.model.TeacherClass" resultMap="BaseResultMap">
71   - select * from sz_sch_teacher_class where team =#{team} and school_id = #{schoolId} and course_name = #{courseName}
72   - <if test="grade != null">
73   - and grade = #{grade}
74   - </if>
75   - <if test="classId != 0">
76   - and class_id =#{classId}
77   - </if>
78   - </select>
79   -
80   - <select id="selectByTeacher" parameterType="com.jevon.model.TeacherClass" resultMap="BaseResultMap">
81   - select * from sz_sch_teacher_class where team =#{team} and school_id= #{schoolId} and teacher_name = #{teacherName} and class_id = #{classId}
82   - </select>
83 86 <update id="updateByPrimaryKey" parameterType="com.jevon.model.TeacherClass" >
84 87 update sz_sch_teacher_class
85 88 set teacher_id = #{teacherId,jdbcType=INTEGER},
... ... @@ -94,115 +97,4 @@
94 97 where t_class_id = #{tClassId,jdbcType=INTEGER}
95 98 </update>
96 99  
97   - <!-- <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >-->
98   - <!-- select -->
99   - <!-- <include refid="Base_Column_List" />-->
100   - <!-- from sz_sch_teacher_class-->
101   - <!-- where t_class_id = #{tClassId,jdbcType=INTEGER}-->
102   - <!-- </select>-->
103   - <!-- <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >-->
104   - <!-- delete from sz_sch_teacher_class-->
105   - <!-- where t_class_id = #{tClassId,jdbcType=INTEGER}-->
106   - <!-- </delete>-->
107   -<!-- <insert id="insertSelective" parameterType="com.jevon.model.TeacherClass" >-->
108   -<!-- insert into sz_sch_teacher_class-->
109   -<!-- <trim prefix="(" suffix=")" suffixOverrides="," >-->
110   -<!-- <if test="tClassId != null" >-->
111   -<!-- t_class_id,-->
112   -<!-- </if>-->
113   -<!-- <if test="teacherId != null" >-->
114   -<!-- teacher_id,-->
115   -<!-- </if>-->
116   -<!-- <if test="teacherName != null" >-->
117   -<!-- teacher_name,-->
118   -<!-- </if>-->
119   -<!-- <if test="schoolId != null" >-->
120   -<!-- school_id,-->
121   -<!-- </if>-->
122   -<!-- <if test="grade != null" >-->
123   -<!-- grade,-->
124   -<!-- </if>-->
125   -<!-- <if test="classId != null" >-->
126   -<!-- class_id,-->
127   -<!-- </if>-->
128   -<!-- <if test="courseName != null" >-->
129   -<!-- course_name,-->
130   -<!-- </if>-->
131   -<!-- <if test="times != null" >-->
132   -<!-- times,-->
133   -<!-- </if>-->
134   -<!-- <if test="joinTimes != null" >-->
135   -<!-- join_times,-->
136   -<!-- </if>-->
137   -<!-- <if test="createTime != null" >-->
138   -<!-- create_time,-->
139   -<!-- </if>-->
140   -<!-- </trim>-->
141   -<!-- <trim prefix="values (" suffix=")" suffixOverrides="," >-->
142   -<!-- <if test="tClassId != null" >-->
143   -<!-- #{tClassId,jdbcType=INTEGER},-->
144   -<!-- </if>-->
145   -<!-- <if test="teacherId != null" >-->
146   -<!-- #{teacherId,jdbcType=INTEGER},-->
147   -<!-- </if>-->
148   -<!-- <if test="teacherName != null" >-->
149   -<!-- #{teacherName,jdbcType=VARCHAR},-->
150   -<!-- </if>-->
151   -<!-- <if test="schoolId != null" >-->
152   -<!-- #{schoolId,jdbcType=INTEGER},-->
153   -<!-- </if>-->
154   -<!-- <if test="grade != null" >-->
155   -<!-- #{grade,jdbcType=INTEGER},-->
156   -<!-- </if>-->
157   -<!-- <if test="classId != null" >-->
158   -<!-- #{classId,jdbcType=INTEGER},-->
159   -<!-- </if>-->
160   -<!-- <if test="courseName != null" >-->
161   -<!-- #{courseName,jdbcType=VARCHAR},-->
162   -<!-- </if>-->
163   -<!-- <if test="times != null" >-->
164   -<!-- #{times,jdbcType=INTEGER},-->
165   -<!-- </if>-->
166   -<!-- <if test="joinTimes != null" >-->
167   -<!-- #{joinTimes,jdbcType=INTEGER},-->
168   -<!-- </if>-->
169   -<!-- <if test="createTime != null" >-->
170   -<!-- #{createTime,jdbcType=TIMESTAMP},-->
171   -<!-- </if>-->
172   -<!-- </trim>-->
173   -<!-- </insert>-->
174   -<!-- <update id="updateByPrimaryKeySelective" parameterType="com.jevon.model.TeacherClass" >-->
175   -<!-- update sz_sch_teacher_class-->
176   -<!-- <set >-->
177   -<!-- <if test="teacherId != null" >-->
178   -<!-- teacher_id = #{teacherId,jdbcType=INTEGER},-->
179   -<!-- </if>-->
180   -<!-- <if test="teacherName != null" >-->
181   -<!-- teacher_name = #{teacherName,jdbcType=VARCHAR},-->
182   -<!-- </if>-->
183   -<!-- <if test="schoolId != null" >-->
184   -<!-- school_id = #{schoolId,jdbcType=INTEGER},-->
185   -<!-- </if>-->
186   -<!-- <if test="grade != null" >-->
187   -<!-- grade = #{grade,jdbcType=INTEGER},-->
188   -<!-- </if>-->
189   -<!-- <if test="classId != null" >-->
190   -<!-- class_id = #{classId,jdbcType=INTEGER},-->
191   -<!-- </if>-->
192   -<!-- <if test="courseName != null" >-->
193   -<!-- course_name = #{courseName,jdbcType=VARCHAR},-->
194   -<!-- </if>-->
195   -<!-- <if test="times != null" >-->
196   -<!-- times = #{times,jdbcType=INTEGER},-->
197   -<!-- </if>-->
198   -<!-- <if test="joinTimes != null" >-->
199   -<!-- join_times = #{joinTimes,jdbcType=INTEGER},-->
200   -<!-- </if>-->
201   -<!-- <if test="createTime != null" >-->
202   -<!-- create_time = #{createTime,jdbcType=TIMESTAMP},-->
203   -<!-- </if>-->
204   -<!-- </set>-->
205   -<!-- where t_class_id = #{tClassId,jdbcType=INTEGER}-->
206   -<!-- </update>-->
207   -
208 100 </mapper>
209 101 \ No newline at end of file
... ...