From 83c795e9d040110973df19a9a3d953518d27b35d Mon Sep 17 00:00:00 2001 From: Administrator <2863138610@qq.com> Date: 星期三, 16 十一月 2022 09:52:44 +0800 Subject: [PATCH] 资源管理修改 --- src/main/java/com/qxueyou/scc/admin/classes/service/impl/ClassLectureService.java | 128 ++++++++------- src/main/java/com/qxueyou/scc/teach/subject/service/impl/SubjectService.java | 315 +++++++++++++++++++------------------- src/main/java/com/qxueyou/scc/teach/res/service/impl/ResService.java | 12 3 files changed, 229 insertions(+), 226 deletions(-) diff --git a/src/main/java/com/qxueyou/scc/admin/classes/service/impl/ClassLectureService.java b/src/main/java/com/qxueyou/scc/admin/classes/service/impl/ClassLectureService.java index 4f55be4..136aa80 100644 --- a/src/main/java/com/qxueyou/scc/admin/classes/service/impl/ClassLectureService.java +++ b/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); diff --git a/src/main/java/com/qxueyou/scc/teach/res/service/impl/ResService.java b/src/main/java/com/qxueyou/scc/teach/res/service/impl/ResService.java index 2573165..0201575 100644 --- a/src/main/java/com/qxueyou/scc/teach/res/service/impl/ResService.java +++ b/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=?"); diff --git a/src/main/java/com/qxueyou/scc/teach/subject/service/impl/SubjectService.java b/src/main/java/com/qxueyou/scc/teach/subject/service/impl/SubjectService.java index 7bd791a..1a79549 100644 --- a/src/main/java/com/qxueyou/scc/teach/subject/service/impl/SubjectService.java +++ b/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)); - } - -}; \ No newline at end of file + + return this.findListWithMapByHql(hql,CollectionUtils.newObjectMap("origSubjectId",origSubjectId)); + } + +}; -- Gitblit v1.8.0