diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..1561b10
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 0000000..b26911b
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..4b661a5
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml
new file mode 100644
index 0000000..e96534f
--- /dev/null
+++ b/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..dea607e
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,191 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1569286488778
+
+
+ 1569286488778
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ file://$PROJECT_DIR$/src/main/java/com/jevon/controller/ScheduleController.java
+ 720
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..9d08942
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,219 @@
+
+
+ 4.0.0
+
+ com.jevon
+ smartCampus
+ 1.0-SNAPSHOT
+
+
+
+ 1.5.6.RELEASE
+
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.3
+
+
+
+ com.microsoft.sqlserver
+ mssql-jdbc
+ 6.4.0.jre8
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+ ${spring.boot.version}
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ ${spring.boot.version}
+ test
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ ${spring.boot.version}
+
+
+
+ org.springframework.boot
+ spring-boot-starter-freemarker
+ 1.4.4.RELEASE
+
+
+ com.googlecode.rapid-framework
+ rapid-core
+ 4.0.5
+
+
+
+ org.springframework
+ spring-aop
+ 4.3.10.RELEASE
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.16
+
+
+
+ org.apache.commons
+ commons-lang3
+ 3.3.2
+
+
+
+
+ org.slf4j
+ slf4j-api
+ 1.7.13
+
+
+
+
+ commons-net
+ commons-net
+ 2.0
+
+
+ org.apache.poi
+ poi
+ 4.1.0
+
+
+
+ org.apache.poi
+ poi-ooxml
+ 4.1.0
+
+
+
+
+ org.mybatis.spring.boot
+ mybatis-spring-boot-starter
+ 1.3.0
+
+
+
+ io.springfox
+ springfox-swagger2
+ 2.6.1
+
+
+ io.springfox
+ springfox-swagger-ui
+ 2.6.1
+
+
+ com.fasterxml.jackson.core
+ jackson-core
+ 2.6.5
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ 2.6.5
+
+
+ com.fasterxml.jackson.core
+ jackson-annotations
+ 2.6.5
+
+
+
+
+
+
+ smartCampus
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.1
+
+ 1.8
+ 1.8
+ UTF-8
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+
+
+
+ com.jevon.Application
+ true
+ lib/
+
+
+ ./config/
+
+
+
+ config/**
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ copy
+ package
+
+ copy-dependencies
+
+
+
+ ${project.build.directory}/lib
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+ 2.5
+
+ UTF-8
+
+
+
+
+ maven-source-plugin
+ 2.2
+
+ true
+
+
+
+ compile
+
+ jar
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/smartCampus.iml b/smartCampus.iml
new file mode 100644
index 0000000..78b2cc5
--- /dev/null
+++ b/smartCampus.iml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/src/main/java/com/jevon/Application.java b/src/main/java/com/jevon/Application.java
new file mode 100644
index 0000000..435a3f1
--- /dev/null
+++ b/src/main/java/com/jevon/Application.java
@@ -0,0 +1,16 @@
+package com.jevon;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cache.annotation.EnableCaching;
+
+@EnableCaching
+@SpringBootApplication
+@MapperScan("com.jevon.mapper")
+public class Application {
+
+ public static void main(String[] args) {
+ SpringApplication.run(Application.class, args);
+ }
+}
diff --git a/src/main/java/com/jevon/Swagger2.java b/src/main/java/com/jevon/Swagger2.java
new file mode 100644
index 0000000..9a66baf
--- /dev/null
+++ b/src/main/java/com/jevon/Swagger2.java
@@ -0,0 +1,38 @@
+package com.jevon;
+
+import io.swagger.annotations.ApiOperation;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+@EnableSwagger2
+@Configuration //让Spring来加载该类配置
+public class Swagger2 {
+
+ @Bean
+ public Docket createRestApi() {
+ return new Docket(DocumentationType.SWAGGER_2)
+ .apiInfo(apiInfo())
+ .enableUrlTemplating(true)
+ .select()
+ // 扫描所有有注解的api,用这种方式更灵活
+ .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
+ .paths(PathSelectors.any())
+ .build();
+
+ }
+ private ApiInfo apiInfo() {
+ return new ApiInfoBuilder()
+ .title("Spring Boot中使用Swagger2构建RESTful APIs")
+ .description("接口文档")
+ .termsOfServiceUrl("")
+ .version("1.0")
+ .build();
+ }
+}
diff --git a/src/main/java/com/jevon/controller/InitController.java b/src/main/java/com/jevon/controller/InitController.java
new file mode 100644
index 0000000..4d8db70
--- /dev/null
+++ b/src/main/java/com/jevon/controller/InitController.java
@@ -0,0 +1,421 @@
+package com.jevon.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.jevon.model.*;
+import com.jevon.service.*;
+import com.jevon.utils.HttpClientUtils;
+import com.jevon.vo.BaseVo;
+import com.jevon.vo.rep.InitRepVo;
+import com.jevon.vo.rep.ScheduleRepVo;
+import com.jevon.vo.req.CreateScheduleReqVo;
+import com.jevon.vo.req.InitTeacherCourseReqVo;
+import com.jevon.vo.req.ScheduleIdReqVo;
+import com.jevon.vo.req.UpdateScheduleReqVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.*;
+
+@RestController
+@RequestMapping(value = "/init")
+@Api(value = "排课表")
+public class InitController {
+
+ @Autowired
+ ClassModelService classModelService;
+
+ @Autowired
+ TeacherClassService teacherClassService;
+
+ @Autowired
+ CourseService courseService ;
+
+ @Autowired
+ TeacherService teacherService;
+
+ @Autowired
+ ScheduleService scheduleService;
+
+ @Autowired
+ TeacherCourseService teacherCourseService;
+
+ @Autowired
+ JoinClassService joinClassService;
+
+ @Autowired
+ ClassCourseService classCourseService;
+
+ private static String url = "http://60.190.202.57:1000";
+
+ private static String staticUrl = "F://wwwroot//smartcampus";
+
+ @ApiOperation("创建排课计划 ")
+ @RequestMapping(value = "createSchedule", method = RequestMethod.POST)
+ public ScheduleRepVo createSchedule(@RequestBody CreateScheduleReqVo createScheduleReqVo){
+ ScheduleRepVo baseVo = new ScheduleRepVo();
+ Schedule schedule = new Schedule();
+ schedule.setTeam(createScheduleReqVo.getTeam());
+ schedule.setScheduleName(createScheduleReqVo.getScheduleName());
+ schedule.setSchoolId(createScheduleReqVo.getSchoolId());
+ Schedule temp = scheduleService.selectBySchoolAndTeam(schedule);
+ if(temp == null){
+ scheduleService.insert(schedule);
+ }else {
+ baseVo.setSuccess(false);
+ baseVo.setMessage("该学校该学年学期已创建了排课计划");
+ return baseVo;
+ }
+ temp = scheduleService.selectBySchoolAndTeam(schedule);
+ initMessage(schedule.getSchoolId());
+ baseVo.setScheduleId(temp.getId());
+ return baseVo;
+ }
+
+ @ApiOperation("更新计划")
+ @RequestMapping(value = "updateSchedule", method = RequestMethod.POST)
+ public BaseVo updateSchedule(@RequestBody UpdateScheduleReqVo updateScheduleReqVo){
+ BaseVo baseVo = new BaseVo();
+ Schedule schedule = scheduleService.selectById(updateScheduleReqVo.getScheduleId());
+ schedule.setScheduleName(updateScheduleReqVo.getScheduleName());
+ schedule.setTeam(updateScheduleReqVo.getTeam());
+ scheduleService.update(schedule);
+ return baseVo;
+ }
+
+ @ApiOperation("复制")
+ @RequestMapping(value = "copySchedule", method = RequestMethod.POST)
+ public BaseVo copySchedule(@RequestBody UpdateScheduleReqVo updateScheduleReqVo){
+ BaseVo baseVo = new BaseVo();
+ Schedule schedule = scheduleService.selectById(updateScheduleReqVo.getScheduleId());
+ if(schedule == null){
+ baseVo.setMessage("原始课表不存在");
+ baseVo.setSuccess(false);
+ return baseVo;
+ }
+ Schedule temp = new Schedule();
+ temp.setSchoolId(schedule.getSchoolId());
+ temp.setTeam(updateScheduleReqVo.getTeam());
+ Schedule result = scheduleService.selectBySchoolAndTeam(temp);
+ if(result != null){
+ baseVo.setMessage("该学年学期已创建课表计划");
+ baseVo.setSuccess(false);
+ return baseVo;
+ }
+ temp.setScheduleName(updateScheduleReqVo.getScheduleName());
+ scheduleService.insert(temp);
+ Date date = new Date();
+ //复制 classCourse teacherClass teacherCourse
+ List classCourses = classCourseService.copyClassCourse(schedule.getSchoolId(),schedule.getTeam());
+ for(ClassCourse classCourse :classCourses){
+ classCourse.setSchoolId(temp.getSchoolId());
+ classCourse.setTeam(temp.getTeam());
+ classCourse.setCreateTime(date);
+ }
+ classCourseService.insertBatch(classCourses);
+ TeacherClass teacherClass = new TeacherClass();
+ teacherClass.setSchoolId(schedule.getSchoolId());
+ teacherClass.setTeam(schedule.getTeam());
+ List teacherClasses = teacherClassService.selectBySchoolAndTeam(teacherClass);
+ for(TeacherClass teacherClass1 :teacherClasses){
+ teacherClass1.setSchoolId(temp.getSchoolId());
+ teacherClass1.setTeam(temp.getTeam());
+ teacherClass1.setCreateTime(date);
+ }
+ teacherClassService.insertBatch(teacherClasses);
+
+ List teacherCourses = teacherCourseService.selectBySchoolIdAndTeam(schedule.getSchoolId(),schedule.getTeam());
+ for(TeacherCourse teacherCourse : teacherCourses){
+ teacherCourse.setSchoolId(temp.getSchoolId());
+ teacherCourse.setTeam(temp.getTeam());
+ teacherCourse.setCreateTime(date);
+ }
+ teacherCourseService.insertBatch(teacherCourses);
+ return baseVo;
+ }
+
+ @ApiOperation("删除排课计划")
+ @RequestMapping(value = "deleteSchedule", method = RequestMethod.POST)
+ public BaseVo deleteSchedule(@RequestBody ScheduleIdReqVo scheduleIdReqVo){
+ BaseVo baseVo = new BaseVo();
+ Schedule schedule = scheduleService.selectById(scheduleIdReqVo.getScheduleId());
+ if(schedule == null){
+ baseVo.setSuccess(false);
+ baseVo.setMessage("无排课计划");
+ return baseVo;
+ }
+ teacherCourseService.deleteBySchoolIdAndTeam(schedule.getSchoolId(),schedule.getTeam());
+ joinClassService.deleteBySchoolIdAndTeam(schedule.getSchoolId(),schedule.getTeam());
+ classCourseService.deleteBySchoolIdAndTeam(schedule.getSchoolId(),schedule.getTeam());
+ TeacherClass teacherClass = new TeacherClass();
+ teacherClass.setSchoolId(schedule.getSchoolId());
+ teacherClass.setTeam(schedule.getTeam());
+ teacherClassService.deleteBySchoolAndTeam(teacherClass);
+ courseService.initSchoolId(schedule.getSchoolId());
+ scheduleService.deleteBySchedule(schedule.getId());
+ return baseVo;
+ }
+
+ @ApiOperation("获取基础信息")
+ @RequestMapping(value = "getInitMessage", method = RequestMethod.POST)
+ public InitRepVo getInitMessage(@RequestBody ScheduleIdReqVo scheduleIdReqVo){
+ InitRepVo initRepVo = new InitRepVo();
+ Schedule schedule = scheduleService.selectById(scheduleIdReqVo.getScheduleId());
+ if(schedule == null){
+ initRepVo.setSuccess(false);
+ initRepVo.setMessage("没有改排课计划");
+ return initRepVo;
+ }
+ List courses = courseService.selectBySchoolId(schedule.getSchoolId());
+ List teachers = teacherService.selectBySchoolId(schedule.getSchoolId());
+ List classModels = classModelService.selectBySchoolId(schedule.getSchoolId());
+ initRepVo.setClassNumber(classModels.size());
+ initRepVo.setCourseNumber(courses.size());
+ initRepVo.setTeacherNumber(teachers.size());
+ return initRepVo;
+ }
+
+ @Transactional
+ @ApiOperation("教师授课信息")
+ @RequestMapping(value = "initTeacherCourse", method = RequestMethod.POST)
+ public BaseVo initTeacherCourse(@RequestBody InitTeacherCourseReqVo initTeacherCourseReqVo){
+ BaseVo baseVo = new BaseVo();
+ Date date = new Date();
+ try{
+ TeacherClass temp = new TeacherClass();
+ Schedule schedule = scheduleService.selectById(initTeacherCourseReqVo.getScheduleId());
+ if(schedule != null && schedule.getSpeed() == 2) {
+ temp.setSchoolId(schedule.getSchoolId());
+ temp.setTeam(schedule.getTeam());
+ List list = teacherClassService.selectBySchoolAndTeam(temp);
+ if (list != null && list.size() > 0) {
+ teacherClassService.deleteBySchoolAndTeam(temp);
+ }
+ String fileUrl = initTeacherCourseReqVo.getUrl();
+ fileUrl = fileUrl.replace(url, staticUrl);
+ File excelFile = new File(fileUrl);
+ // 获得工作簿
+ String file = excelFile.getName();
+ Workbook workbook = null;
+ if (file.endsWith("xls")) {
+ workbook = new HSSFWorkbook(new FileInputStream(excelFile));
+ } else {
+ workbook = new XSSFWorkbook(new FileInputStream(excelFile));
+ }
+ // 获得工作表
+ Sheet sheet = workbook.getSheetAt(0);
+ int rows = sheet.getPhysicalNumberOfRows();
+ Map courseTeacherMap = new HashMap<>();
+ int courseNumber = 0;
+ List teacherClasses = new ArrayList<>();
+ for (int i = 0; i < rows; i++) {
+ // 获取第i行数据
+ Row sheetRow = sheet.getRow(i);
+ if (i == 0) {
+ //获取表头
+ int j = 1;
+ while (sheetRow.getCell(2 * j) != null && StringUtils.isNotBlank(sheetRow.getCell(2 * j).getStringCellValue().trim())) {
+ Course course = courseService.selectBySchoolIdAndCourseName(schedule.getSchoolId(), sheetRow.getCell(2 * j).getStringCellValue().trim());
+ courseTeacherMap.put(j, course);
+ j++;
+ }
+ courseNumber = j - 1;
+ } else {
+ if (StringUtils.isBlank(sheetRow.getCell(0).getStringCellValue().trim())) {
+ continue;
+ }
+ String className = sheetRow.getCell(1).getStringCellValue().trim();
+ ClassModel classModel = new ClassModel();
+ classModel.setSchoolId(schedule.getSchoolId());
+ classModel.setClassName(className);
+ classModel.setGrade(sheetRow.getCell(0).getStringCellValue().trim());
+ ClassModel resultClass = classModelService.selectBySchoolIdAndClassNameAndGrade(classModel);
+ for (int j = 1; j <= courseNumber; j++) {
+ Cell cell = sheetRow.getCell(2 * j);
+ if (cell != null) {
+ cell.setCellType(CellType.STRING);
+ String times = sheetRow.getCell(2 * j).getStringCellValue().trim();
+ if (StringUtils.isNotBlank((times))) {
+ Course course = courseTeacherMap.get(j);
+ String teacherName = sheetRow.getCell(2 * j + 1).getStringCellValue().trim();
+ Teacher teacher = new Teacher();
+ teacher.setTeacherName(teacherName);
+ teacher.setSchoolId(schedule.getSchoolId());
+ Teacher resultTeacher = teacherService.selectByTeacher(teacher);
+ if (course != null && resultTeacher != null) {
+ TeacherClass teacherClass = new TeacherClass();
+ teacherClass.setTeam(schedule.getTeam());
+ teacherClass.setSchoolId(schedule.getSchoolId());
+ teacherClass.setCourseName(course.getCourseName());
+ teacherClass.setTeacherName(resultTeacher.getTeacherName());
+ teacherClass.setTeacherId(resultTeacher.getTeacherId());
+ teacherClass.setGrade(sheetRow.getCell(0).getStringCellValue().trim());
+ teacherClass.setClassId(resultClass.getClassId());
+ String[] msg = times.split("\\+");
+ if (msg.length > 1) {
+ //有联课
+ teacherClass.setJoinTimes(Integer.valueOf(msg[1]));
+ teacherClass.setTimes(Integer.valueOf(msg[1]) * 2 + Integer.valueOf(msg[0]));
+ } else {
+ teacherClass.setJoinTimes(0);
+ teacherClass.setTimes(Integer.valueOf(msg[0]));
+ }
+ teacherClass.setStatus(0);
+ teacherClass.setCreateTime(date);
+ teacherClasses.add(teacherClass);
+ } else {
+ baseVo.setMessage("课程或老师缺失");
+ baseVo.setSuccess(false);
+ return baseVo;
+ }
+ }
+
+ }
+ }
+ }
+ }
+ teacherClassService.insertBatch(teacherClasses);
+ schedule.setSpeed(3);
+ scheduleService.updateSpeed(schedule);
+ }else {
+ baseVo.setMessage("排课计划不存在或已导入");
+ baseVo.setSuccess(false);
+ }
+ }catch (Exception e){
+ System.out.println(e);
+ baseVo.setSuccess(false);
+ }
+ return baseVo;
+ }
+
+
+ private void initMessage(int schoolId){
+ JSONObject teacherList = HttpClientUtils.httpGet(url+"/api/EasyN/GetSchoolTeacher?SchoolId="+schoolId);
+ List openTeacherList = (List)teacherList.get("data");
+ List teachers = new ArrayList<>();
+ for(JSONObject json :openTeacherList){
+ Teacher teacher = new Teacher();
+ teacher.setSchoolId(Integer.valueOf(json.get("school_id").toString()));
+ teacher.setTeacherId(Integer.valueOf(json.get("teacher_id").toString()));
+ teacher.setTeacherName(json.get("name").toString());
+ teachers.add(teacher);
+ }
+ initTeacher(teachers);
+ JSONObject classList = HttpClientUtils.httpGet(url+"/api/EasyN/GetSchoolClass?SchoolId="+schoolId);
+ List openClasses = (List)classList.get("data");
+ List classModels = new ArrayList<>();
+ for(JSONObject json :openClasses){
+ ClassModel classModel = new ClassModel();
+ classModel.setSchoolId(Integer.valueOf(json.get("school_id").toString()));
+ classModel.setClassId(Integer.valueOf(json.get("class_id").toString()));
+ classModel.setGrade(json.get("gardeName").toString());
+ classModel.setClassName(json.get("class_name").toString());
+ classModels.add(classModel);
+ }
+ initClass(classModels);
+ JSONObject courseList = HttpClientUtils.httpGet(url+"/api/EasyN/GetSchoolSubject?SchoolId="+schoolId);
+ List openCourses = (List)courseList.get("data");
+ List courses = new ArrayList<>();
+ for(JSONObject json :openCourses){
+ Course course = new Course();
+ course.setSchoolId(Integer.valueOf(json.get("school_id").toString()));
+ course.setCourseId(Integer.valueOf(json.get("subject_id").toString()));
+ course.setCourseName(json.get("subject_name").toString());
+ course.setCourseType(0);
+ courses.add(course);
+ }
+ initCourse(courses);
+ }
+ public BaseVo initCourse(List courseList){
+ BaseVo baseVo = new BaseVo();
+ List list = courseService.selectBySchoolId(courseList.get(0).getSchoolId());
+ if(list != null && list.size() > 0){
+ courseService.deleteSchoolId(courseList.get(0).getSchoolId());
+ }
+ for(Course course : courseList){
+ if(course.getCourseId() == 0 || StringUtils.isBlank(course.getCourseName())){
+ baseVo.setSuccess(false);
+ baseVo.setMessage("缺少参数");
+ break;
+ }
+ }
+ if(baseVo.isSuccess()){
+ courseService.insertBatch(courseList);
+ baseVo.setSuccess(true);
+ return baseVo;
+ }else {
+ return baseVo;
+ }
+ }
+
+ public BaseVo initClass(List classList){
+ BaseVo baseVo = new BaseVo();
+ List list = classModelService.selectBySchoolId(classList.get(0).getSchoolId());
+ if(list != null && list.size() > 0){
+ classModelService.deleteSchool(classList.get(0).getSchoolId());
+ }
+ for(ClassModel classModel : classList){
+ if(classModel.getClassId() == 0 || StringUtils.isBlank(classModel.getClassName()) ||
+ StringUtils.isBlank(classModel.getGrade()) || classModel.getSchoolId() == 0){
+ baseVo.setSuccess(false);
+ baseVo.setMessage("缺少参数");
+ break;
+ }
+ }
+ if(baseVo.isSuccess()){
+ classModelService.insertBatch(classList);
+ baseVo.setSuccess(true);
+ return baseVo;
+ }else {
+ return baseVo;
+ }
+ }
+
+ public BaseVo initTeacher(List teacherList){
+ List result = new ArrayList<>();
+ for(Teacher teacher : teacherList){
+ boolean isExist = false;
+ for(Teacher t : result){
+ if(t.getTeacherName().equals(teacher.getTeacherName())){
+ isExist = true;
+ }
+ }
+ if(!isExist){
+ result.add(teacher);
+ }
+ }
+ BaseVo baseVo = new BaseVo();
+ List list = teacherService.selectBySchoolId(result.get(0).getSchoolId());
+ if(list != null && list.size()>0){
+ teacherService.deleteSchool(result.get(0).getSchoolId());
+ }
+ for(Teacher teacher : result){
+ if(teacher.getSchoolId() == 0 || StringUtils.isBlank(teacher.getTeacherName()) ||
+ teacher.getTeacherId() == 0){
+ baseVo.setSuccess(false);
+ baseVo.setMessage("缺少参数");
+ break;
+ }
+ }
+ if(baseVo.isSuccess()){
+ teacherService.insertBatch(result);
+ baseVo.setSuccess(true);
+ return baseVo;
+ }else {
+ return baseVo;
+ }
+ }
+
+}
diff --git a/src/main/java/com/jevon/controller/MessageController.java b/src/main/java/com/jevon/controller/MessageController.java
new file mode 100644
index 0000000..11f93c1
--- /dev/null
+++ b/src/main/java/com/jevon/controller/MessageController.java
@@ -0,0 +1,316 @@
+package com.jevon.controller;
+
+import com.jevon.model.*;
+import com.jevon.service.*;
+import com.jevon.utils.ExcelUtils;
+import com.jevon.vo.BaseVo;
+import com.jevon.vo.rep.*;
+import com.jevon.vo.req.CourseClassReqVo;
+import com.jevon.vo.req.GetClassCourseReqVo;
+import com.jevon.vo.req.ScheduleIdReqVo;
+import com.jevon.vo.req.SchoolIdReqVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author chen
+ * @version 1.0
+ * @date 2019/10/11 0011 14:00
+ */
+@RestController
+@Api(value = "获取信息")
+public class MessageController {
+
+ @Autowired
+ ScheduleService scheduleService;
+
+ @Autowired
+ CourseService courseService;
+
+ @Autowired
+ ClassCourseService classCourseService;
+
+ @Autowired
+ ClassModelService classModelService;
+
+ @Autowired
+ JoinClassService joinClassService;
+
+ @Autowired
+ TeacherClassService teacherClassService;
+
+ @ApiOperation("获取学校排课计划")
+ @RequestMapping(value = "getScheduleList", method = RequestMethod.POST)
+ public ScheduleListRepVo getScheduleList(@RequestBody SchoolIdReqVo schoolIdReqVo){
+ ScheduleListRepVo scheduleListRepVo = new ScheduleListRepVo();
+ scheduleListRepVo.setData(scheduleService.selectBySchool(schoolIdReqVo.getSchoolId()));
+ return scheduleListRepVo;
+ }
+
+ @ApiOperation("获取学校下所有班级信息")
+ @RequestMapping(value = "getClassList", method = RequestMethod.POST)
+ public ClassRepVo getClassList(@RequestBody SchoolIdReqVo schoolIdReqVo){
+ ClassRepVo classRepVo = new ClassRepVo();
+ classRepVo.setData(classModelService.selectBySchoolId(schoolIdReqVo.getSchoolId()));
+ return classRepVo;
+ }
+
+ @ApiOperation("获取学校课程")
+ @RequestMapping(value = "getCourseList", method = RequestMethod.POST)
+ public CourseRepVo getCourseList(@RequestBody ScheduleIdReqVo scheduleIdReqVo){
+ CourseRepVo courseRepVo = new CourseRepVo();
+ Schedule schedule = scheduleService.selectById(scheduleIdReqVo.getScheduleId());
+ if(schedule == null){
+ courseRepVo.setSuccess(false);
+ courseRepVo.setMessage("请先创建计划");
+ return courseRepVo;
+ }
+ courseRepVo.setData(courseService.selectBySchoolId(schedule.getSchoolId()));
+ return courseRepVo;
+ }
+
+ @ApiOperation("获取要学习某个学科的班级集合")
+ @RequestMapping(value = "getCourseClassList", method = RequestMethod.POST)
+ public List getCourseClassList(@RequestBody CourseClassReqVo courseClassReqVo){
+ List repVos = new ArrayList<>();
+ Schedule schedule = scheduleService.selectById(courseClassReqVo.getScheduleId());
+ if(schedule == null){
+ return null;
+ }
+ TeacherClass search = new TeacherClass();
+ search.setSchoolId(schedule.getSchoolId());
+ search.setTeam(schedule.getTeam());
+ String courseName =courseService.selectBySchoolIdAndCourseId(schedule.getSchoolId(),courseClassReqVo.getCourseId()).getCourseName();
+ search.setCourseName(courseName);
+ List list = teacherClassService.selectByCourseName(search);
+ for(TeacherClass teacherClass : list){
+ GetCourseClassListRepVo repVo = new GetCourseClassListRepVo();
+ repVo.setClassId(teacherClass.getClassId());
+ repVo.setClassName(classModelService.selectByPrimaryKey(teacherClass.getClassId()).getClassName());
+ repVo.setCourseId(courseClassReqVo.getCourseId());
+ repVo.setCourseName(courseName);
+ repVo.setTeacherName(teacherClass.getTeacherName());
+ repVos.add(repVo);
+ }
+ return repVos;
+ }
+
+ @ApiOperation("获取班级排课课程")
+ @RequestMapping(value = "getClassCourseList", method = RequestMethod.POST)
+ public ClassCourseRepVo getClassCourseList(@RequestBody GetClassCourseReqVo getClassCourseReqVo){
+ ClassCourseRepVo classCourseRepVo = new ClassCourseRepVo();
+ Schedule schedule = scheduleService.selectById(getClassCourseReqVo.getScheduleId());
+ if(schedule == null){
+ classCourseRepVo.setSuccess(false);
+ classCourseRepVo.setMessage("请先创建计划");
+ return classCourseRepVo;
+ }
+ ClassCourse search = new ClassCourse();
+ search.setClassId(getClassCourseReqVo.getClassId());
+ search.setSingleOrDouble(1);
+ search.setTeam(schedule.getTeam());
+ classCourseRepVo.setData(classCourseService.selectByClassIdAndSingleOrDouble(search));
+ return classCourseRepVo;
+ }
+
+ @ApiOperation("获取合班信息")
+ @RequestMapping(value = "getJoinList", method = RequestMethod.POST)
+ public JoinRepVo getJoinList(@RequestBody ScheduleIdReqVo scheduleIdReqVo){
+ JoinRepVo joinRepVo = new JoinRepVo();
+ Schedule schedule = scheduleService.selectById(scheduleIdReqVo.getScheduleId());
+ JoinClass joinClass = new JoinClass();
+ joinClass.setSchoolId(schedule.getSchoolId());
+ joinClass.setTeam(schedule.getTeam());
+ List list = joinClassService.selectByCourse(joinClass);
+ List joinDetails = new ArrayList<>();
+ for(JoinClass temp : list){
+ boolean flag = false ;
+ ClassModel classModel = classModelService.selectByPrimaryKey(temp.getClassId());
+ for(JoinDetail joinDetail : joinDetails){
+ if(temp.getCourseGroup() == joinDetail.getCourseGroup()){
+ flag = true;
+ if(!joinDetail.getClassName().contains(classModel.getClassName())){
+ joinDetail.setClassName(joinDetail.getClassName()+","+classModel.getClassName());
+ }
+ }
+ }
+ if(!flag){
+ JoinDetail joinDetail = new JoinDetail();
+ joinDetail.setCourseGroup(temp.getCourseGroup());
+ joinDetail.setClassName(classModel.getClassName());
+ joinDetail.setCourseName(temp.getCourseName());
+ TeacherClass search = new TeacherClass();
+ search.setSchoolId(schedule.getSchoolId());
+ search.setTeam(schedule.getTeam());
+ search.setClassId(temp.getClassId());
+ search.setCourseName(temp.getCourseName());
+ joinDetail.setTeacherName(teacherClassService.selectByCourseAndClass(search).getTeacherName());
+ joinDetails.add(joinDetail);
+ }
+ }
+ joinRepVo.setData(joinDetails);
+ return joinRepVo;
+ }
+
+ @ApiOperation("获取导入任课信息")
+ @RequestMapping(value = "getTeacherClassList", method = RequestMethod.POST)
+ public TeacherCourseRepVo getTeacherClassList(@RequestBody ScheduleIdReqVo scheduleIdReqVo){
+ TeacherCourseRepVo teacherCourseRepVo = new TeacherCourseRepVo();
+ Schedule schedule = scheduleService.selectById(scheduleIdReqVo.getScheduleId());
+ TeacherClass temp = new TeacherClass();
+ temp.setSchoolId(schedule.getSchoolId());
+ temp.setTeam(schedule.getTeam());
+ List data = new ArrayList<>();
+ List courseNameList = new ArrayList<>();
+ List teacherClasses = teacherClassService.selectBySchoolAndTeam(temp);
+ for(TeacherClass teacherClass :teacherClasses){
+ boolean isExist = false;
+ if(!courseNameList.contains(teacherClass.getCourseName())){
+ courseNameList.add(teacherClass.getCourseName());
+ }
+ for(ClassCourseVO classCourseVO : data){
+ if(classCourseVO.getClassId() == teacherClass.getClassId()){
+ isExist = true ;
+ ClassCourseDetailVo classCourseDetailVo = new ClassCourseDetailVo(teacherClass);
+ List classCourseDetailVos = classCourseVO.getList();
+ classCourseDetailVos.add(classCourseDetailVo);
+ classCourseVO.setAllCount(classCourseVO.getAllCount()+teacherClass.getTimes());
+ classCourseVO.setList(classCourseDetailVos);
+ }
+ }
+ if(!isExist){
+ ClassCourseVO classCourseVO = new ClassCourseVO();
+ classCourseVO.setClassId(teacherClass.getClassId());
+ classCourseVO.setAllCount(teacherClass.getTimes());
+ classCourseVO.setClassName(classModelService.selectByPrimaryKey(teacherClass.getClassId()).getClassName());
+ List classCourseDetailVos = new ArrayList<>();
+ classCourseDetailVos.add(new ClassCourseDetailVo(teacherClass));
+ classCourseVO.setList(classCourseDetailVos);
+ data.add(classCourseVO);
+ }
+ }
+ teacherCourseRepVo.setData(data);
+ teacherCourseRepVo.setCourseNameList(courseNameList);
+ return teacherCourseRepVo;
+ }
+
+ @ApiOperation("获取主课,副科,公共课列表")
+ @RequestMapping(value = "getCourseTypeList", method = RequestMethod.POST)
+ public GetCourseTypeListRepVo getCourseTypeList(@RequestBody ScheduleIdReqVo scheduleIdReqVo){
+ GetCourseTypeListRepVo getCourseTypeListRepVo = new GetCourseTypeListRepVo();
+ List data = new ArrayList<>();
+ Schedule schedule = scheduleService.selectById(scheduleIdReqVo.getScheduleId());
+ if(schedule == null){
+ getCourseTypeListRepVo.setSuccess(false);
+ getCourseTypeListRepVo.setMessage("请先创建计划");
+ return getCourseTypeListRepVo;
+ }
+ for(int i = 1 ; i <=3 ; i++){
+ CourseTypeListVO vo = new CourseTypeListVO();
+ vo.setCourseType(i);
+ switch (i){
+ case 1 :
+ vo.setCourseTypeName("主课");
+ break;
+ case 2:
+ vo.setCourseTypeName("副科");
+ break;
+ case 3:
+ vo.setCourseTypeName("公共课");
+ break;
+ }
+ Course course = new Course();
+ course.setSchoolId(schedule.getSchoolId());
+ course.setCourseType(i);
+ vo.setList(courseService.selectByCourse(course));
+ data.add(vo);
+ }
+ getCourseTypeListRepVo.setData(data);
+ getCourseTypeListRepVo.setScheduleId(schedule.getSchoolId());
+ return getCourseTypeListRepVo;
+ }
+
+ @ApiOperation("获取未设置学科类型的科目")
+ @RequestMapping(value = "getUnCourseList", method = RequestMethod.POST)
+ public CourseRepVo getUnCourseList(@RequestBody ScheduleIdReqVo scheduleIdReqVo){
+ CourseRepVo courseRepVo = new CourseRepVo();
+ Schedule schedule = scheduleService.selectById(scheduleIdReqVo.getScheduleId());
+ if(schedule == null){
+ courseRepVo.setSuccess(false);
+ courseRepVo.setMessage("请先创建计划");
+ return courseRepVo;
+ }
+ Course course = new Course();
+ course.setSchoolId(schedule.getSchoolId());
+ course.setCourseType(0);
+ courseRepVo.setData(courseService.selectByCourse(course));
+ return courseRepVo;
+ }
+
+ @ApiOperation("删除设置的 主课 副科 公共课")
+ @RequestMapping(value = "deleteCourseType", method = RequestMethod.POST)
+ public BaseVo deleteCourseType(@RequestBody CourseClassReqVo courseClassReqVo){
+ BaseVo baseVo = new BaseVo();
+ Schedule schedule = scheduleService.selectById(courseClassReqVo.getScheduleId());
+ if(schedule == null){
+ baseVo.setSuccess(false);
+ baseVo.setMessage("请先创建计划");
+ return baseVo;
+ }
+ if(teacherClassService.selectHasSchedule(schedule.getSchoolId(),schedule.getTeam()) > 0){
+ baseVo.setSuccess(false);
+ baseVo.setMessage("已经排课,不能再删除");
+ return baseVo;
+ }
+ courseService.updateCourseType(courseClassReqVo.getCourseId(),0,schedule.getSchoolId());
+ return baseVo;
+ }
+
+ @ApiOperation("获取设置的作息 获取排课计划详情")
+ @RequestMapping(value = "getSchedule", method = RequestMethod.POST)
+ public Schedule getSchedule(@RequestBody ScheduleIdReqVo scheduleIdReqVo){
+ Schedule schedule = scheduleService.selectById(scheduleIdReqVo.getScheduleId());
+ return schedule;
+ }
+
+ @ApiOperation("导出模板")
+ @RequestMapping(value = "export", method = RequestMethod.GET)
+ public void export(int scheduleId , HttpServletRequest request, HttpServletResponse response){
+ ExcelUtils excelUtils = new ExcelUtils();
+ List headList = new ArrayList<>();
+ headList.add("年级");
+ headList.add("班级");
+ List heardKey = new ArrayList<>();
+ heardKey.add("grade");
+ heardKey.add("class");
+ List