From 2c42e64f4f72d2b651290da09436f9650b69d00d Mon Sep 17 00:00:00 2001 From: 陈杰 <504987307@qq.com> Date: Fri, 8 Nov 2019 11:40:05 +0800 Subject: [PATCH] 排课 一个老师对应多个课程 优化 --- src/main/java/com/jevon/controller/LearnStatController.java | 14 ++++++++++++++ src/main/java/com/jevon/controller/ScheduleController.java | 330 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------------------------ src/main/java/com/jevon/controller/ScheduleInitController.java | 9 ++++++++- src/main/java/com/jevon/controller/ScheduleMessageController.java | 21 +++++++++++++++++++++ src/main/java/com/jevon/mapper/TeacherClassMapper.java | 14 +++----------- src/main/java/com/jevon/service/TeacherClassService.java | 3 +++ src/main/java/com/jevon/service/impl/TeacherClassServiceImpl.java | 45 ++++++++++++++++++++++++++++++++++++++++----- src/main/java/com/jevon/vo/req/ParallelClassReqVo.java | 2 +- src/main/resources/application.yml | 12 ++++++------ src/main/resources/mapping/TeacherClassMapper.xml | 158 +++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------------- 10 files changed, 307 insertions(+), 301 deletions(-) diff --git a/src/main/java/com/jevon/controller/LearnStatController.java b/src/main/java/com/jevon/controller/LearnStatController.java index 9423d48..09f7fba 100644 --- a/src/main/java/com/jevon/controller/LearnStatController.java +++ b/src/main/java/com/jevon/controller/LearnStatController.java @@ -579,6 +579,20 @@ public class LearnStatController { return repVO; } + @ApiOperation("getForm2_2_5") + @RequestMapping(value = "getForm2_2_5", method = RequestMethod.POST) + public Map getForm2_2_5(@RequestBody GetLearnReqVo getLearnReqVo){ + Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); + //分数段 + Double maxScore = analyse.getMaxScore(); + Map segmentMap = new HashMap<>(); + segmentMap.put("A",maxScore*0.85); + segmentMap.put("B",maxScore*0.7); + segmentMap.put("C",maxScore*0.6); + segmentMap.put("D",maxScore*0.6); + return segmentMap ; + } + @ApiOperation("getForm3_1") @RequestMapping(value = "getForm3_1", method = RequestMethod.POST) public Form6RepVO getForm3_1(@RequestBody GetLearnReqVo getLearnReqVo){ diff --git a/src/main/java/com/jevon/controller/ScheduleController.java b/src/main/java/com/jevon/controller/ScheduleController.java index 06eb654..8d166cd 100644 --- a/src/main/java/com/jevon/controller/ScheduleController.java +++ b/src/main/java/com/jevon/controller/ScheduleController.java @@ -236,13 +236,8 @@ public class ScheduleController { for(String msg : parallelClassReqVo.getIntervalList()){ String[] arrayMsg = msg.split("-"); ClassCourse classCourse = new ClassCourse(); - if(Integer.valueOf(arrayMsg[0]) > 5){ - classCourse.setSingleOrDouble(2); - classCourse.setWeek(Integer.valueOf(arrayMsg[0])-5); - }else { - classCourse.setSingleOrDouble(1); - classCourse.setWeek(Integer.valueOf(arrayMsg[0])); - } + classCourse.setSingleOrDouble(1); + classCourse.setWeek(Integer.valueOf(arrayMsg[0])); classCourse.setCourseNumber(Integer.valueOf(arrayMsg[1])); limitList.add(classCourse); } @@ -291,10 +286,11 @@ public class ScheduleController { insertTeacherCourse(isDouble, teacherCourse); } TeacherClass searchTeacher = new TeacherClass(); - searchTeacher.setTeacherName(temp.getTeacherName()); searchTeacher.setSchoolId(temp.getSchoolId()); - searchTeacher.setClassId(temp.getClassId()); searchTeacher.setTeam(temp.getTeam()); + searchTeacher.setClassId(temp.getClassId()); + searchTeacher.setTeacherName(temp.getTeacherName()); + searchTeacher.setCourseName(temp.getCourseName()); TeacherClass teacherClass = teacherClassService.selectByTeacher(searchTeacher); if(teacherClass.getStatus() == 1){ //已经排课不再排课 @@ -302,47 +298,32 @@ public class ScheduleController { ClassCourse classCourse = new ClassCourse(); classCourse.setClassId(temp.getClassId()); classCourse.setTeam(schedule.getTeam()); - if(isDouble){ -// //双周排课 先排第一周 -// int times = teacherClass.getTimes(); -// int joinTimes = teacherClass.getJoinTimes(); -// classCourse.setSingleOrDouble(1); -// teacherClass.setJoinTimes(times/2); -// teacherClass.setJoinTimes(joinTimes/2); -// List classCourses = classCourseService.selectByClassIdAndSingleOrDouble(classCourse); -// initWeekCourse(joinList,teacherClass,teacherCourse,classCourses,limitList,0); -// //第二周 -// classCourse.setSingleOrDouble(1); -// teacherClass.setJoinTimes(times/2+1); -// teacherClass.setJoinTimes(joinTimes/2+1); -// classCourses = classCourseService.selectByClassIdAndSingleOrDouble(classCourse); -// initWeekCourse(joinList,teacherClass,teacherCourse,classCourses,limitList,0); - }else { - classCourse.setSingleOrDouble(1); - List classCourses = classCourseService.selectByClassIdAndSingleOrDouble(classCourse); - initWeekCourse(joinList,teacherClass,teacherCourse,classCourses,limitList,0); - //排课结束,更新 - //如果是合班的话,需要更新多个teacherClass - teacherClassService.updateSchedule(teacherClass.gettClassId()); - JoinClass joinClass = new JoinClass(); - joinClass.setSchoolId(schedule.getSchoolId()); - joinClass.setTeam(schedule.getTeam()); - joinClass.setCourseId(courseService.selectBySchoolIdAndCourseName(schedule.getSchoolId(),teacherClass.getCourseName()).getCourseId()); - joinClass.setClassId(classCourse.getClassId()); - List joinClasses = joinClassService.selectByCourse(joinClass); - if(joinClasses != null && joinClasses.size() > 0){ - List resultList = joinClassService.selectByCourseGroup(joinClasses.get(0).getCourseGroup()); - for(JoinClass joinClass1 :resultList){ - TeacherClass searchTeacherClass = new TeacherClass(); - searchTeacherClass.setSchoolId(schedule.getSchoolId()); - searchTeacherClass.setTeam(schedule.getTeam()); - searchTeacherClass.setCourseName(teacherClass.getCourseName()); - searchTeacherClass.setClassId(joinClass1.getClassId()); - TeacherClass resultTeacherClass = teacherClassService.selectByCourseAndClass(searchTeacherClass); - teacherClassService.updateSchedule(resultTeacherClass.gettClassId()); - } + classCourse.setSchoolId(schedule.getSchoolId()); + classCourse.setSingleOrDouble(1); + List classCourses = classCourseService.selectByClassIdAndSingleOrDouble(classCourse); + initWeekCourse(parallelClassReqVo.getCourseType(),joinList,teacherClass,classCourses,limitList,0); + //排课结束,更新 + //如果是合班的话,需要更新多个teacherClass + teacherClassService.updateSchedule(teacherClass.gettClassId()); + JoinClass joinClass = new JoinClass(); + joinClass.setSchoolId(schedule.getSchoolId()); + joinClass.setTeam(schedule.getTeam()); + joinClass.setCourseId(courseService.selectBySchoolIdAndCourseName(schedule.getSchoolId(),teacherClass.getCourseName()).getCourseId()); + joinClass.setClassId(classCourse.getClassId()); + List joinClasses = joinClassService.selectByCourse(joinClass); + if(joinClasses != null && joinClasses.size() > 0){ + List resultList = joinClassService.selectByCourseGroup(joinClasses.get(0).getCourseGroup()); + for(JoinClass joinClass1 :resultList){ + TeacherClass searchTeacherClass = new TeacherClass(); + searchTeacherClass.setSchoolId(schedule.getSchoolId()); + searchTeacherClass.setTeam(schedule.getTeam()); + searchTeacherClass.setCourseName(teacherClass.getCourseName()); + searchTeacherClass.setClassId(joinClass1.getClassId()); + TeacherClass resultTeacherClass = teacherClassService.selectByCourseAndClass(searchTeacherClass); + teacherClassService.updateSchedule(resultTeacherClass.gettClassId()); } } + } } return baseVo; @@ -422,7 +403,16 @@ public class ScheduleController { return classCourses; } - private void initWeekCourse(List joinList ,TeacherClass teacherClass , TeacherCourse teacherCourse , + /** + * + * @param courseType 所排课的课程类型 // 1 主课 2 副课 3 公共课 + * @param joinList 联课优先级 + * @param teacherClass 老师授课信息 + * @param list 班级课程 + * @param limitList 单课优先级 + * @param functionTimes 循环次数 + */ + private void initWeekCourse(int courseType ,List joinList ,TeacherClass teacherClass , List list , List limitList ,int functionTimes){ List sort = new ArrayList<>(); String team = teacherClass.getTeam(); @@ -448,19 +438,19 @@ public class ScheduleController { } ClassCourse classCourseNext =getClassCourse(list, week, courseNumber+1); if (StringUtils.isBlank(classCourse.getCourseName()) && StringUtils.isBlank(classCourseNext.getCourseName())) { - Course course = courseService.selectBySchoolIdAndCourseName(teacherClass.getSchoolId(),teacherCourse.getCourseName()); + Course course = courseService.selectBySchoolIdAndCourseName(teacherClass.getSchoolId(),teacherClass.getCourseName()); classCourse.setCourseOpenId(course.getCourseId()); classCourse.setCourseName(teacherClass.getCourseName()); classCourseNext.setCourseOpenId(course.getCourseId()); classCourseNext.setCourseName(teacherClass.getCourseName()); TeacherCourse searchTeacherCourse = new TeacherCourse(); searchTeacherCourse.setTeam(team); - searchTeacherCourse.setSchoolId(teacherCourse.getSchoolId()); - searchTeacherCourse.setGrade(teacherCourse.getGrade()); - searchTeacherCourse.setTeacherName(teacherCourse.getTeacherName()); + searchTeacherCourse.setSchoolId(teacherClass.getSchoolId()); + searchTeacherCourse.setGrade(teacherClass.getGrade()); + searchTeacherCourse.setTeacherName(teacherClass.getTeacherName()); searchTeacherCourse.setSingleOrDouble(singleOrDouble); searchTeacherCourse.setWeek(week); - searchTeacherCourse.setCourseName(teacherCourse.getCourseName()); + searchTeacherCourse.setCourseName(teacherClass.getCourseName()); //查询当天老师的课是否已经大于等于2 防止老师一天课程太多 int dayCourse = teacherCourseService.selectTeacherDayCourseNumber(searchTeacherCourse); if(dayCourse >= 2){ @@ -473,9 +463,9 @@ public class ScheduleController { if (StringUtils.isBlank(teacherFirst.getCourseName()) && StringUtils.isBlank(teacherSecond.getCourseName())) { classCourseService.updateByPrimaryKey(classCourse); classCourseService.updateByPrimaryKey(classCourseNext); - teacherFirst.setCourseName(teacherCourse.getCourseName()); + teacherFirst.setCourseName(teacherClass.getCourseName()); teacherFirst.setClassId(classCourse.getClassId()+""); - teacherSecond.setCourseName(teacherCourse.getCourseName()); + teacherSecond.setCourseName(teacherClass.getCourseName()); teacherSecond.setClassId(classCourse.getClassId()+""); teacherCourseService.updateTeacherCourse(teacherFirst); teacherCourseService.updateTeacherCourse(teacherSecond); @@ -515,118 +505,170 @@ public class ScheduleController { if(flag){ if(StringUtils.isBlank(classCourse.getCourseName())){ Course course = courseService.selectBySchoolIdAndCourseName(teacherClass.getSchoolId(),teacherClass.getCourseName()); - classCourse.setCourseOpenId(course.getCourseId()); - classCourse.setCourseName(teacherClass.getCourseName()); - //判断当天是否已经排该课程 - if(classCourseService.selectCourseByClassIdAndWeek(classCourse) > 1){ - break; + //约束条件判断 + TeacherCourse result = checkConstraint(courseType,classCourse,teacherClass,course,singleOrDouble,week,courseNumber); + if(result == null){ + break; } - TeacherCourse searchTeacherCourse = new TeacherCourse(); - searchTeacherCourse.setTeam(team); - searchTeacherCourse.setSchoolId(teacherCourse.getSchoolId()); - searchTeacherCourse.setGrade(teacherCourse.getGrade()); - searchTeacherCourse.setTeacherName(teacherCourse.getTeacherName()); - searchTeacherCourse.setSingleOrDouble(singleOrDouble); - searchTeacherCourse.setWeek(week); - searchTeacherCourse.setCourseNumber(courseNumber); - searchTeacherCourse.setCourseName(teacherClass.getCourseName()); - TeacherCourse result = teacherCourseService.selectTeacherCourse(searchTeacherCourse); - //老师当天课程不能多于2 - if(teacherCourseService.selectTeacherDayCourseNumber(searchTeacherCourse) >= 2){ + //设置课程 + if(setCourse(classCourse,teacherClass,result,course)){ + times++; + before = courseNumber; break; - } - //合课 多做一层判断 另一个班级这节课也为空 - JoinClass joinClass = new JoinClass(); - joinClass.setSchoolId(classCourse.getSchoolId()); - joinClass.setTeam(classCourse.getTeam()); - joinClass.setCourseId(classCourse.getCourseOpenId()); - joinClass.setClassId(classCourse.getClassId()); - List joinClasses = joinClassService.selectByCourse(joinClass); - if(joinClasses != null && joinClasses.size() > 0){ - //说明是合班的课程 - boolean isClash = false ; - List joinClassList = new ArrayList<>(); - List resultList = joinClassService.selectByCourseGroup(joinClasses.get(0).getCourseGroup()); - for(JoinClass temp : resultList){ - ClassCourse joinClassCourse = new ClassCourse(); - joinClassCourse.setTeam(classCourse.getTeam()); - joinClassCourse.setClassId(temp.getClassId()); - joinClassCourse.setWeek(classCourse.getWeek()); - joinClassCourse.setCourseNumber(classCourse.getCourseNumber()); - joinClassCourse.setSingleOrDouble(classCourse.getSingleOrDouble()); - ClassCourse joinResultClassCourse = classCourseService.selectClassCourse(joinClassCourse); - joinClassList.add(joinResultClassCourse); - if(StringUtils.isNotBlank(joinResultClassCourse.getCourseName())){ - isClash = true ; - break; - } - } - if(isClash){ - //合班的班级有 该节次的课 已经有老师上了 - continue; - }else { - String classIdString = ""; - for(ClassCourse temp : joinClassList){ - classIdString = course.getCourseId() + "," ; - temp.setCourseOpenId(course.getCourseId()); - temp.setCourseName(teacherClass.getCourseName()); - classCourseService.updateByPrimaryKey(temp); - } - result.setGrade(classCourse.getGrade()); - result.setClassId(classIdString); - result.setCourseName(classCourse.getCourseName()); - teacherCourseService.updateTeacherCourse(result); - times++; - before = courseNumber; - break; - } }else { - //普通课程 - if(StringUtils.isBlank(result.getCourseName())){ - classCourseService.updateByPrimaryKey(classCourse); - result.setGrade(classCourse.getGrade()); - result.setClassId(classCourse.getClassId()+""); - result.setCourseName(classCourse.getCourseName()); - teacherCourseService.updateTeacherCourse(result); - times++; - before = courseNumber; - break; - }else { - continue; - } + continue; } } } } } - if(functionTimes > 1){ + if(functionTimes > 2){ //递归次数限制,防止无限循环,内存溢出,手动优化课程 - optimizeCourse(teacherClass); + optimizeCourse(teacherClass,courseType); }else{ if(times < teacherClass.getTimes()){ //优先时段中课程数 不够 teacherClass.setTimes(teacherClass.getTimes()-times); teacherClass.setJoinTimes(teacherClass.getJoinTimes()-joinTimes); - //放大范围 - limitList = new ArrayList<>(); + //放大优先范围,上下一节,并去掉原来的优先范围 + List newLimitList = new ArrayList<>(); int maxCourseNumber =classCourseService.selectMaxCourseNumber(teacherClass.getSchoolId(),team); - for(int i = 1 ; i<= 5 ; i++){ - for(int j = 1 ; j <=maxCourseNumber ; j++) { + for(ClassCourse classCourse : limitList){ + if(classCourse.getCourseNumber() == 1){ ClassCourse temp = new ClassCourse(); - temp.setWeek(i); - temp.setCourseNumber(j); - limitList.add(temp); + temp.setWeek(classCourse.getWeek()); + temp.setCourseNumber(2); + newLimitList.add(temp); + }else if(classCourse.getCourseNumber() == maxCourseNumber){ + ClassCourse temp = new ClassCourse(); + temp.setWeek(classCourse.getWeek()); + temp.setCourseNumber(maxCourseNumber-1); + newLimitList.add(temp); + }else{ + ClassCourse temp = new ClassCourse(); + temp.setWeek(classCourse.getWeek()); + temp.setCourseNumber(classCourse.getCourseNumber()-1); + newLimitList.add(temp); + ClassCourse temp2 = new ClassCourse(); + temp2.setWeek(classCourse.getWeek()); + temp2.setCourseNumber(classCourse.getCourseNumber()+1); + newLimitList.add(temp2); + } + } + List result = new ArrayList<>(); + for (int i = 0; i < newLimitList.size() ; i++) { + boolean isExist = false ; + for(ClassCourse classCourse : limitList){ + if(newLimitList.get(i).getWeek() == classCourse.getWeek() && + newLimitList.get(i).getCourseNumber() == classCourse.getCourseNumber()){ + isExist = true ; + } + } + if(!isExist){ + result.add(newLimitList.get(i)); } } functionTimes ++ ; - initWeekCourse(joinList,teacherClass,teacherCourse,list,limitList,functionTimes); + initWeekCourse(courseType,joinList,teacherClass,list,result,functionTimes); + } + } + } + + //设置课程 + private boolean setCourse(ClassCourse classCourse ,TeacherClass teacherClass , TeacherCourse result , Course course){ + //合课 多做一层判断 另一个班级这节课也为空 + JoinClass joinClass = new JoinClass(); + joinClass.setSchoolId(classCourse.getSchoolId()); + joinClass.setTeam(classCourse.getTeam()); + joinClass.setCourseId(classCourse.getCourseOpenId()); + joinClass.setClassId(classCourse.getClassId()); + List joinClasses = joinClassService.selectByCourse(joinClass); + if(joinClasses != null && joinClasses.size() > 0){ + //说明是合班的课程 + boolean isClash = false ; + List joinClassList = new ArrayList<>(); + List resultList = joinClassService.selectByCourseGroup(joinClasses.get(0).getCourseGroup()); + for(JoinClass temp : resultList){ + ClassCourse joinClassCourse = new ClassCourse(); + joinClassCourse.setTeam(classCourse.getTeam()); + joinClassCourse.setClassId(temp.getClassId()); + joinClassCourse.setWeek(classCourse.getWeek()); + joinClassCourse.setCourseNumber(classCourse.getCourseNumber()); + joinClassCourse.setSingleOrDouble(classCourse.getSingleOrDouble()); + ClassCourse joinResultClassCourse = classCourseService.selectClassCourse(joinClassCourse); + joinClassList.add(joinResultClassCourse); + if(StringUtils.isNotBlank(joinResultClassCourse.getCourseName())){ + isClash = true ; + break; + } + } + if(isClash){ + //合班的班级有 该节次的课 已经有老师上了 + return false; + }else { + String classIdString = ""; + for(ClassCourse temp : joinClassList){ + classIdString = course.getCourseId() + "," ; + temp.setCourseOpenId(course.getCourseId()); + temp.setCourseName(teacherClass.getCourseName()); + classCourseService.updateByPrimaryKey(temp); + } + result.setGrade(classCourse.getGrade()); + result.setClassId(classIdString); + result.setCourseName(classCourse.getCourseName()); + teacherCourseService.updateTeacherCourse(result); + return true; } + }else { + //普通课程 + if(StringUtils.isBlank(result.getCourseName())){ + classCourseService.updateByPrimaryKey(classCourse); + result.setGrade(classCourse.getGrade()); + result.setClassId(classCourse.getClassId()+""); + result.setCourseName(classCourse.getCourseName()); + teacherCourseService.updateTeacherCourse(result); + return true; + }else { + return false ; + } + } + } + + //判断班级与老师的约束条件 + private TeacherCourse checkConstraint(int courseType , ClassCourse classCourse , TeacherClass teacherClass , + Course course , int singleOrDouble , int week , int courseNumber ){ + classCourse.setCourseOpenId(course.getCourseId()); + classCourse.setCourseName(teacherClass.getCourseName()); + //判断当天是否已经排该课程 主课一天2节,其他课一天1节 + if(courseType == 1 && classCourseService.selectCourseByClassIdAndWeek(classCourse) >= 2){ + return null ; + } + if(courseType != 1 && classCourseService.selectCourseByClassIdAndWeek(classCourse) >= 1){ + return null ; } + TeacherCourse searchTeacherCourse = new TeacherCourse(); + searchTeacherCourse.setTeam(teacherClass.getTeam()); + searchTeacherCourse.setSchoolId(teacherClass.getSchoolId()); + searchTeacherCourse.setGrade(teacherClass.getGrade()); + searchTeacherCourse.setTeacherName(teacherClass.getTeacherName()); + searchTeacherCourse.setSingleOrDouble(singleOrDouble); + searchTeacherCourse.setWeek(week); + searchTeacherCourse.setCourseNumber(courseNumber); + searchTeacherCourse.setCourseName(teacherClass.getCourseName()); + TeacherCourse result = teacherCourseService.selectTeacherCourse(searchTeacherCourse); + //老师当天课程不能多于 该老师平均课程 + if(teacherCourseService.selectTeacherDayCourseNumber(searchTeacherCourse) + >= teacherClassService.selectTeacherDayClass(teacherClass.getSchoolId(),teacherClass.getTeam(),teacherClass.getTeacherName())){ + return null ; + } + return result ; } + //课程冲突 ,调优 - private void optimizeCourse(TeacherClass teacherClass){ + private void optimizeCourse(TeacherClass teacherClass,int courseType){ int times = teacherClass.getTimes(); + int maxCourseNumber = classCourseService.selectMaxCourseNumber(teacherClass.getSchoolId(),teacherClass.getTeam()) ; while (times > 0){ boolean flag = false ; List noClassList = classCourseService.selectNoCourse(teacherClass.getClassId(),teacherClass.getTeam()); @@ -646,7 +688,7 @@ public class ScheduleController { } for(int j = -1 ; j<=1 ; j++){ int courseNumberChange = classCourse.getCourseNumber() + j ; - if(courseNumberChange > classCourseService.selectMaxCourseNumber(teacherClass.getSchoolId(),teacherClass.getTeam())){ + if(courseNumberChange > maxCourseNumber){ continue; } if(courseNumberChange < 1){ diff --git a/src/main/java/com/jevon/controller/ScheduleInitController.java b/src/main/java/com/jevon/controller/ScheduleInitController.java index c192cd3..2d83a05 100644 --- a/src/main/java/com/jevon/controller/ScheduleInitController.java +++ b/src/main/java/com/jevon/controller/ScheduleInitController.java @@ -86,6 +86,12 @@ public class ScheduleInitController { return baseVo; } + @ApiOperation("tset ") + @RequestMapping(value = "test", method = RequestMethod.POST) + public void test(){ + initMessage(1021); + } + @ApiOperation("更新计划") @RequestMapping(value = "updateSchedule", method = RequestMethod.POST) public BaseVo updateSchedule(@RequestBody UpdateScheduleReqVo updateScheduleReqVo){ @@ -210,7 +216,8 @@ public class ScheduleInitController { // 获得工作簿 Workbook workbook = null; String file = excelFile.getName(); - InputStream inputStream = HttpClientUtils.GetFileInputStream(initTeacherCourseReqVo.getUrl()); + InputStream inputStream = new FileInputStream(excelFile) ; + //InputStream inputStream = HttpClientUtils.GetFileInputStream(initTeacherCourseReqVo.getUrl()); if(inputStream == null){ baseVo.setMessage("路径不存在"); baseVo.setSuccess(false); diff --git a/src/main/java/com/jevon/controller/ScheduleMessageController.java b/src/main/java/com/jevon/controller/ScheduleMessageController.java index 5fc3ebf..14e3a2e 100644 --- a/src/main/java/com/jevon/controller/ScheduleMessageController.java +++ b/src/main/java/com/jevon/controller/ScheduleMessageController.java @@ -122,9 +122,30 @@ public class ScheduleMessageController { search.setSingleOrDouble(1); search.setTeam(schedule.getTeam()); classCourseRepVo.setData(classCourseService.selectByClassIdAndSingleOrDouble(search)); + List list = classCourseService.selectByClassIdAndSingleOrDouble(search); + for(int i = 1 ; i < 6 ; i++){ + System.out.print("周"+i+" "); + for(int j = 1 ; j < 7 ; j++){ + System.out.print(getClassCourse(list,i,j).getCourseName() + " "); + } + System.out.println(); + } return classCourseRepVo; } + //查所在课表中 返回某天某节课 + private ClassCourse getClassCourse(List list , int week , int courseNumber){ + ClassCourse result = null ; + for(ClassCourse classCourse : list){ + if(classCourse.getWeek() == week && classCourse.getCourseNumber() == courseNumber){ + result = classCourse ; + break; + } + } + return result; + } + + @ApiOperation("获取合班信息") @RequestMapping(value = "getJoinList", method = RequestMethod.POST) public JoinRepVo getJoinList(@RequestBody ScheduleIdReqVo scheduleIdReqVo){ diff --git a/src/main/java/com/jevon/mapper/TeacherClassMapper.java b/src/main/java/com/jevon/mapper/TeacherClassMapper.java index 62a4996..ff9ec81 100644 --- a/src/main/java/com/jevon/mapper/TeacherClassMapper.java +++ b/src/main/java/com/jevon/mapper/TeacherClassMapper.java @@ -1,6 +1,5 @@ package com.jevon.mapper; -import com.jevon.model.Teacher; import com.jevon.model.TeacherClass; import java.util.List; @@ -13,21 +12,14 @@ public interface TeacherClassMapper { int insertBatch(List teacherClasses); - List selectByCourseName(TeacherClass teacherClass); - - TeacherClass selectByTeacher(TeacherClass teacherClass); - - TeacherClass selectByCourseAndClass(TeacherClass teacherClass); - - List selectBySchoolAndTeam(TeacherClass teacherClass); - int deleteBySchoolAndTeam(TeacherClass teacherClass); - TeacherClass selectById(int tClassId); - int updateSchedule(int tClassId); int selectHasSchedule(TeacherClass teacherClass); int recallTeacherClass(int tClassId); + + + List selectByTeacherClass(TeacherClass teacherClass); } \ No newline at end of file diff --git a/src/main/java/com/jevon/service/TeacherClassService.java b/src/main/java/com/jevon/service/TeacherClassService.java index c53ae56..d937e02 100644 --- a/src/main/java/com/jevon/service/TeacherClassService.java +++ b/src/main/java/com/jevon/service/TeacherClassService.java @@ -35,4 +35,7 @@ public interface TeacherClassService { int recallTeacherClass(int tClassId); + //查询该老师一周的课程,并计算平均每天最多课 + int selectTeacherDayClass(int schoolId , String team , String teacherName); + } diff --git a/src/main/java/com/jevon/service/impl/TeacherClassServiceImpl.java b/src/main/java/com/jevon/service/impl/TeacherClassServiceImpl.java index 08d4cd9..f08c75a 100644 --- a/src/main/java/com/jevon/service/impl/TeacherClassServiceImpl.java +++ b/src/main/java/com/jevon/service/impl/TeacherClassServiceImpl.java @@ -45,22 +45,41 @@ public class TeacherClassServiceImpl implements TeacherClassService { @Override public List selectByCourseName(TeacherClass teacherClass) { - return teacherClassMapper.selectByCourseName(teacherClass); + TeacherClass search = new TeacherClass(); + search.setTeam(teacherClass.getTeam()); + search.setSchoolId(teacherClass.getSchoolId()); + search.setCourseName(teacherClass.getCourseName()); + return teacherClassMapper.selectByTeacherClass(search); } @Override public TeacherClass selectByTeacher(TeacherClass teacherClass) { - return teacherClassMapper.selectByTeacher(teacherClass); + TeacherClass search = new TeacherClass(); + search.setTeam(teacherClass.getTeam()); + search.setSchoolId(teacherClass.getSchoolId()); + search.setCourseName(teacherClass.getCourseName()); + search.setTeacherName(teacherClass.getTeacherName()); + search.setClassId(teacherClass.getClassId()); + return teacherClassMapper.selectByTeacherClass(search).get(0); } @Override public TeacherClass selectByCourseAndClass(TeacherClass teacherClass) { - return teacherClassMapper.selectByCourseAndClass(teacherClass); + TeacherClass search = new TeacherClass(); + search.setTeam(teacherClass.getTeam()); + search.setSchoolId(teacherClass.getSchoolId()); + search.setCourseName(teacherClass.getCourseName()); + search.setGrade(teacherClass.getGrade()); + search.setClassId(teacherClass.getClassId()); + return teacherClassMapper.selectByTeacherClass(search).get(0); } @Override public List selectBySchoolAndTeam(TeacherClass teacherClass) { - return teacherClassMapper.selectBySchoolAndTeam(teacherClass); + TeacherClass search = new TeacherClass(); + search.setTeam(teacherClass.getTeam()); + search.setSchoolId(teacherClass.getSchoolId()); + return teacherClassMapper.selectByTeacherClass(search); } @Override @@ -70,7 +89,9 @@ public class TeacherClassServiceImpl implements TeacherClassService { @Override public TeacherClass selectById(int tClassId) { - return teacherClassMapper.selectById(tClassId); + TeacherClass search = new TeacherClass(); + search.settClassId(tClassId); + return teacherClassMapper.selectByTeacherClass(search).get(0); } @Override @@ -90,4 +111,18 @@ public class TeacherClassServiceImpl implements TeacherClassService { public int recallTeacherClass(int tClassId) { return teacherClassMapper.recallTeacherClass(tClassId); } + + @Override + public int selectTeacherDayClass(int schoolId, String team, String teacherName) { + TeacherClass search = new TeacherClass() ; + search.setSchoolId(schoolId); + search.setTeam(team); + search.setTeacherName(teacherName); + List list = teacherClassMapper.selectByTeacherClass(search); + int sumClassNumber = 0 ; + for(TeacherClass teacherClass :list){ + sumClassNumber += teacherClass.getTimes(); + } + return (sumClassNumber/5) +1; + } } diff --git a/src/main/java/com/jevon/vo/req/ParallelClassReqVo.java b/src/main/java/com/jevon/vo/req/ParallelClassReqVo.java index b788688..b2ecf53 100644 --- a/src/main/java/com/jevon/vo/req/ParallelClassReqVo.java +++ b/src/main/java/com/jevon/vo/req/ParallelClassReqVo.java @@ -13,7 +13,7 @@ public class ParallelClassReqVo { private List intervalList ; private int courseType; - private int level ; + private int level ; //1 班级不排 2 年级不排 3 学校不排 private String grade ; private int classId ; diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 108d6dc..bec20be 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -3,12 +3,12 @@ server: spring: datasource: -# username: SZJXTUSER -# password: xst200919 -# url: jdbc:sqlserver://60.190.202.57:14333;database=SmartPaike - username: szjxtuser - password: RQminVCJota3H1u8bBYH - url: jdbc:sqlserver://116.62.241.27:33419;database=SmartCampus_java + username: SZJXTUSER + password: xst200919 + url: jdbc:sqlserver://60.190.202.57:14333;database=SmartPaike +# username: szjxtuser +# password: RQminVCJota3H1u8bBYH +# url: jdbc:sqlserver://116.62.241.27:33419;database=SmartCampus_java driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver filters: stat maxActive: 20 diff --git a/src/main/resources/mapping/TeacherClassMapper.xml b/src/main/resources/mapping/TeacherClassMapper.xml index f463b44..c3cea8c 100644 --- a/src/main/resources/mapping/TeacherClassMapper.xml +++ b/src/main/resources/mapping/TeacherClassMapper.xml @@ -41,10 +41,6 @@ - - @@ -56,30 +52,37 @@ update sz_sch_teacher_class set status = 0 where t_class_id =#{tClassId} - delete from sz_sch_teacher_class where team =#{team} and school_id = #{schoolId} - + select * from sz_sch_teacher_class + + + and t_class_id =#{tClassId} + + + and school_id = #{schoolId} + + + and team =#{team} + + + and course_name = #{courseName} + + + and teacher_name = #{teacherName} + + + and grade = #{grade} + + + and class_id =#{classId} + + - - - update sz_sch_teacher_class set teacher_id = #{teacherId,jdbcType=INTEGER}, @@ -94,115 +97,4 @@ where t_class_id = #{tClassId,jdbcType=INTEGER} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file -- libgit2 0.21.0