派生自 projectDept/qhighschool

Administrator
2022-11-16 83c795e9d040110973df19a9a3d953518d27b35d
资源管理修改
3个文件已修改
455 ■■■■ 已修改文件
src/main/java/com/qxueyou/scc/admin/classes/service/impl/ClassLectureService.java 128 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/qxueyou/scc/teach/res/service/impl/ResService.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/qxueyou/scc/teach/subject/service/impl/SubjectService.java 315 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/qxueyou/scc/admin/classes/service/impl/ClassLectureService.java
@@ -52,7 +52,7 @@
@Service
public class ClassLectureService extends CommonAppService implements IClassLectureService {
    private final Logger log = LogManager.getLogger(ClassLectureService.class);
    @Autowired
@@ -69,7 +69,7 @@
    @Autowired
    ProgressDAO progressDao;
    @Autowired
    IMsgInfoService msgInfoService;
@@ -95,8 +95,12 @@
    @Override
    public List<MyLectureV> listLectureV(String learnerId, String chapterId, String keyword, Integer pageSize,
                                         Integer pageNum, String type) {
        StringBuffer hql = new StringBuffer("from MyLectureV where chapterId=? and id.userId=? and status=? order by lectureCreateTime desc");
        List<Object> args = CollectionUtils.newList(chapterId, learnerId,ClsSubjectLecture.STATUS_DRAFT);
        StringBuffer hql = new StringBuffer("from MyLectureV where subjectId=? and id.userId=? order by lectureCreateTime desc");
//        StringBuffer hql = new StringBuffer("from MyLectureV where chapterId=? and id.userId=? and status=? order by lectureCreateTime desc");
//        List<Object> args = CollectionUtils.newList(chapterId, learnerId,ClsSubjectLecture.STATUS_DRAFT);
        List<Object> args = CollectionUtils.newList(chapterId, learnerId);
        if (StringUtils.isNotEmpty(type)) {
            hql.append(" and lectureType=?");
@@ -107,10 +111,10 @@
        return result;
    }
    /**
     * 课程课件
     *
     *
     */
    @Override
    public Map<String,Object> listLectureBySubjectOrderCreateTime(String subjectId, String classId, String sort, Pager pager) {
@@ -118,18 +122,18 @@
        if(Subject.TYPE_PUBLIC_SUBJECT == subject.getType()) {//公开课课件
            return this.listOpenLectureBySubjectOrderCreateTime(subjectId, sort, pager);
        }
        QMyLectureV qMyLectureV = QMyLectureV.myLectureV;
        OrderSpecifier<Date> order = "desc".equals(sort)?new OrderSpecifier<Date>(Order.DESC, qMyLectureV.lectureCreateTime):
            new OrderSpecifier<Date>(Order.ASC, qMyLectureV.lectureCreateTime);
        JPAQuery<MyLectureV> query = this.getQueryFactory().selectFrom(qMyLectureV)
                .where(qMyLectureV.subjectId.eq(subjectId).
                        and(qMyLectureV.classId.eq(classId)).and(qMyLectureV.id.userId.eq(ClientUtils.getUserId())));
        long count = query.fetchCount();
        return CollectionUtils.newObjectMap("count", count, "listData", query.limit(pager.getPageSize()).offset(pager.getOffset())
                .orderBy(order)
                .fetch().stream()
@@ -144,10 +148,10 @@
                    return map;
                }).collect(Collectors.toList()));
    }
    /**
     * 公开课课件
     *
     *
     * @param subjectId
     * @param sort
     * @param pager
@@ -157,14 +161,14 @@
    public Map<String,Object> listOpenLectureBySubjectOrderCreateTime(String subjectId, String sort, Pager pager) {
        QSubjectLecture qSubjectLecture = QSubjectLecture.subjectLecture;
        QProgress qProgress = QProgress.progress;
        OrderSpecifier<Date> order = "desc".equals(sort)?new OrderSpecifier<Date>(Order.DESC, qSubjectLecture.createTime):
            new OrderSpecifier<Date>(Order.ASC, qSubjectLecture.createTime);
        JPAQuery<SubjectLecture> query = this.getQueryFactory().selectFrom(qSubjectLecture).where(qSubjectLecture.subjectId.eq(subjectId).and(qSubjectLecture.deleteFlag.isFalse()).and(qSubjectLecture.status.eq(SubjectLecture.STATUS_DRAFT)));
        long count = query.fetchCount();
        return CollectionUtils.newObjectMap("count", count, "listData", query.limit(pager.getPageSize()).offset(pager.getOffset())
                .orderBy(order)
                .fetch().stream()
@@ -236,30 +240,30 @@
        lecture.setClassId(chapter.getClassId());
        lecture.setStatus(res.getStatus());
        save(lecture);
        // 发送消息
        doPublishMsg(lecture);
        return new Result(true, "success");
    }
    //添加课程,发送消息
    private void doPublishMsg(ClsSubjectLecture lecture){
        Subject subject = this.read(Subject.class, lecture.getSubjectId());
        if(!subject.getStatus().equals(Subject.STATUS_ISSUED)){
            return ;
        }
        //查询直播关联的班级
        String hql = "select userId from StuStudent  where classId =:classId and deleteFlag is false ";
        List<String> lstUserIds = this.findByComplexHql(hql, CollectionUtils.newObjectMap("classId",lecture.getClassId()), String.class);
        if(lstUserIds!=null && lstUserIds.size()>0){
            Map<String,String> attrs = CollectionUtils.newStringMap("lectureId",lecture.getLectureId(),"lectureName",lecture.getName(),"subjectId",subject.getSubjectId(),
                    "lectureType",lecture.getLectureType(),"subjectName",subject.getName());
            msgInfoService.doSendTextMsgToUsers(lstUserIds.toArray(new String[lstUserIds.size()]),MsgInfo.TYPE_COURSEWARE,"发布了课件",attrs);
        }
    }
@@ -345,7 +349,7 @@
        return result;
    }
    @Override
    public List<Map<String, Object>> listLectureBySubject(String subjectId, String type, String classId) {
        StringBuffer hql = new StringBuffer("select name as lectureName, "
@@ -366,8 +370,8 @@
        return this.findListWithMapByHql(hql.toString(), args);
    }
    @Override
    public List<Map<String, Object>> listStuLectureBySubject(String subjectId, String classId) {
        if(StringUtils.isEmpty(subjectId) || StringUtils.isEmpty(classId)) {
@@ -390,10 +394,10 @@
                    return map;
                }).collect(Collectors.toList());
    }
    /**
     * 我的公开课课件查询
     *
     *
     * @param subjectId
     * @return
     */
@@ -418,10 +422,10 @@
                    return map;
                }).collect(Collectors.toList());
    }
    /**
     * 查询数量
     *
     *
     * @param subjectId
     * @param classId
     * @return
@@ -488,7 +492,7 @@
        return result;
    }
    public List<SubjectChapter> getListOpenChapter(String subjectId) {
        StringBuffer hql = new StringBuffer(
@@ -506,18 +510,18 @@
        return result;
    }
    @Override
    public Result doClearLecturesToClass( String classId,String subjectId) {
        this.bulkUpdate("update ClsSubjectLecture set deleteFlag = true where classId=? and  subjectId = ? ",
                   new String[]{classId,subjectId});
        this.bulkUpdate("update ClsSubjectChapter set deleteFlag = true where classId=? and  subjectId = ? ",
                new String[]{classId,subjectId});
        return new Result(true);
    }
    @Override
    public Result doCopyLecturesToClass(String origSubjectId, String subjectId, String classId) {
        Map<String, String> subjectIdMap = CollectionUtils.newStringMap(SubjectChapter.ROOT_CHAPTER_ID,
@@ -567,7 +571,7 @@
    @Override
    public List<ClsSubjectLecture> listLecture(String subjectId) {
        StringBuffer hql = new StringBuffer("from ClsSubjectLecture where subjectId = ? and deleteFlag is false");
        List<Object> args = CollectionUtils.newList(subjectId);
@@ -575,30 +579,30 @@
        return find(hql.toString(), args, ClsSubjectLecture.class);
    }
    @Override
    public Result listSubjectLecture(String classId, String sort, Pager pager) {
        if(StringUtils.isEmpty(classId)) {
            return new Result(false, "班级id不能为空");
        }
        QMyLectureV qMyLectureV = QMyLectureV.myLectureV;
        OrderSpecifier<Date> order = "desc".equals(sort)?new OrderSpecifier<Date>(Order.DESC, qMyLectureV.lectureCreateTime):
            new OrderSpecifier<Date>(Order.ASC, qMyLectureV.lectureCreateTime);
        JPAQuery<MyLectureV> query = this.getQueryFactory()
                .selectFrom(qMyLectureV)
                .where(new QueryDslOptionBuilder()
                        .and(qMyLectureV.classId::eq, classId).and(qMyLectureV.id.userId::eq,ClientUtils.getUserId())
                        .build()
                        );
        long count = query.fetchCount();
        // 获取查询结果集合
        QueryResults<MyLectureV> results = query.limit(pager.getPageSize()).offset(pager.getOffset()).orderBy(order).fetchResults();
        List<Map<String,Object>> resultLst =
        List<Map<String,Object>> resultLst =
                results.getResults()
                .stream()
                .map(tuple -> {
@@ -641,11 +645,11 @@
        return new Result(true);
    }
    /**
     * 获取章节下的课件
     *
     *
     * @param chapterLst
     * @param lectures
     * @return
@@ -659,9 +663,9 @@
                    }
                }
            }
            this.getTopChapters(chapterLst);
            for (int i=chapterLst.size()-1;i>=0;i--) {
                ClsSubjectChapter objClsSubjectChapter = chapterLst.get(i);
                if(objClsSubjectChapter.getLectures() == null || objClsSubjectChapter.getLectures().isEmpty()) {
@@ -669,13 +673,13 @@
                }
            }
        }
        return chapterLst;
    }
    /**
     * 获取章节的第一层数据
     *
     *
     * @param chapterLst
     * @return
     */
@@ -702,11 +706,11 @@
                chapterLst = this.getTopChapters(chapterLst);
            }
        }
        return chapterLst;
    }
    @Override
    public int readDocPageCount(String resItemId) {
        ResItemDoc resItemDoc = read(ResItemDoc.class, resItemId);
@@ -721,10 +725,10 @@
        return schHandout.getPageCount();
    }
     /**
     * 课件按目录分类
     *
     *
     * @param classId
     * @param subjectId
     * @param type
@@ -732,12 +736,12 @@
     */
    public Result coursewareChapterList(String classId,String subjectId, String type) {
        Subject subject = this.read(Subject.class, subjectId);
        if(Subject.TYPE_PUBLIC_SUBJECT == subject.getType() || Subject.TYPE_ORG_SUBJECT == subject.getType()) {//公开课和管理员课程
            QSubjectLecture qSubjectLecture = QSubjectLecture.subjectLecture;
            //课件
            List<Map<String, Object>> lectures = this.listStuLectureByOpenSubject(subjectId);
            List<SubjectChapter> lstSubjectChapterLst = this.getListOpenChapter(subjectId);
            List<ClsSubjectChapter> lstClsSubjectChapter = new ArrayList<>();
            if(lstSubjectChapterLst != null && !lstSubjectChapterLst.isEmpty()) {
@@ -751,20 +755,20 @@
                    } catch (InvocationTargetException e) {
                        log.error("拷贝属性失败BeanUtils.copyProperties(objClsSubjectChapter, objSubjectChapter)", e);
                    }
                    lstClsSubjectChapter.add(objClsSubjectChapter);
                }
            }
            //章节
            List<ClsSubjectChapter> chapterLst = this.getChapterLectures(lstClsSubjectChapter, lectures);
            long count =  this.getQueryFactory().selectFrom(qSubjectLecture)
                    .where(qSubjectLecture.subjectId.eq(subjectId).and(qSubjectLecture.deleteFlag.isFalse()).
                            and(qSubjectLecture.status.eq(SubjectLecture.STATUS_DRAFT))).fetchCount();
            return new Result(true, "success", CollectionUtils.newObjectMap("count",count, "listData", QBeanUtils.listBean2ListMap(chapterLst,
                    CollectionUtils.newStringMap("name", "name", "chapterId", "chapterId", "lectures", "lectures"))));
        }else{
            //课件
            List<Map<String, Object>> lectures = this.listStuLectureBySubject(subjectId, classId);
src/main/java/com/qxueyou/scc/teach/res/service/impl/ResService.java
@@ -87,7 +87,7 @@
        res.setCoverPageUrl(coverPageUrl);
        res.setItemDestId(resItemId);
        res.setName(name);
        res.setStatus(Res.STATUS_CONVER);
        res.setStatus(Res.STATUS_DRAFT);
        res.setType(type);
        res.setResDirId(dirId);
        res.setRemark(remark);
@@ -109,7 +109,7 @@
            TraceUtils.setCreateTrace(res);
            res.setItemDestId(resItemId);
            res.setName(name);
            res.setStatus(Res.STATUS_CONVER);
            res.setStatus(Res.STATUS_DRAFT);
            res.setType(type);
            res.setLibId(dir.getLibId());
            res.setResDirId(dirId);
@@ -258,9 +258,9 @@
        ResLib lib = this.getResLib(libType, ownerId);
        StringBuffer hql = new StringBuffer(
                "from Res where deleteFlag is false and name like ? and libId=? and status=? order by updateTime desc");
                "from Res where deleteFlag is false and name like ? and libId like ? and status=? order by updateTime desc");
        List<Object> args = CollectionUtils.newList(keyword + "%", lib == null ? null : lib.getLibId(),Res.STATUS_DRAFT);
        List<Object> args = CollectionUtils.newList(keyword + "%", lib == null ? "%" : lib.getLibId() + "%",Res.STATUS_DRAFT);
        if (!StringUtils.isEmpty(resType)) {
            hql.append(" and type=?");
@@ -276,9 +276,9 @@
    public int listResCountByLib(String libType, String ownerId, String text, String resType) {
        ResLib lib = this.getResLib(libType, ownerId);
        StringBuffer hql = new StringBuffer("from Res where deleteFlag is false and libId=? order by updateTime desc");
        StringBuffer hql = new StringBuffer("from Res where deleteFlag is false and libId like ? order by updateTime desc");
        List<Object> args = CollectionUtils.newList(null == lib ? null : lib.getLibId());
        List<Object> args = CollectionUtils.newList(null == lib ? "%" : lib.getLibId()+"%");
        if (!StringUtils.isEmpty(resType)) {
            hql.append(" and type=?");
src/main/java/com/qxueyou/scc/teach/subject/service/impl/SubjectService.java
@@ -86,7 +86,7 @@
    @Autowired
    ILectureService lectureService;
    @Autowired
    IClassLectureService clsLectureService;
@@ -104,7 +104,7 @@
    @Autowired
    private ITeacherService teacherService;
    @Autowired
    private IMediaLiveService mediaLiveService;
@@ -127,7 +127,7 @@
        subject.setOrgId(ClientUtils.getOrgId());
        save(subject);
        //初始化创建 根节点
        SubjectChapter chapter = new SubjectChapter();
        TraceUtils.setCreateTrace(chapter);
@@ -157,14 +157,14 @@
        subject.setType(type);
        save(subject);
        //更新所有关联的课程
        if(subject.getType()==Subject.TYPE_ORG_SUBJECT){
            this.bulkUpdate("update Subject t set t.name=?,t.contentFileId=?,"
                    + "t.coverPageFileId=?,t.coverPageUrl=? where t.deleteFlag is false and t.origSubjectId=? ",new Object[]{subject.getName(),
                            subject.getContentFileId(),subject.getCoverPageFileId(),subject.getCoverPageUrl(),subject.getSubjectId()} );
        }
        return new Result(true, "success");
    }
@@ -172,13 +172,13 @@
    public Result delete(String[] subjectIds) {
        for (String subjectId : subjectIds) {
            deleteSubject(subjectId);
            //删除班级课程
            List<Map<String,Object>> result = this.findListWithMapByHql(
                    "select r.classId as classId,r.subjectId as subjectId from ClsClassReSubject r,Subject j  "
                    + "where r.subjectId = j.subjectId and j.origSubjectId=:origSubjectId and r.deleteFlag is false and j.deleteFlag is false",
                    + "where r.subjectId = j.subjectId and j.origSubjectId=:origSubjectId and r.deleteFlag is false and j.deleteFlag is false",
                    CollectionUtils.newObjectMap("origSubjectId",subjectId));
            if(result!=null && result.size()>0){
                for(Map<String,Object> map : result){
                    this.deleteClsSubject((String)map.get("classId"), new String []{(String)map.get("subjectId")});
@@ -191,7 +191,7 @@
    /**
     * 删除单个课程
     *
     *
     * @param chapterId
     *            章节id
     * @return
@@ -219,7 +219,7 @@
            hql.append(" and type=?");
            args.add(type);
        }
        if (!StringUtils.isEmpty(status)) {
            hql.append(" and status=?");
            args.add(status);
@@ -231,14 +231,14 @@
        }
        hql.append(" order by createTime desc");
        List<Subject> result = findList(hql.toString(), new Pager(pageSize, pageNum), args, Subject.class);
        return result;
    }
    /**
     * app教师端课程列表
     *
     *
     * @param text
     * @param status
     * @param type
@@ -252,12 +252,12 @@
        if(StringUtils.isEmpty(teacherId)) {
            return new Result(false, "当前用户无老师角色");
        }
        QSubject qSubject = QSubject.subject;
        QSubjectLecture qSubjectLecture = QSubjectLecture.subjectLecture;
        QProgress qProgress = QProgress.progress;
        QClsClassReSubject qClsClassReSubject = QClsClassReSubject.clsClassReSubject;
        JPAQuery<Tuple> query = this.getQueryFactory()
                .select(qSubject.subjectId, qSubject.name, qSubject.term,qSubject.coverPageUrl, qSubject.schoolYear, qSubject.createTime, qSubject.type)
                .from(qSubject)
@@ -265,9 +265,9 @@
                        .and(qSubject.status.eq(Subject.STATUS_ISSUED)).and(qSubject.type.eq(type))
                        .and(qSubject.createId.eq(ClientUtils.getUserId()))
                        .and(qSubject.name.like("%" + keyword + "%")));
        long count = query.fetchCount();
        List<Map<String, Object>> listData = query.orderBy(qSubject.createTime.desc()).limit(pager.getPageSize())
                .offset(pager.getOffset()).fetch().stream().map(tuple -> {
                    Map<String, Object> map = new HashMap<String, Object>(10);
@@ -292,20 +292,20 @@
                    return map;
                }).collect(Collectors.toList());
        return new Result(true, "", CollectionUtils.newObjectMap("count", count, "listData", listData));
    }
    @Override
    public int listCount(String text, String teacherId, String status,Integer type) {
        StringBuffer hql = new StringBuffer("from Subject where name like ? and orgId=? and deleteFlag is false and origSubjectId is null ");
        List<Object> args = CollectionUtils.newList(text + "%",ClientUtils.getOrgId());
        List<Object> args = CollectionUtils.newList(text + "%",ClientUtils.getOrgId());
        if(type!=null){
            hql.append(" and type=?");
            args.add(type);
        }
        if (StringUtils.isNotBlank(status)) {
            hql = hql.append(" and status = ?");
            args.add(status);
@@ -329,7 +329,7 @@
    public String readSubjectContent(String subjectId) {
        Subject sub = read(subjectId);
        //读取原课程
        if(StringUtils.isNotBlank(sub.getOrigSubjectId())) {
            sub = read(sub.getOrigSubjectId());
@@ -366,7 +366,7 @@
    /**
     * 发布单个课程
     *
     *
     * @param chapterId
     *            章节id
     * @return
@@ -379,16 +379,16 @@
        subject.setStatus(Subject.STATUS_ISSUED);
        save(subject);
        //更新所有关联的课程
        this.bulkUpdate("update Subject set status='" + Subject.STATUS_ISSUED + "' where origSubjectId=? and deleteFlag is false ",new Object[]{subjectId});
        return new Result(true, "success");
    }
    /**
     * 发布单个课程
     *
     *
     * @param chapterId
     *            章节id
     * @return
@@ -401,7 +401,7 @@
        subject.setStatus(Subject.STATUS_OFFLINE);
        save(subject);
        //更新所有关联的课程
        this.bulkUpdate("update Subject set status='" + Subject.STATUS_OFFLINE + "' where origSubjectId=? and deleteFlag is false ",new Object[]{subjectId});
@@ -427,19 +427,18 @@
    public List<Map<String, Object>> listChapterStudyProgress(String subjectId) {
        QSubjectProgressTreeV qSubjectProgressTreeV = QSubjectProgressTreeV.subjectProgressTreeV;
        List<Map<String, Object>> lstResult = this.getQueryFactory().selectFrom(qSubjectProgressTreeV).
                where(qSubjectProgressTreeV.parentId.eq(subjectId).and(qSubjectProgressTreeV.id.userId.eq(ClientUtils.getUserId())))
                where(qSubjectProgressTreeV.id.nodeId.eq(subjectId).and(qSubjectProgressTreeV.id.userId.eq(ClientUtils.getUserId())))
                .fetch().stream().map(objSubjectProgressTreeV ->{
                    Map<String, Object> map = new HashMap<>();
                    map.put("chapterName", objSubjectProgressTreeV.getNodeName());
                    map.put("chapterId", objSubjectProgressTreeV.getId().getNodeId());
                    map.put("percent", objSubjectProgressTreeV.getPercent());
                    map.put("studyTime", objSubjectProgressTreeV.getProgressValue());
                    return map;
                }).collect(Collectors.toList());
        return lstResult;
    }
@@ -474,7 +473,7 @@
        Subject origSubject = this.read(origSubjectId);
        UserTeacher teacher = this.read(UserTeacher.class, teacherId);
        BeanUtils.copyProperties(newSubject,origSubject);
        TraceUtils.setCreateTrace(newSubject);
        newSubject.setSubjectId(null);
        newSubject.setTeacherId(teacherId);
@@ -487,30 +486,30 @@
        newSubject.setTeacherName(teacher.getName());
        newSubject.setOrgId(ClientUtils.getOrgId());
        save(newSubject);
        //添加班级课程关系
        addClassReSubject(newSubject.getSubjectId(),classId);
        //复制课件
        clsLectureService.doCopyLecturesToClass(origSubjectId,newSubject.getSubjectId(),classId);
        return new Result(true, "success",CollectionUtils.newStringMap("subjectId",newSubject.getSubjectId()));
    }
    private void addClassReSubject(String subjectId, String classId) {
        ClsClassReSubject re = new ClsClassReSubject();
        TraceUtils.setCreateTrace(re);
        re.setClassId(classId);
        re.setSubjectId(subjectId);
        save(re);
    }
    }
    @Override
    public Result updateClsSubject(String classId,String subjectId,String origSubjectId, String teacherId, Integer schoolYear,Integer term) {
        Subject origSubject = this.read(origSubjectId);
        Subject subject = this.read(subjectId);
        UserTeacher teacher = this.read(UserTeacher.class, teacherId);
        //如果原课程做出了修改
        if(!origSubjectId.equals(subject.getOrigSubjectId())){
            subject.setContentFileId(origSubject.getCoverPageFileId());
@@ -519,36 +518,36 @@
            subject.setName(origSubject.getName());
            subject.setOrigSubjectId(origSubjectId);
            subject.setOrigCopySubjectId(origSubjectId);
            //清理并复制原课程
            clsLectureService.doClearLecturesToClass(classId,subjectId);
            clsLectureService.doCopyLecturesToClass(origSubjectId, subjectId, classId);
        }
        TraceUtils.setUpdateTrace(subject);
        subject.setTeacherId(teacherId);
        subject.setTeacherName(teacher.getName());
        subject.setSchoolYear(schoolYear);
        subject.setTerm(term);
        save(subject);
        return new Result(true, "success");
    }
    @Override
    public Result deleteClsSubject(String classId,String[] subjectIds) {
        Map<String,Object> paramMap = new HashMap<String,Object>();
        paramMap.put("classId", classId);
        paramMap.put("subjectIds", subjectIds);
        List<String>  reIdLst =  this.findByComplexHql("select r.clsReSubjectId from ClsClassReSubject r where r.deleteFlag is false and r.classId=:classId and r.subjectId in (:subjectIds) ",
                    paramMap, String.class);
        //删除关联关系
        if(reIdLst!=null && reIdLst.size()>0){
            this.bulkUpdateInLoop("update ClsClassReSubject set deleteFlag = true where clsReSubjectId=?", reIdLst.toArray());
        }
        this.delete(subjectIds);
        return new Result(true, "success");
    }
@@ -624,7 +623,7 @@
        QUser qUser = QUser.user;
        String nodeId = StringUtils.isNotEmpty(subjectId)?subjectId:classId;
        String nodeType = StringUtils.isNotEmpty(subjectId)?Progress.PROGRESS_TYPE_SUBJECT:Progress.PROGRESS_TYPE_CLASS;
        List<Map<String, Object>> lstMap = this.getQueryFactory().select(qSubjectProgressTreeV.progressValue,
                qSubjectProgressTreeV.percent, qUser.name, qUser.userId,qSubjectProgressTreeV.id.nodeId).from(qSubjectProgressTreeV, qUser).
                where(qSubjectProgressTreeV.id.userId.eq(qUser.userId).and(qSubjectProgressTreeV.nodeType.eq(nodeType))
@@ -654,13 +653,13 @@
        .when(qExerciseResultV.completeStatus.eq(ExerciseCompleteInfo.STATUS_CHECKED)
                .or(qExerciseResultV.completeStatus.eq(ExerciseCompleteInfo.STATUS_COMMIT)))
        .then(BigDecimal.ONE).otherwise(BigDecimal.ZERO).sum();
        //case分数
        NumberExpression<BigDecimal> caseScoreSum = new CaseBuilder()
                .when(qExerciseResultV.completeStatus.eq(ExerciseCompleteInfo.STATUS_CHECKED)
                        .or(qExerciseResultV.completeStatus.eq(ExerciseCompleteInfo.STATUS_COMMIT)))
                .then(qExerciseResultV.score).otherwise(BigDecimal.ZERO).sum();
        List<Map<String, Object>> lstMap = this.getQueryFactory().select(qExerciseResultV.userId,qExerciseResultV.studentName,
                caseScoreSum.divide(caseCount), qExerciseResultV.count(), caseCount).from(qExerciseResultV).where(predicate).
                groupBy(qExerciseResultV.userId).
@@ -671,19 +670,19 @@
                    map.put("avgScore", tuple.get(2, BigDecimal.class));
                    map.put("exerciseCount",tuple.get(3, BigDecimal.class));
                    map.put("commitExerciseCount", tuple.get(4, BigDecimal.class));
                    return map;
                }).collect(Collectors.toList());
        return lstMap;
    }
    /**
     *
     *
     */
    private List<Map<String, Object>> examInfoDesc(String classId, String subjectId) {
        QExamResultV qExamResultV = QExamResultV.examResultV;
        //查询条件
        Predicate predicate = StringUtils.isEmpty(subjectId)?qExamResultV.id.classId.eq(classId):
@@ -694,7 +693,7 @@
        //case分数
        NumberExpression<BigDecimal> caseScoreSum = new CaseBuilder()
                .when(qExamResultV.status.eq("0")).then(BigDecimal.ZERO).otherwise(qExamResultV.score).sum();
        List<Map<String, Object>> lstMap = this.getQueryFactory().select(qExamResultV.userId,qExamResultV.studentName,
                caseScoreSum.divide(caseCount), qExamResultV.count(), caseCount).from(qExamResultV).where(predicate).
                groupBy(qExamResultV.userId).
@@ -705,7 +704,7 @@
                    map.put("avgScore", tuple.get(2, BigDecimal.class));
                    map.put("examCount",tuple.get(3, BigDecimal.class));
                    map.put("commitExamCount", tuple.get(4, BigDecimal.class));
                    return map;
                }).collect(Collectors.toList());
        return lstMap;
@@ -722,11 +721,11 @@
        }
        return new Result(true, "success", map);
    }
    @Override
    public List<Map<String,Object>> queryAvailableSubjectIdAndName(String teacherId,Integer subjectType){
        List<Map<String,Object>> result = null;
        if(subjectType==Subject.TYPE_PUBLIC_SUBJECT){
            result =  this.findListWithMapByHql(
                    "select subjectId as subjectId ,name as subjectName from Subject where deleteFlag is false and type=" + Subject.TYPE_PUBLIC_SUBJECT + " and orgId='" + ClientUtils.getOrgId() + "'" , null);
@@ -739,8 +738,8 @@
                            "select subjectId as subjectId ,name as subjectName from Subject where deleteFlag is false and type=" + Subject.TYPE_ORG_SUBJECT + " and orgId='" + ClientUtils.getOrgId() + "'", null);
            }
        }
        return result;
        return result;
    }
    @Override
@@ -764,12 +763,12 @@
        return lstMap;
    }
    @Override
    public List<Map<String,Object>> clsSubjectlist(String classId, Integer schoolYear, Integer term) {
        QSubject qSubject = QSubject.subject;
        QClsClassReSubject qClsClassReSubject = QClsClassReSubject.clsClassReSubject;
        QueryDslOptionBuilder builder = new QueryDslOptionBuilder().
                and(qSubject.deleteFlag::eq, false)
                .and(qClsClassReSubject.classId::eq, classId)
@@ -781,7 +780,7 @@
        if(term != null && term != 0){//学期
            builder = builder.and(qSubject.term::eq, term);
        }
        return this.getQueryFactory().select(qSubject.name,qSubject.origSubjectId,qSubject.subjectId,qSubject.schoolYear, qSubject.term).distinct()
                .from(qSubject, qClsClassReSubject)
                .where(builder.build())
@@ -797,18 +796,18 @@
                    return map;
                }).collect(Collectors.toList());
    }
    @Override
    public List<Map<String,Object>> termList(String classId) {
        QSubject qSubject = QSubject.subject;
        QClsClassReSubject qClsClassReSubject = QClsClassReSubject.clsClassReSubject;
        QueryDslOptionBuilder builder = new QueryDslOptionBuilder().
                and(qSubject.deleteFlag::eq, false)
                .and(qClsClassReSubject.classId::eq, classId)
                .and(qClsClassReSubject.subjectId::eq, qSubject.subjectId)
                .and(qClsClassReSubject.deleteFlag::eq, false).and(qSubject.status::eq, Subject.STATUS_ISSUED);
        return this.getQueryFactory().select(qSubject.schoolYear.as("schoolYear"),qSubject.term.as("term"))
                .from(qSubject, qClsClassReSubject)
                .where(builder.build().and(qSubject.schoolYear.isNotNull())
@@ -822,37 +821,37 @@
                    return map;
                }).collect(Collectors.toList());
    }
    /**
     * 我的班级信息
     *
     *
     * @param classId
     * @return
     */
    public Map<String,Object> myClassInfo(String classId){
        ClsClass objClsClass = this.read(ClsClass.class, classId);
        QSubjectProgressTreeV qSubjectProgressTreeV = QSubjectProgressTreeV.subjectProgressTreeV;
        List<Subject> lstSubject = objClsClass.getSubjects();
        //过滤掉状态为草稿的
        List<String> teachers = lstSubject.stream().filter(u->u.getStatus().equals(Subject.STATUS_ISSUED)).map(tuple -> {
            return tuple.getTeacherName();
        }).collect(Collectors.toList());
        SubjectProgressTreeV objSubjectProgressTreeV = this.getQueryFactory().selectFrom(qSubjectProgressTreeV)
                .where(qSubjectProgressTreeV.id.nodeId.eq(classId).and(qSubjectProgressTreeV.id.userId.eq(ClientUtils.getUserId())).and(qSubjectProgressTreeV.nodeType.eq("class"))).fetchOne();
        if(objSubjectProgressTreeV != null) {
            long allCount = this.getQueryFactory().selectFrom(qSubjectProgressTreeV)
                    .where(qSubjectProgressTreeV.id.nodeId.eq(classId)).fetchCount();
            long lgCount = this.getQueryFactory().selectFrom(qSubjectProgressTreeV)
                    .where(qSubjectProgressTreeV.id.nodeId.eq(classId).and(qSubjectProgressTreeV.percent.gt(objSubjectProgressTreeV.getPercent()))).fetchCount();
            //排行
            float rank = (allCount-lgCount)/allCount;
            return CollectionUtils.newObjectMap("className", objClsClass.getName(), "progressPercent",
                    objSubjectProgressTreeV.getPercent(), "progressValue", objSubjectProgressTreeV.getProgressValue(), "rank", rank, "teacherName", teachers);
        }else {
@@ -860,17 +859,17 @@
                    0, "progressValue", 0, "rank", 0, teachers);
        }
    }
    /**
     * 获取我的课程进度
     *
     *
     * @param classId
     * @return
     */
    public List<Map<String,Object>> myClsSubjectlist(String classId, String userId,  Pager pager){
        String teacherId = this.teacherService.getTeacherIdByUserId(ClientUtils.getUserId());
        QMySubjectV qMySubjectV = QMySubjectV.mySubjectV;
        Predicate predicate = null;
        if(StringUtils.isNotEmpty(teacherId)) {
            predicate = qMySubjectV.id.classId.eq(classId).and(qMySubjectV.id.userId.eq(userId)).and(qMySubjectV.teacherId.eq(teacherId).and(qMySubjectV.subjectStatus.eq(Subject.STATUS_ISSUED)));
@@ -897,16 +896,16 @@
                    return map;
                }).collect(Collectors.toList());
    }
    /**
     * 获取我的课程数量
     *
     *
     * @param classId
     * @return
     */
    public long myClsSubjectCount(String classId){
        QMySubjectV qMySubjectV = QMySubjectV.mySubjectV;
        return this.getQueryFactory().select(qMySubjectV.id.subjectId,
                qMySubjectV.subjectName,qMySubjectV.term,
                qMySubjectV.schoolYear,qMySubjectV.percent)
@@ -914,17 +913,17 @@
                .where(qMySubjectV.id.classId.eq(classId).and(qMySubjectV.id.userId.eq(ClientUtils.getUserId())).and(qMySubjectV.subjectStatus.eq(Subject.STATUS_ISSUED)))
                .fetchCount();
    }
    /**
     * 获取学员的课程进度
     *
     *
     * @param classId
     * @return
     */
    public List<Map<String,Object>> studentSubjectProgress(String classId, Pager pager){
        String teacherId = this.teacherService.getTeacherIdByUserId(ClientUtils.getUserId());
        QSubjectProgressTreeV qSubjectProgressTreeV = QSubjectProgressTreeV.subjectProgressTreeV;
        QMySubjectV qMySubjectV = QMySubjectV.mySubjectV;
        return this.getQueryFactory().select(qMySubjectV.id.subjectId,
                qMySubjectV.subjectName,qMySubjectV.term,qMySubjectV.coverPageUrl,
@@ -947,21 +946,21 @@
                                    .where(qSubjectProgressTreeV.id.nodeId.eq(tuple.get(qMySubjectV.id.subjectId))
                                            .and(qSubjectProgressTreeV.nodeType.eq(Progress.PROGRESS_TYPE_SUBJECT)))
                                    .groupBy(qSubjectProgressTreeV.id.nodeId).fetchOne());
                    map.put("coverPageUrl",  tuple.get(qMySubjectV.coverPageUrl));
                    map.put("lectureCount",  this.getLectureCount(tuple.get(qMySubjectV.id.subjectId)));
                    return map;
                }).collect(Collectors.toList());
    }
    /**
     * 获取课件数量
     *
     *
     * @param subjectId
     * @return
     */
    public long getLectureCount(String subjectId) {
        Subject subject = this.read(subjectId);
        if(subject == null) {
            return 0l;
@@ -969,22 +968,22 @@
        if(subject.getType() == Subject.TYPE_CLS_SUBJECT) {//班级课程
            QClsSubjectLecture qSubjectLecture = QClsSubjectLecture.clsSubjectLecture;
            return this.getQueryFactory().selectFrom(qSubjectLecture).where(qSubjectLecture.deleteFlag.isFalse()
                    .and(qSubjectLecture.subjectId.eq(subjectId)).and(qSubjectLecture.status.eq(SubjectLecture.STATUS_DRAFT))).fetchCount();
        }else {
            QSubjectLecture qSubjectLecture = QSubjectLecture.subjectLecture;
            return this.getQueryFactory().selectFrom(qSubjectLecture).where(qSubjectLecture.deleteFlag.isFalse()
                    .and(qSubjectLecture.subjectId.eq(subjectId)).and(qSubjectLecture.status.eq(SubjectLecture.STATUS_DRAFT))).fetchCount();
        }
    }
    /**
     * 我的公开课列表
     *
     *
     * @param pageNum
     * @param pageSize
     * @param keyword
@@ -994,7 +993,7 @@
        QSubject qSubject = QSubject.subject;
        QProgress qProgress = QProgress.progress;
        QSubjectLecture qSubjectLecture = QSubjectLecture.subjectLecture;
        JPAQuery<Tuple> query = this.getQueryFactory()
                .select(qSubject.subjectId, qSubject.name, qSubject.term,qSubject.coverPageUrl, qSubject.schoolYear,
                        qProgress.progressPercent.avg().as(qProgress.progressPercent), qProgress.progressValue.sum().as(qProgress.progressValue))
@@ -1004,12 +1003,12 @@
                        .and(qProgress.learnerId.eq(ClientUtils.getUserId()))
                        .and(qSubject.name.like("%" + keyword + "%").and(qProgress.deleteFlag.isFalse()))
                        .and(qProgress.type.eq(Progress.PROGRESS_TYPE_LECTURE)).and(qSubject.status.eq(Subject.STATUS_ISSUED))).groupBy(qSubject.subjectId);
        long count = query.fetchCount();
        List<Map<String, Object>> listData = query.orderBy(qProgress.createTime.desc()).limit(pageSize).offset(pageNum).fetch().stream().map(tuple -> {
                    Map<String, Object> map = new HashMap<String, Object>(7);
                    String subjectId = tuple.get(qSubject.subjectId);
                    map.put("name", tuple.get(qSubject.name));
                    map.put("subjectId", subjectId);
                    map.put("schoolYear", tuple.get(qSubject.schoolYear));
@@ -1019,16 +1018,16 @@
                    map.put("progressValue", tuple.get(qProgress.progressValue));
                    Map<String,Object> openSubjectDetail = this.openSubjectDetail(subjectId);
                    // 直播数量
                    map.put("mediaVideoLiveCount",openSubjectDetail.get("mediaVideoLiveCount"));
                    // 课件数量
                    map.put("subjectLectureCount",openSubjectDetail.get("subjectLectureCount"));
                    //学习人次
                    map.put("studyCount",openSubjectDetail.get("studyCount"));
                    map.put("content",openSubjectDetail.get("content"));
                    // 已观看完成课件数量
@@ -1036,13 +1035,13 @@
                    return map;
                }).collect(Collectors.toList());
        return CollectionUtils.newObjectMap("count", count, "listData", listData);
    }
    /**
     * 课程统计详情
     *
     *
     * @param subjectId
     * @return
     */
@@ -1051,7 +1050,7 @@
        QMediaVideoLive qMediaVideoLive = QMediaVideoLive.mediaVideoLive;
        QSubjectLecture qSubjectLecture = QSubjectLecture.subjectLecture;
        QProgress qProgress = QProgress.progress;
        // 直播数量
        map.put("mediaVideoLiveCount",
                this.getQueryFactory().select(qMediaVideoLive).from(qMediaVideoLive)
@@ -1066,14 +1065,14 @@
                        .where(qSubjectLecture.deleteFlag.isFalse()
                                .and(qSubjectLecture.subjectId.eq(subjectId)).and(qSubjectLecture.status.eq(SubjectLecture.STATUS_DRAFT)))
                        .fetchCount());
        //学习人次
        map.put("studyCount",
                this.getQueryFactory().selectDistinct(qProgress.learnerId).from(qProgress, qSubjectLecture)
                        .where(qProgress.deleteFlag.isFalse().and(qSubjectLecture.deleteFlag.isFalse()).and(qSubjectLecture.subjectId.eq(subjectId)).and(qProgress.type.eq(Progress.PROGRESS_TYPE_LECTURE))
                                .and(qProgress.targetId.eq(qSubjectLecture.lectureId)))
                        .fetchCount());
        map.put("content", this.readSubjectContent(subjectId));
        // 已观看完成课件数量
@@ -1084,58 +1083,58 @@
                                .and(qProgress.progressPercent.gt(0.95)).and(qProgress.targetId.eq(qSubjectLecture.lectureId))
                                .and(qSubjectLecture.subjectId.eq(subjectId)))
                        .fetchCount());
        return map;
    }
    /**
     * 公开课详情
     *
     *
     * @param subjectId
     * @return
     */
    public Map<String,Object> openSubjectInfo(String subjectId){
        QProgress qProgress = QProgress.progress;
        QSubjectLecture qSubjectLecture = QSubjectLecture.subjectLecture;
        Subject objSubject = this.read(subjectId);
        Tuple progress = this.getQueryFactory()
                .select(qProgress.progressPercent.sum().as(qProgress.progressPercent), qProgress.progressValue.sum().as(qProgress.progressValue)).from(qProgress,qSubjectLecture).where(qProgress.learnerId.eq(ClientUtils.getUserId())
                                .and(qProgress.targetId.eq(qSubjectLecture.lectureId))
                        .and(qProgress.deleteFlag.isFalse()).and(qSubjectLecture.deleteFlag.isFalse()).and(qSubjectLecture.subjectId.eq(subjectId))
                        .and(qProgress.type.eq(Progress.PROGRESS_TYPE_LECTURE))).fetchOne();
        Map<String, Object> subjectInfo = new HashMap<String, Object>(7);
        subjectInfo.put("name", objSubject.getName());
        subjectInfo.put("subjectId", subjectId);
        subjectInfo.put("schoolYear", objSubject.getSchoolYear());
        subjectInfo.put("term", objSubject.getTerm());
        subjectInfo.put("coverPageUrl", objSubject.getCoverPageUrl());
        subjectInfo.put("teacherName", objSubject.getTeacherName());
        Map<String,Object> openSubjectDetail = this.openSubjectDetail(subjectId);
        Map<String, Object> map = new HashMap<String, Object>(7);
        // 直播数量
        map.put("mediaVideoLiveCount",openSubjectDetail.get("mediaVideoLiveCount"));
        // 课件数量
        map.put("subjectLectureCount",openSubjectDetail.get("subjectLectureCount"));
        //学习人次
        map.put("studyCount",openSubjectDetail.get("studyCount"));
        subjectInfo.put("content",openSubjectDetail.get("content"));
        // 已观看完成课件数量
        map.put("subjectLectureDoCount",openSubjectDetail.get("subjectLectureDoCount"));
        map.put("subjectInfo", subjectInfo);
        if(openSubjectDetail.get("subjectLectureCount") == null || progress == null || progress.get(qProgress.progressPercent) == null) {
            subjectInfo.put("progressPercent", 0);
        }else {
@@ -1205,7 +1204,7 @@
    /**
     * 公开课列表
     *
     *
     * @param pageNum
     * @param pageSize
     * @param keyword
@@ -1213,7 +1212,7 @@
     */
    public Map<String,Object> openSubjectList(Integer pageNum, Integer pageSize, String keyword){
        QOpenSubjectV qOpenSubjectV = QOpenSubjectV.openSubjectV;
        JPAQuery<OpenSubjectV> query = this.getQueryFactory().selectFrom(qOpenSubjectV).where(qOpenSubjectV.subjectName.like("%" + keyword + "%"));
        long count = query.fetchCount();
@@ -1234,13 +1233,13 @@
                    return map;
                }).collect(Collectors.toList());
        return CollectionUtils.newObjectMap("count", count, "listData", listData);
    }
    /**
     * 班级学员课件总体进度
     *
     *
     * @param subjectId
     * @param classId
     * @return
@@ -1267,10 +1266,10 @@
                    return map;
                }).collect(Collectors.toList());
    }
    /**
     * 学员课程作业进度
     *
     *
     * @param classId
     * @param subjectId
     * @return
@@ -1296,7 +1295,7 @@
                        .and(qHomeworkScoreV.userId.eq(student.getUserId()))
                        .and(qHomeworkScoreV.exerciseStatus.eq(ExerciseInfo.EXERCISE_STATUS_PUBLISHED)))
                .groupBy(qHomeworkScoreV.userId).fetchOne();
        Map<String,Object> map = new HashMap<String,Object>(4);
        if(tuple == null) {
            map.put("subjectId", subjectId);
@@ -1310,13 +1309,13 @@
            map.put("avgScore",  String.valueOf(commitHomeworkCount == 0 || tuple.get(2, BigDecimal.class) == null?BigDecimal.ZERO:tuple.get(2, BigDecimal.class).divide(BigDecimal.valueOf(commitHomeworkCount), 2, BigDecimal.ROUND_HALF_UP)));
            map.put("commitHomeworkCount", commitHomeworkCount);
        }
        return map;
    }
    /**
     * 学员考试作业进度
     *
     *
     * @param classId
     * @param subjectId
     * @return
@@ -1326,7 +1325,7 @@
        StuStudent student = read(StuStudent.class, studentId);
        Subject subject = read(Subject.class, subjectId);
        Tuple tuple = this.getQueryFactory().select(qExamScoreV.subjectId, qExamScoreV.count(), new CaseBuilder()
                .when(qExamScoreV.status.eq("0")).then(BigDecimal.ZERO).otherwise(qExamScoreV.score).sum(), new CaseBuilder()
                .when(qExamScoreV.status.eq("0")).then(0).otherwise(1).sum()).
@@ -1341,18 +1340,18 @@
            map.put("commitExamCount",  0);
        }else {
            int commitExamCount = tuple.get(3, Integer.class) == null?0:tuple.get(3, Integer.class);
            map.put("examCount",  tuple.get(1, Integer.class) == null?0:tuple.get(1, Integer.class));
            map.put("avgScore",  String.valueOf(commitExamCount == 0 || tuple.get(2, BigDecimal.class) == null?BigDecimal.ZERO:tuple.get(2, BigDecimal.class).divide(new BigDecimal(commitExamCount), 2, BigDecimal.ROUND_HALF_UP)));
            map.put("commitExamCount",  tuple.get(3, Integer.class) == null?0:tuple.get(3, Integer.class));
        }
        return map;
    }
    /**
     * 我的课件情况
     *
     *
     * @param classId
     * @return
     */
@@ -1374,10 +1373,10 @@
                    return map;
                }).collect(Collectors.toList());
    }
    /**
     * 我的课程,按时间排序
     *
     *
     * @param classId
     * @return
     */
@@ -1392,16 +1391,16 @@
            clsSubject.put("homework", CollectionUtils.newObjectMap("homeworkCount", exerciseInfoService.queryStuExerciseListCount("", null, ClientUtils.getUserId(), origSubjectId, null)));
            clsSubject.put("lecture", CollectionUtils.newObjectMap("lectureCount", 0, "completeLectureCount", 0));
            clsSubject.put("mediaVideoLive", CollectionUtils.newObjectMap("mediaVideoLiveCount", this.mediaLiveService.listCount("", new String[] {classId}, origSubjectId, null)));
            this.setSubjectStatistics("lecture", clsSubject, lectures);
        }
        return clsSubjectlist;
    }
    /**
     * 统计课程的数据
     *
     *
     * @param type 类型
     * @param clsSubject 课程
     * @param lstStatistics 统计信息
@@ -1414,17 +1413,17 @@
                }
            }
        }
    }
    /**
     * 我的课程详情
     *
     *
     * @param classId
     * @return
     */
    public Map<String,Object> mySubjectInfo(String subjectId, String classId,HttpServletRequest request) {
        QMySubjectV qMySubjectV = QMySubjectV.mySubjectV;
        QMyLectureV qMyLectureV = QMyLectureV.myLectureV;
        Object userId = request.getSession().getAttribute("userId");
@@ -1436,7 +1435,7 @@
                .where(qMySubjectV.id.classId.eq(classId).and(qMySubjectV.id.userId.eq(ClientUtils.getUserId()))
                        .and(qMySubjectV.id.subjectId.eq(subjectId)))
                .fetchOne();
        Subject objSubject = this.read(subjectId);
        Map<String, Object> subject = new HashMap<String, Object>(5);
@@ -1457,7 +1456,7 @@
        }
        String origSubjectId = objSubject.getOrigSubjectId();
        // 考试统计
        long examsCount = this.examService.listStudentExamCount("", new String[] {classId}, origSubjectId, null);
@@ -1476,13 +1475,13 @@
        return CollectionUtils.newObjectMap("mediaVideoLivesCount", mediaVideoLivesCount, "examsCount", examsCount,
                "homeworksCount", homeworksCount, "subjectInfo", subject, "lectureCount",
                tupleLecture == null?0:tupleLecture.get(0, Long.class),
                tupleLecture == null?0:tupleLecture.get(0, Long.class),
                        "completeLectureCount", tupleLecture == null?0:tupleLecture.get(1,Integer.class));
    }
    /**
     * 我的课程按学期分类
     *
     *
     * @param classId
     * @return
     */
@@ -1499,7 +1498,7 @@
    /**
     * 课程按学期分类
     *
     *
     * @param classId
     * @return
     */
@@ -1507,7 +1506,7 @@
    public List<Map<String,Object>> termSubjectList(String classId, List<Map<String,Object>> clsSubjectlist) {
        //学期
        List<Map<String,Object>> termList = this.termList(classId);
        if(termList != null && !termList.isEmpty()) {
            for(Map<String,Object> term : termList) {
                if(termList != null && !termList.isEmpty()) {
@@ -1524,11 +1523,11 @@
        }
        return termList;
    }
    /**
     * 查询课程关联的班级课程信息
     *
     *
     * @param classId
     * @return
     */
@@ -1538,8 +1537,8 @@
                  + " s.schoolYear as schoolYear,s.term as term,c.classId as classId,c.name as className"
                  + " from Subject s ,ClsClassReSubject r ,ClsClass c where s.subjectId = r.subjectId "
                  + " and r.classId = c.classId and s.origSubjectId =:origSubjectId and s.deleteFlag is false";
        return this.findListWithMapByHql(hql,CollectionUtils.newObjectMap("origSubjectId",origSubjectId));
    }
};
        return this.findListWithMapByHql(hql,CollectionUtils.newObjectMap("origSubjectId",origSubjectId));
    }
};