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/teach/subject/service/impl/SubjectService.java |  315 ++++++++++++++++++++++++++--------------------------
 1 files changed, 157 insertions(+), 158 deletions(-)

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