派生自 projectDept/qhighschool

EricsHu
2023-11-25 79ab2cbd31c022916a8e696903d5eb34b70aa403
src/main/java/com/qxueyou/scc/controller/ClassController.java
@@ -8,17 +8,12 @@
import java.util.List;
import java.util.Map;
import com.qxueyou.scc.teach.student.model.StuStudent;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import com.qxueyou.scc.admin.classes.model.ClsClass;
import com.qxueyou.scc.admin.classes.model.ClsSubjectChapter;
@@ -42,12 +37,13 @@
import io.swagger.annotations.ApiOperation;
/**
 * 班级管理控制器
 * 班级管理控制器
 *
 * @author chenjunliang
 */
@Api(tags="班级管理接口")
@Api(tags = "班级管理接口")
@RestController
@CrossOrigin
@RequestMapping("/admin/class")
public class ClassController {
@@ -65,280 +61,289 @@
    @Autowired
    ITeacherService teacherService;
   @Autowired
   IClassLectureService clsLectureService;
    @Autowired
    IClassLectureService clsLectureService;
    //---------------------------------------------------------------------------------app接口--------------------------------------------------------------------------------------------------------------------/
    /**
     * 获取正常班级列表
     * 获取正常班级列表
     *
     * @param keyword
     * @param limit
     * @param pageNum
     * @return
     */
    @ApiOperation(value = "获取正常班级列表", notes = "")
   @GetMapping(value = "/app/classList")
    @ApiOperation(value = "获取学生详情接口", notes = "")
    @GetMapping(value = "/student/getStudentDetails")
    public Result getStudentDetails() {
        StuStudent stu = this.studentService.getStudentDetails(ClientUtils.getUserId());
        return new Result(true, "success", stu);
    }
    //---------------------------------------------------------------------------------app接口--------------------------------------------------------------------------------------------------------------------/
    /**
     * 获取正常班级列表
     *
     * @param keyword
     * @param limit
     * @param pageNum
     * @return
     */
    @ApiOperation(value = "获取正常班级列表", notes = "")
    @GetMapping(value = "/app/classList")
    public Result classList(@RequestParam(defaultValue = "") String keyword, Pager pager) {
        return this.classService.classList(keyword, pager, 1);
    }
    /**
     * 获取历史班级列表
     * 获取历史班级列表
     *
     * @param keyword
     * @param limit
     * @param pageNum
     * @return
     */
    @ApiOperation(value = "获取历史班级列表", notes = "")
   @GetMapping(value = "/app/historyClassList")
    @ApiOperation(value = "获取历史班级列表", notes = "")
    @GetMapping(value = "/app/historyClassList")
    public Result historyClassList(@RequestParam(defaultValue = "") String keyword, Pager pager) {
        return this.classService.classList(keyword, pager, 2);
    }
    /**
     * 学员详情
     * 学员详情
     *
     * @param classId
     * @param studentId
     * @return
     */
    @ApiOperation(value = "学员详情", notes = "")
    @ApiOperation(value = "学员详情", notes = "")
    @ApiImplicitParams({
        @ApiImplicitParam(name = "studentId", value = "ѧԱid", required = true, paramType="query", dataType = "String"),
        @ApiImplicitParam(name = "classId", value = "班级id", required = true, paramType="query", dataType = "String"),
            @ApiImplicitParam(name = "studentId", value = "学员id", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "classId", value = "班级id", required = true, paramType = "query", dataType = "String"),
    })
      @GetMapping(value = "/app/studentInfo")
      public Result studentInfo(String classId, String studentId) {
         return this.studentService.queryStudent(classId, studentId);
      }
    /**
     * 学员详情
     *
     * @param classId
     * @param studentId
     * @return
     */
    @ApiOperation(value = "学员学习进度", notes = "")
    @ApiImplicitParams({
        @ApiImplicitParam(name = "studentId", value = "ѧԱid", required = true, paramType="query", dataType = "String"),
        @ApiImplicitParam(name = "classId", value = "班级id", required = true, paramType="query", dataType = "String"),
    })
      @GetMapping(value = "/app/studentProgress")
      public Result studentProgress(String classId, String studentId) {
         return this.studentService.studentProgress(classId, studentId);
      }
      /**
       * 获取首页数据排行
       *
       *
       * @param subjectId
       */
       @ApiOperation(value = "班级排行榜", notes = "")
       @ApiImplicitParams({
           @ApiImplicitParam(name = "classId", value = "班级id", required = true, paramType="query", dataType = "String"),
       })
      @GetMapping(value = "/app/getDataDesc")
      public Result getDataDesc(String classId, String subjectId) {
         return subjectService.getDataDesc(classId, subjectId);
      }
    /**
     * 学员课程进度
     *
     *
     * @param subjectId
    */
    @ApiOperation(value = "学员课程进度", notes = "")
      @ApiImplicitParams({
         @ApiImplicitParam(name = "classId", value = "班级id", required = true, paramType="query", dataType = "String"),
         @ApiImplicitParam(name = "subjectId", value = "课程id", required = true, paramType="query", dataType = "String"),
         @ApiImplicitParam(name = "studentId", value = "ѧԱid", required = true, paramType="query", dataType = "String"),
      })
      @GetMapping(value = "/app/studentSubjectProgress")
      public Result studentSubjectProgress(String classId, String subjectId, String studentId) {
         return new Result(true, "success", CollectionUtils.newObjectMap("homework", this.subjectService.studentSubjectHomeworkProgress(classId, subjectId, studentId),
               "exam", this.subjectService.studentSubjectExamProgress(classId, subjectId, studentId)));
      }
    /**
     * 班级学员课程总体进度
     *
     *
     * @param classId
    */
    @ApiOperation(value = "班级学员课程总体进度", notes = "")
      @ApiImplicitParams({
         @ApiImplicitParam(name = "classId", value = "班级id", required = true, paramType="query", dataType = "String"),
      })
      @GetMapping(value = "/app/studentAllSubjectProgress")
      public Result studentSubjectProgress(String classId) {
       if(StringUtils.isEmpty(classId)) {
          return new Result(false, "班级id参数不能为空");
       }
         return new Result(true, "success", CollectionUtils.newObjectMap("subjectList", this.subjectService.studentSubjectProgress(classId, new Pager())));
      }
    /**
     * 班级学员课件总体进度
     *
     *
     * @param classId
     */
    @ApiOperation(value = "班级学员课件总体进度", notes = "")
    @ApiImplicitParams({
       @ApiImplicitParam(name = "classId", value = "班级id", required = true, paramType="query", dataType = "String"),
       @ApiImplicitParam(name = "subjectId", value = "课程id", required = true, paramType="query", dataType = "String"),
    })
    @GetMapping(value = "/app/studentSubjectLectureProgress")
    public Result studentSubjectLectureProgress(String classId, String subjectId) {
       if(StringUtils.isEmpty(classId)) {
          return new Result(false, "班级id参数不能为空");
       }
       if(StringUtils.isEmpty(subjectId)) {
          return new Result(false, "课程id参数不能为空");
       }
       //获取所有课件
      List<Map<String, Object>> lectures = this.subjectService.studentSubjectLectureProgress(subjectId, classId);
      //获取所以章节
      List<ClsSubjectChapter> chapterLst = clsLectureService.getChapterLectures(clsLectureService.getListChapter(classId, subjectId, null), lectures);
      return new Result(true, "success", CollectionUtils.newObjectMap("count",clsLectureService.stuLectureCountBySubject(subjectId, classId), "listData", QBeanUtils.listBean2ListMap(chapterLst,
            CollectionUtils.newStringMap("name", "name", "chapterId", "chapterId", "lectures", "lectures"))));
    @GetMapping(value = "/app/studentInfo")
    public Result studentInfo(String classId, String studentId) {
        return this.studentService.queryStudent(classId, studentId);
    }
    /**
     * 学员注册
     * 学员详情
     *
     * @param name          学员名称
     * @param studentNumber 学号
     * @param sex           性别
     * @param mobilePhone   手机号
     * @param classId
     * @param studentId
     * @return
     */
    @ApiOperation(value = "app端学员注册接口", notes = "")
      @ApiImplicitParams({
         @ApiImplicitParam(name = "name", value = "名称", required = true, paramType="query", dataType = "String"),
         @ApiImplicitParam(name = "studentNumber", value = "学号", required = true, paramType="query", dataType = "String"),
         @ApiImplicitParam(name = "sex", value = "性别(0女,1男)", required = true, paramType="query", dataType = "String"),
         @ApiImplicitParam(name = "mobilePhone", value = "手机号", required = false, paramType="query", dataType = "String"),
         @ApiImplicitParam(name = "orgId", value = "机构", required = true, paramType="query", dataType = "String"),
      })
    @ApiOperation(value = "学员学习进度", notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "studentId", value = "学员id", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "classId", value = "班级id", required = true, paramType = "query", dataType = "String"),
    })
    @GetMapping(value = "/app/studentProgress")
    public Result studentProgress(String classId, String studentId) {
        return this.studentService.studentProgress(classId, studentId);
    }
    /**
     * 获取首页数据排行
     *
     * @param subjectId
     */
    @ApiOperation(value = "班级排行榜", notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "classId", value = "班级id", required = true, paramType = "query", dataType = "String"),
    })
    @GetMapping(value = "/app/getDataDesc")
    public Result getDataDesc(String classId, String subjectId) {
        return subjectService.getDataDesc(classId, subjectId);
    }
    /**
     * 学员课程进度
     *
     * @param subjectId
     */
    @ApiOperation(value = "学员课程进度", notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "classId", value = "班级id", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "subjectId", value = "课程id", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "studentId", value = "学员id", required = true, paramType = "query", dataType = "String"),
    })
    @GetMapping(value = "/app/studentSubjectProgress")
    public Result studentSubjectProgress(String classId, String subjectId, String studentId) {
        return new Result(true, "success", CollectionUtils.newObjectMap("homework", this.subjectService.studentSubjectHomeworkProgress(classId, subjectId, studentId),
                "exam", this.subjectService.studentSubjectExamProgress(classId, subjectId, studentId)));
    }
    /**
     * 班级学员课程总体进度
     *
     * @param classId
     */
    @ApiOperation(value = "班级学员课程总体进度", notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "classId", value = "班级id", required = true, paramType = "query", dataType = "String"),
    })
    @GetMapping(value = "/app/studentAllSubjectProgress")
    public Result studentSubjectProgress(String classId) {
        if (StringUtils.isEmpty(classId)) {
            return new Result(false, "班级id参数不能为空");
        }
        return new Result(true, "success", CollectionUtils.newObjectMap("subjectList", this.subjectService.studentSubjectProgress(classId, new Pager())));
    }
    /**
     * 班级学员课件总体进度
     *
     * @param classId
     */
    @ApiOperation(value = "班级学员课件总体进度", notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "classId", value = "班级id", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "subjectId", value = "课程id", required = true, paramType = "query", dataType = "String"),
    })
    @GetMapping(value = "/app/studentSubjectLectureProgress")
    public Result studentSubjectLectureProgress(String classId, String subjectId) {
        if (StringUtils.isEmpty(classId)) {
            return new Result(false, "班级id参数不能为空");
        }
        if (StringUtils.isEmpty(subjectId)) {
            return new Result(false, "课程id参数不能为空");
        }
        //获取所有课件
        List<Map<String, Object>> lectures = this.subjectService.studentSubjectLectureProgress(subjectId, classId);
        //获取所以章节
        List<ClsSubjectChapter> chapterLst = clsLectureService.getChapterLectures(clsLectureService.getListChapter(classId, subjectId, null), lectures);
        return new Result(true, "success", CollectionUtils.newObjectMap("count", clsLectureService.stuLectureCountBySubject(subjectId, classId), "listData", QBeanUtils.listBean2ListMap(chapterLst,
                CollectionUtils.newStringMap("name", "name", "chapterId", "chapterId", "lectures", "lectures"))));
    }
    /**
     * 学员注册
     *
     * @param name          学员名称
     * @param studentNumber 学号
     * @param sex           性别
     * @param mobilePhone   手机号
     */
    @ApiOperation(value = "app端学员注册接口", notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "name", value = "名称", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "studentNumber", value = "学号", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "sex", value = "性别(0女,1男)", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "mobilePhone", value = "手机号", required = false, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "orgId", value = "机构", required = true, paramType = "query", dataType = "String"),
    })
    @PostMapping(value = "/app/studentRegister")
    public Result studentRegister(String name, String studentNumber, Boolean sex, String mobilePhone, String orgId) {
        return studentService.insertStudent(null, name, studentNumber, sex, mobilePhone, orgId);
    }
    //---------------------------------------------------------------------------------app接口--------------------------------------------------------------------------------------------------------------------/
    //---------------------------------------------------------------------------------app接口--------------------------------------------------------------------------------------------------------------------/
    /**
     * 新增班级
     * 新增班级
     *
     * @param className   班级名称
     * @param classNumber 班级编码
     * @param startTime   开班时间
     * @param endTime     结束时间
     * @param subjectId   课程id
     * @param className   班级名称
     * @param classNumber 班级编码
     * @param startTime   开班时间
     * @param endTime     结束时间
     * @param subjectId   课程id
     */
    @PostMapping(value = "add")
    public Result add(String className, String classNumber, String startTime, String endTime, String subjectId,
                      String teacherId) {
                      String teacherId, String chargeClassName) {
        try {
           return classService.insertClass(className, classNumber, DateUtils.convertStringToDate(startTime),
                    DateUtils.convertStringToDate(endTime), subjectId, teacherId);
            return classService.insertClass(className, classNumber, DateUtils.convertStringToDate(startTime),
                    DateUtils.convertStringToDate(endTime), subjectId, teacherId, chargeClassName);
        } catch (ParseException e) {
            log.error(e, e);
            return new Result(false, "日期参数错误");
            return new Result(false, "日期参数错误");
        }
    }
    /**
     * 新增补考分组
     * @param className   班级名称
     * @param classNumber 班级编码
     * @param startTime   开班时间
     * @param endTime     结束时间
     * @param subjectId   课程id
     * 新增补考分组
     *
     * @param className   班级名称
     * @param classNumber 班级编码
     * @param startTime   开班时间
     * @param endTime     结束时间
     * @param subjectId   课程id
     */
    @PostMapping(value = "addRe")
    public Result addRe(String className, String classNumber, String startTime, String endTime, String subjectId,
                      String teacherId,String classTypes) {
                        String teacherId, String classTypes) {
        try {
         ClsClass reClass = classService.getReClass("1");
           //如果补考类型分组不存在,新增
         if (reClass==null){
            return classService.insertReClass(className, classNumber, DateUtils.convertStringToDate(startTime),
                  DateUtils.convertStringToDate(endTime), subjectId, teacherId,classTypes);
         }else {
            //存在返回false
            return new Result(false, "补考分组已存在");
         }
            ClsClass reClass = classService.getReClass("1");
            //如果补考类型分组不存在,新增
            if (reClass == null) {
                return classService.insertReClass(className, classNumber, DateUtils.convertStringToDate(startTime),
                        DateUtils.convertStringToDate(endTime), subjectId, teacherId, classTypes);
            } else {
                //存在返回false
                return new Result(false, "补考分组已存在");
            }
        } catch (ParseException e) {
            log.error(e, e);
            return new Result(false, "日期参数错误");
            return new Result(false, "日期参数错误");
        }
    }
    /**
     * 新增班级获取课程列表
     * 新增班级获取课程列表
     */
    @GetMapping(value = "getSubjectLst")
    public Result getSubjectlst() {
        List<Subject> subjectLst = subjectService.list("", null, "",Subject.TYPE_ORG_SUBJECT, 1000, 1);
        List<Subject> subjectLst = subjectService.list("", null, "", Subject.TYPE_ORG_SUBJECT, 1000, 1);
        return new Result(true, "success", QBeanUtils.listBean2ListMap(subjectLst,
                CollectionUtils.newStringMap("name", "subjectName", "subjectId", "subjectId")));
    }
    /**
     * 获取班级列表
     * 获取班级列表
     *
     * @param keyword
     * @param limit
     * @param pageNum
     * @return
     */
    @ApiOperation(value = "获取班级列表", notes = "")
    @SuppressWarnings({ "unchecked", "rawtypes" })
   @GetMapping(value = "list")
    @ApiOperation(value = "获取班级列表", notes = "")
    @SuppressWarnings({"unchecked", "rawtypes"})
    @GetMapping(value = "list")
    public Result list(@RequestParam(defaultValue = "") String keyword,
                       @RequestParam(defaultValue = "10") Integer limit, @RequestParam(defaultValue = "1") Integer pageNum, @RequestParam(defaultValue = "1")Integer pageType) {
                       @RequestParam(defaultValue = "10") Integer limit, @RequestParam(defaultValue = "1") Integer pageNum, @RequestParam(defaultValue = "1") Integer pageType) {
//        System.out.println(ClientUtils.getUserId());
//        System.out.println(ClientUtils.isAdmin());
        String teacherId = ClientUtils.isAdmin() ? null : teacherService.getTeacherIdByUserId(ClientUtils.getUserId());
//        System.out.println("aaa"+teacherId);
        // 获取数据
        // 获取数据
        List<ClsClass> clsLst = classService.getClassLst(keyword, teacherId, limit, pageNum, pageType);
//        System.out.println(clsLst);
        // 获取班级总数
        // 获取班级总数
        int count = classService.getClassLstCount(keyword, teacherId, pageType);
//        System.out.println(count);
        // 转成前端所需字段和结构
       List<Map<String, Object>> lstResult = QBeanUtils.listBean2ListMap(clsLst,
                CollectionUtils.newStringMap("name", "className", "classId", "classId", "classNumber", "classNumber","classTypes","classTypes",
        // 转成前端所需字段和结构
        List<Map<String, Object>> lstResult = QBeanUtils.listBean2ListMap(clsLst,
                CollectionUtils.newStringMap("name", "className", "classId", "classId", "classNumber", "classNumber", "classTypes", "classTypes",
                        "studentCount", "studentCount", "createTime", "createTime", "startTime", "startTime", "endTime",
                        "endTime", "subjects", "sbjLst"));
                        "endTime", "subjects", "sbjLst", "chargeClassName", "chargeClassName", "chargeClassId", "chargeClassId"));
        // 单独处理课程的字段和结构
        // 单独处理课程的字段和结构
        for (Map<String, Object> item : lstResult) {
           if(item.get("sbjLst")==null){
              continue;
            if (item.get("sbjLst") == null) {
                continue;
           }
            }
            item.put("subjectLst",
                   QBeanUtils.listBean2ListMap(
                         this.filtCurrTeacherSubjects((List<Subject>) item.get("sbjLst"),teacherId),
                           CollectionUtils.newStringMap("subjectId", "subjectId", "name", "subjectName",
                                 "teacherId","teacherId","teacherName","teacherName","schoolYear","schoolYear","term","term")));
            item.put("subjectLst",
                    QBeanUtils.listBean2ListMap(
                            this.filtCurrTeacherSubjects((List<Subject>) item.get("sbjLst"), teacherId),
                            CollectionUtils.newStringMap("subjectId", "subjectId", "name", "subjectName",
                                    "teacherId", "teacherId", "teacherName", "teacherName", "schoolYear", "schoolYear", "term", "term")));
            item.remove("sbjLst");
        }
@@ -347,32 +352,32 @@
    }
    private List<Subject> filtCurrTeacherSubjects(List<Subject> subjects,String teacherId){
       if(StringUtils.isEmpty(teacherId) || subjects==null || subjects.size()==0){
          return subjects;
       }
    private List<Subject> filtCurrTeacherSubjects(List<Subject> subjects, String teacherId) {
        if (StringUtils.isEmpty(teacherId) || subjects == null || subjects.size() == 0) {
            return subjects;
        }
       List<Subject> newSubjects = new ArrayList<Subject>(subjects.size());
        List<Subject> newSubjects = new ArrayList<Subject>(subjects.size());
       for(Subject subject:subjects){
          if(teacherId.equals(subject.getTeacherId())){
             newSubjects.add(subject);
          }
       }
        for (Subject subject : subjects) {
            if (teacherId.equals(subject.getTeacherId())) {
                newSubjects.add(subject);
            }
        }
       return newSubjects;
        return newSubjects;
    }
    /**
     * 查询班级基本信息
     * 查询班级基本信息
     *
     * @param classId 班级id
     * @param classId 班级id
     * @return
     */
    @ApiOperation(value = "查询班级基本信息", notes = "")
    @ApiOperation(value = "查询班级基本信息", notes = "")
    @ApiImplicitParams({
        @ApiImplicitParam(name = "classId", value = "班级id", required = true, paramType="query", dataType = "String"),
            @ApiImplicitParam(name = "classId", value = "班级id", required = true, paramType = "query", dataType = "String"),
    })
    @GetMapping(value = "queryClass")
    public Result findClass(String classId) {
@@ -381,16 +386,16 @@
        return new Result(true, "success", QBeanUtils.bean2Map(cls,
                CollectionUtils.newStringMap("name", "className", "classId", "classId", "classNumber", "classNumber",
                        "studentCount", "studentCount", "createTime", "createTime", "startTime", "startTime", "endTime","endTime","classTypes",
                        "studentCount", "studentCount", "createTime", "createTime", "startTime", "startTime", "endTime", "endTime", "classTypes",
                        "classTypes", "subjects", "subjectLst", "needJoinAudit", "needJoinAudit", "needQuitAudit",
                        "needQuitAudit", "showAnalysisAfterExer", "showAnalysisAfterExer", "canMultiExer",
                        "canMultiExer", "needForum", "needForum", "teacherId", "teacherId")));
                        "canMultiExer", "needForum", "needForum", "teacherId", "teacherId", "chargeClassName", "chargeClassName")));
    }
    /**
     * 删除班级
     * 删除班级
     *
     * @param classId 班级id
     * @param classId 班级id
     * @return
     */
    @GetMapping("delete")
@@ -401,19 +406,19 @@
    }
    /**
     * 复制班级
     * 复制班级
     *
     * @param classId               班级id
     * @param className             班级名称
     * @param classNumber           班级编码
     * @param startTime             开班时间
     * @param endTime               结束时间
     * @param classId               班级id
     * @param className             班级名称
     * @param classNumber           班级编码
     * @param startTime             开班时间
     * @param endTime               结束时间
     * @param subjectId
     * @param needJoinAudit         是否加班审批
     * @param needQuitAudit         是否退班审批
     * @param showAnalysisAfterExer 完成练习后是否显示答案
     * @param canMultiExer          是否允许重复学习
     * @param needForum             是否开通论坛
     * @param needJoinAudit         是否加班审批
     * @param needQuitAudit         是否退班审批
     * @param showAnalysisAfterExer 完成练习后是否显示答案
     * @param canMultiExer          是否允许重复学习
     * @param needForum             是否开通论坛
     * @return
     */
    @PostMapping(value = "copy")
@@ -424,19 +429,20 @@
    }
    /**
     * 更新班级
     * 更新班级
     *
     * @param classId               班级id
     * @param className             班级名称
     * @param classNumber           班级编码
     * @param startTime             开班时间
     * @param endTime               结束时间
     * @param classId               班级id
     * @param className             班级名称
     * @param classNumber           班级编码
     * @param startTime             开班时间
     * @param endTime               结束时间
     * @param subjectId
     * @param needJoinAudit         是否加班审批
     * @param needQuitAudit         是否退班审批
     * @param showAnalysisAfterExer 完成练习后是否显示答案
     * @param canMultiExer          是否允许重复学习
     * @param needForum             是否开通论坛
     * @param needJoinAudit         是否加班审批
     * @param needQuitAudit         是否退班审批
     * @param showAnalysisAfterExer 完成练习后是否显示答案
     * @param canMultiExer          是否允许重复学习
     * @param needForum             是否开通论坛
     * @param chargeClassName       班主任名称
     * @return
     */
    @PostMapping(value = "update")
@@ -445,29 +451,30 @@
                         @RequestParam(defaultValue = "false") Boolean needQuitAudit,
                         @RequestParam(defaultValue = "false") Boolean showAnalysisAfterExer,
                         @RequestParam(defaultValue = "false") Boolean canMultiExer,
                         @RequestParam(defaultValue = "false") Boolean needForum) {
                         @RequestParam(defaultValue = "false") Boolean needForum,
                         String chargeClassName) {
        try {
            return classService.updateClass(classId, className, classNumber, DateUtils.convertStringToDate(startTime),
                    DateUtils.convertStringToDate(endTime), subjectId, needJoinAudit, needQuitAudit,
                    showAnalysisAfterExer, canMultiExer, needForum, teacherId);
                    showAnalysisAfterExer, canMultiExer, needForum, teacherId, chargeClassName);
        } catch (ParseException e) {
            log.error(e, e);
            return new Result(false, "日期参数错误");
            return new Result(false, "日期参数错误");
        }
    }
    /**
     * 班级管理 学员管理 获取学员列表
     * 班级管理 学员管理 获取学员列表
     *
     * @param classId 班级id
     * @param limit   每页显示几条
     * @param pageNum 页码
     * @param keyword 搜索关键字
     * @return 学习状态说明(0, 未开始 。 1, 学习中 。 2, 已结束, 3, 待激活 。 4, 已冻结)
     * @param classId 班级id
     * @param limit   每页显示几条
     * @param pageNum 页码
     * @param keyword 搜索关键字
     * @return 学习状态说明(0, 未开始 。 1, 学习中 。 2, 已结束, 3, 待激活 。 4, 已冻结)
     */
    @ApiOperation(value = "获取学员列表", notes = "学习状态说明(0, 未开始 。 1, 学习中 。 2, 已结束, 3, 待激活 。 4, 已冻结)")
    @ApiOperation(value = "获取学员列表", notes = "学习状态说明(0, 未开始 。 1, 学习中 。 2, 已结束, 3, 待激活 。 4, 已冻结)")
    @ApiImplicitParams({
        @ApiImplicitParam(name = "classId", value = "班级id", required = true, paramType="query", dataType = "String"),
            @ApiImplicitParam(name = "classId", value = "班级id", required = true, paramType = "query", dataType = "String"),
    })
    @GetMapping(value = "lstStudent4Class")
    public Result lstStudent4Class(String classId, @RequestParam(defaultValue = "10") Integer limit,
@@ -481,9 +488,9 @@
    }
    /**
     * 导入学员
     * 导入学员
     *
     * @param classId 班级id
     * @param classId 班级id
     */
    @GetMapping(value = "importStudent")
    public Result importStudent(String classId) {
@@ -491,43 +498,54 @@
    }
    /**
     * 新增学员
     * 新增学员
     *
     * @param name          学员名称
     * @param studentNumber 学号
     * @param classId       班级id
     * @param sex           性别
     * @param mobilePhone   手机号
     * @param name          学员名称
     * @param studentNumber 学号
     * @param classId       班级id
     * @param sex           性别
     * @param mobilePhone   手机号
     */
    @PostMapping(value = "addStudent")
    public Result addStudent(String classId, String name, String studentNumber, Boolean sex, String mobilePhone,String comName) {
    public Result addStudent(String classId, String name, String studentNumber, Boolean sex, String mobilePhone, String comName,
                             String photo, String passporName, String nationality, String ancestralHome, String birthday, String birthplace,
                             String chinaStatus, String registeredAddress, String homeAddress, String religiousBelief, String email,
                             String workUnit) {
        return studentService.insertStudent(classId, name, studentNumber, sex, mobilePhone, ClientUtils.getOrgId(),comName);
        return studentService.insertStudent(classId, name, studentNumber, sex, mobilePhone, ClientUtils.getOrgId(), comName,
                photo,  passporName,  nationality,  ancestralHome,  birthday,  birthplace,
                chinaStatus,  registeredAddress,  homeAddress,  religiousBelief,  email,
                workUnit);
    }
    /**
     * 更新学员
     * 更新学员
     *
     * @param name          学员名称
     * @param studentNumber 学号
     * @param classId       班级id
     * @param sex           性别
     * @param mobilePhone   手机号
     * @param name          学员名称
     * @param studentNumber 学号
     * @param classId       班级id
     * @param sex           性别
     * @param mobilePhone   手机号
     */
    @PostMapping(value = "updateStudent")
    public Result updateStudent(String studentId, String name,String password, String studentNumber, Boolean sex, String mobilePhone) {
    public Result updateStudent(String studentId, String name, String password, String studentNumber, Boolean sex, String mobilePhone,
                                String photo, String passporName, String nationality, String ancestralHome, String birthday, String birthplace,
                                String chinaStatus, String registeredAddress, String homeAddress, String religiousBelief, String email,
                                String workUnit, String graduationDestination) {
        return studentService.updateStudent(studentId, name,password, studentNumber, sex, mobilePhone);
        return studentService.updateStudent(studentId, name, password, studentNumber, sex, mobilePhone,
                 photo,  passporName,  nationality,  ancestralHome,  birthday,  birthplace,
                 chinaStatus,  registeredAddress,  homeAddress,  religiousBelief,  email,
                 workUnit,  graduationDestination);
    }
    /**
     * 激活学员
     * 激活学员
     *
     * @param studentIds ѧԱIds
     * @param studentIds 学员Ids
     */
    @GetMapping(value = "activateStudent")
    public Result activate(String studentIds) {
@@ -535,9 +553,9 @@
    }
    /**
     * 冻结学员
     * 冻结学员
     *
     * @param studentIds ѧԱIds
     * @param studentIds 学员Ids
     */
    @GetMapping(value = "blockStudent")
    public Result block(String studentIds) {
@@ -545,9 +563,9 @@
    }
    /**
     * 删除学员
     * 删除学员
     *
     * @param studentIds ѧԱIds
     * @param studentIds 学员Ids
     */
    @GetMapping(value = "deleteStudent")
    public Result deleteStudent(String classId, String studentIds) {
@@ -555,73 +573,75 @@
    }
    /**
     * 添加班级课程
     * 添加班级课程
     *
     * @throws InvocationTargetException
     * @throws IllegalAccessException
     *
     */
    @PostMapping(value = "addClsSubject")
    public Result addClsSubject(String classId, String origSubjectId,String teacherId,Integer schoolYear ,Integer term) throws IllegalAccessException, InvocationTargetException {
       return  this.subjectService.addClsSubject(classId,origSubjectId,teacherId,schoolYear,term);
    public Result addClsSubject(String classId, String origSubjectId, String teacherId, Integer schoolYear, Integer term) throws IllegalAccessException, InvocationTargetException {
        return this.subjectService.addClsSubject(classId, origSubjectId, teacherId, schoolYear, term);
    }
    /**
     * 更新班级课程
     * 更新班级课程
     */
    @PostMapping(value = "updateClsSubject")
    public Result updateClsSubject(String classId,String subjectId, String origSubjectId,String teacherId,Integer schoolYear ,Integer term) {
       return this.subjectService.updateClsSubject(classId,subjectId,origSubjectId,teacherId,schoolYear,term);
    public Result updateClsSubject(String classId, String subjectId, String origSubjectId, String teacherId, Integer schoolYear, Integer term) {
        return this.subjectService.updateClsSubject(classId, subjectId, origSubjectId, teacherId, schoolYear, term);
    }
    /**
     * 删除班级课程
     * 删除班级课程
     */
    @GetMapping(value = "deleteClsSubject")
    public Result deleteClsSubject(String classId,String subjectIds){
       //删除课程及课程班级关联关系
       return subjectService.deleteClsSubject(classId,subjectIds.split(","));
    public Result deleteClsSubject(String classId, String subjectIds) {
        //删除课程及课程班级关联关系
        return subjectService.deleteClsSubject(classId, subjectIds.split(","));
    }
    /**
     * 所有班级列表
     * @param subjectId 根据subjectId过滤
     * 所有班级列表
     *
     * @param subjectId 根据subjectId过滤
     * @return
     */
   @RequestMapping(value = "/selectlist", method = RequestMethod.GET)
   public @ResponseBody List<Map<String,Object>> classList() {
      return classService.queryAllClassIdAndName();
   }
    @RequestMapping(value = "/selectlist", method = RequestMethod.GET)
    public @ResponseBody
    List<Map<String, Object>> classList() {
        return classService.queryAllClassIdAndName();
    }
    /**
     * 获取学员详细信息
     * 获取学员详细信息
     *
     * @param studentId ѧԱid
     * @return percent (状态说明:0,未开始。1,学习中。2,已结束。) status (0,未提交。1,已提交)
     * @param studentId 学员id
     * @return percent (状态说明:0,未开始。1,学习中。2,已结束。) status (0,未提交。1,已提交)
     */
    @GetMapping(value = "getStudentDetail")
    public Result getStudentDetail(String studentId) {
        // 学员信息
        Map<String, Object> studentDetail = CollectionUtils.newObjectMap("studentName", "李刚", "classNumber", "123456",
        // 学员信息
        Map<String, Object> studentDetail = CollectionUtils.newObjectMap("studentName", "李刚", "classNumber", "123456",
                "sex", 1, "registerTime", new Date(), "email", "12345676@qq.com", "mobilePhone", "13611111123",
                "stuSubjects", 3, "commitExerInfo", 3, "examCount", 3, "releaseTopic", 3, "commentCount", 2);
        // 学习档案
        Map<String, Object> subjectOne = CollectionUtils.newObjectMap("subjectName", "物流科学与工程", "percent", 2,
        // 学习档案
        Map<String, Object> subjectOne = CollectionUtils.newObjectMap("subjectName", "物流科学与工程", "percent", 2,
                "studyDuration", 18, "endStudyTime", new Date(), "score", 96.2);
        Map<String, Object> subjectTwo = CollectionUtils.newObjectMap("subjectName", "物流工程基础", "percent", 1,
        Map<String, Object> subjectTwo = CollectionUtils.newObjectMap("subjectName", "物流工程基础", "percent", 1,
                "studyDuration", 18, "endStudyTime", new Date(), "score", "");
        Map<String, Object> subjectThree = CollectionUtils.newObjectMap("subjectName", "物流工程基础2", "percent", 0,
        Map<String, Object> subjectThree = CollectionUtils.newObjectMap("subjectName", "物流工程基础2", "percent", 0,
                "studyDuration", "", "endStudyTime", "", "score", "");
        // 作业记录
        Map<String, Object> exerOne = CollectionUtils.newObjectMap("exerciseName", "物流科学与工程", "subjectName", "物流科学与工程",
        // 作业记录
        Map<String, Object> exerOne = CollectionUtils.newObjectMap("exerciseName", "物流科学与工程", "subjectName", "物流科学与工程",
                "status", 1, "commitTime", new Date(), "score", 96.2);
        Map<String, Object> exerTwo = CollectionUtils.newObjectMap("exerciseName", "物流工程基础", "subjectName", "物流工程基础",
        Map<String, Object> exerTwo = CollectionUtils.newObjectMap("exerciseName", "物流工程基础", "subjectName", "物流工程基础",
                "status", 0, "commitTime", "", "score", "");
        Map<String, Object> exerThree = CollectionUtils.newObjectMap("exerciseName", "物流工程基础2", "subjectName",
                "物流工程基础2", "status", 0, "commitTime", "", "score", "");
        // 考试记录
        Map<String, Object> examOne = CollectionUtils.newObjectMap("examName", "物流科学与工程", "subjectName", "物流科学与工程",
        Map<String, Object> exerThree = CollectionUtils.newObjectMap("exerciseName", "物流工程基础2", "subjectName",
                "物流工程基础2", "status", 0, "commitTime", "", "score", "");
        // 考试记录
        Map<String, Object> examOne = CollectionUtils.newObjectMap("examName", "物流科学与工程", "subjectName", "物流科学与工程",
                "status", 1, "commintTime", new Date(), "score", 90.6);
        Map<String, Object> examTwo = CollectionUtils.newObjectMap("examName", "物流科学与工程", "subjectName", "物流科学与工程",
        Map<String, Object> examTwo = CollectionUtils.newObjectMap("examName", "物流科学与工程", "subjectName", "物流科学与工程",
                "status", 0, "commintTime", new Date(), "score", "");
        return new Result(true, "success",
                CollectionUtils.newObjectMap("studentDetail", studentDetail, "subjectLst",