From 96286178ee1c257c130cb2ad964a781f36c4eee5 Mon Sep 17 00:00:00 2001 From: yn147 <2270338776@qq.com> Date: 星期三, 10 五月 2023 16:23:27 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/main/java/com/qxueyou/scc/admin/classes/service/impl/ClsClassService.java | 275 ++++++++++++++++++++++++++++++------------------------- 1 files changed, 150 insertions(+), 125 deletions(-) diff --git a/src/main/java/com/qxueyou/scc/admin/classes/service/impl/ClsClassService.java b/src/main/java/com/qxueyou/scc/admin/classes/service/impl/ClsClassService.java index 2241ed6..dbf0cb3 100644 --- a/src/main/java/com/qxueyou/scc/admin/classes/service/impl/ClsClassService.java +++ b/src/main/java/com/qxueyou/scc/admin/classes/service/impl/ClsClassService.java @@ -1,12 +1,11 @@ package com.qxueyou.scc.admin.classes.service.impl; -import java.util.Collections; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; +import com.qxueyou.scc.teach.subject.model.view.MyLectureV; +import com.qxueyou.scc.teach.subject.model.view.MySubjectV; +import com.qxueyou.scc.teach.subject.service.ILectureService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.Cacheable; @@ -35,7 +34,7 @@ import com.qxueyou.scc.teach.subject.model.Subject; /** - * 班级服务类 + * 鐝骇鏈嶅姟绫� * * @author xiadehu */ @@ -54,8 +53,11 @@ @Autowired ITeacherService teacherService; + @Autowired + ILectureService lectureService; + /** - * 添加班级 + * 娣诲姞鐝骇 */ @Override public Result insertClass(String className, String classNumber, Date startTime, Date endTime, String subjectId, @@ -75,11 +77,11 @@ return new Result(true, "success",CollectionUtils.newStringMap("classId",cls.getClassId())); } /** - * 添加补考班级班级 + * 娣诲姞琛ヨ�冪彮绾х彮绾� */ @Override public Result insertReClass(String className, String classNumber, Date startTime, Date endTime, String subjectId, - String teacherId,String classTypes) { + String teacherId,String classTypes) { ClsClass cls = new ClsClass(); @@ -95,14 +97,14 @@ save(cls); return new Result(true, "success",CollectionUtils.newStringMap("classId",cls.getClassId())); } - @Override - public ClsClass getReClass(String classTypes) { - String hql = "select c from ClsClass c where c.deleteFlag is false and c.classTypes=? "; + @Override + public ClsClass getReClass(String classTypes) { + String hql = "select c from ClsClass c where c.deleteFlag is false and c.classTypes=? "; - ClsClass cls = findUnique(hql, CollectionUtils.newList(classTypes), - ClsClass.class); - return cls; - } + ClsClass cls = findUnique(hql, CollectionUtils.newList(classTypes), + ClsClass.class); + return cls; + } @Override public Result updateClass(String classId, String className, String classNumber, Date startTime, Date endTime, @@ -134,7 +136,7 @@ } /** - * 获取班级列表 + * 鑾峰彇鐝骇鍒楄〃 */ @Override public List<ClsClass> getClassLst(String keyword, String teacherId, Integer pageSize, Integer pageNum, Integer pageType) { @@ -148,7 +150,7 @@ hql.append(" and c.endTime < sysdate() "); } // System.out.println("vvvvv"+ClientUtils.getOrgId()+"333333333"+ClientUtils.getUserId()); - List<Object> args = CollectionUtils.newList(ClientUtils.getOrgId(),keyword_ + "%","40288a1261d106ba0161d1072e260000"); + List<Object> args = CollectionUtils.newList(ClientUtils.getOrgId(),keyword_ + "%",ClientUtils.getUserId()); // System.out.println(args); if (!StringUtils.isEmpty(teacherId)) { hql.append(" and exists( select 1 from ClsClassReSubject r,Subject t where r.subjectId=t.subjectId and c.classId= r.classId and t.teacherId=? and r.deleteFlag is false and t.deleteFlag is false)"); @@ -168,13 +170,13 @@ if (pageType == 1) { hql.append(" and c.endTime >= sysdate() "); }else if(pageType == 2) { - hql.append(" and c.endTime < sysdate() "); + hql.append(" and c.endTime < sysdate() "); } List<Object> args = CollectionUtils.newList(ClientUtils.getOrgId(),keyword + "%"); if (!StringUtils.isEmpty(teacherId)) { - hql.append(" and exists( select 1 from ClsClassReSubject r,Subject t where r.subjectId=t.subjectId and c.classId= r.classId and t.teacherId=? and r.deleteFlag is false and t.deleteFlag is false)"); + hql.append(" and exists( select 1 from ClsClassReSubject r,Subject t where r.subjectId=t.subjectId and c.classId= r.classId and t.teacherId=? and r.deleteFlag is false and t.deleteFlag is false)"); args.add(teacherId); } @@ -186,6 +188,8 @@ String hql = "select c from ClsClass c,StuStudent s where c.classId=s.classId and s.userId=? and s.status=?"; + System.out.println(ClientUtils.getUserId()); + List<ClsClass> result = find(hql, CollectionUtils.newList(ClientUtils.getUserId(), StuStudent.STATUS_ACTIVE), ClsClass.class); @@ -193,15 +197,15 @@ } /** - * 删除班级 + * 鍒犻櫎鐝骇 */ @Override public Result deleteClass(String[] classIds) { for (String classId : classIds) { deleteClass(classId); - //删除班级学员 + //鍒犻櫎鐝骇瀛﹀憳 this.deleteStudent(classId); - //删除班级课程 + //鍒犻櫎鐝骇璇剧▼ this.deleteClassSubject(classId); } @@ -209,21 +213,21 @@ } /** - * 删除班级学员 + * 鍒犻櫎鐝骇瀛﹀憳 */ private void deleteStudent(String classId) { this.bulkUpdate("update StuStudent set deleteFlag = 1 where classId = ?", new Object[] {classId}); } /** - * 删除班级课程 + * 鍒犻櫎鐝骇璇剧▼ */ private void deleteClassSubject(String classId) { this.bulkUpdate("delete from ClsClassReSubject where classId=?", new Object[] {classId}); } /** - * @param classId 班级id + * @param classId 鐝骇id * @return */ private Result deleteClass(String classId) { @@ -240,6 +244,27 @@ @Override public List<Map<String, Object>> getSubjectLstByClsId(String classId) { + String hql = "from MySubjectV where classId = ?"; + List<MySubjectV> mySubjectVList = find(hql,CollectionUtils.newList(classId),MySubjectV.class); + List<Map<String,Object>> maps = new ArrayList<>(); + for(MySubjectV mySubjectV : mySubjectVList){ + List<MyLectureV> myLectureVList = lectureService.listLectureVBySubjectId(mySubjectV.getId().getUserId(),mySubjectV.getId().getSubjectId(), "", 1000, 1, null); + Double percent = 0.0; + Double progressValue = 0.0; + Double percentAvg = 0.0; + if(!myLectureVList.isEmpty()) { + for (MyLectureV myLectureV : myLectureVList) { + if (myLectureV.getPercent() != null && myLectureV.getProgressValue() != null) { + percent += myLectureV.getPercent(); + progressValue += myLectureV.getProgressValue().intValue(); + } + } + percentAvg = percent / myLectureVList.size(); + if (percentAvg.isNaN()) { + percentAvg = 0.0; + } + } + } return null; } @@ -291,138 +316,138 @@ @Override public List<Map<String,Object>> queryAvailableClassIdAndName(String teacherId,String subjectId) { - StringBuffer hql = new StringBuffer(1000); - // and c.endTime>=sysdate() 增加条件过滤掉历史班级 - hql.append("select c.classId as classId ,c.name as className from ClsClass c where c.deleteFlag is false and c.orgId=:orgId and c.createId=:createId " ); - Map<String,Object> queryParam = new HashMap<String,Object>(); - queryParam.put("orgId", ClientUtils.getOrgId()); - queryParam.put("createId", ClientUtils.getUserId()); + StringBuffer hql = new StringBuffer(1000); + // and c.endTime>=sysdate() 澧炲姞鏉′欢杩囨护鎺夊巻鍙茬彮绾� + hql.append("select c.classId as classId ,c.name as className from ClsClass c where c.deleteFlag is false and c.orgId=:orgId and c.createId=:createId " ); + Map<String,Object> queryParam = new HashMap<String,Object>(); + queryParam.put("orgId", ClientUtils.getOrgId()); + queryParam.put("createId", ClientUtils.getUserId()); - if(StringUtils.isNotEmpty(teacherId)||StringUtils.isNotEmpty(subjectId)){ - hql.append(" and exists (select 1 from ClsClassReSubject r ,Subject s where r.subjectId=s.subjectId and r.classId =c.classId and r.deleteFlag is false "); - } + if(StringUtils.isNotEmpty(teacherId)||StringUtils.isNotEmpty(subjectId)){ + hql.append(" and exists (select 1 from ClsClassReSubject r ,Subject s where r.subjectId=s.subjectId and r.classId =c.classId and r.deleteFlag is false "); + } - if(!StringUtils.isEmpty(teacherId)){ - hql.append(" and s.teacherId=:teacherId "); - queryParam.put("teacherId", teacherId); - } + if(!StringUtils.isEmpty(teacherId)){ + hql.append(" and s.teacherId=:teacherId "); + queryParam.put("teacherId", teacherId); + } - if(!StringUtils.isEmpty(subjectId)){ - hql.append(" and s.origSubjectId=:subjectId "); - queryParam.put("subjectId", subjectId); - } + if(!StringUtils.isEmpty(subjectId)){ + hql.append(" and s.origSubjectId=:subjectId "); + queryParam.put("subjectId", subjectId); + } - if(StringUtils.isNotEmpty(teacherId)||StringUtils.isNotEmpty(subjectId)){ - hql.append(")"); - } + if(StringUtils.isNotEmpty(teacherId)||StringUtils.isNotEmpty(subjectId)){ + hql.append(")"); + } - return this.findListWithMapByHql(hql.toString(), queryParam); + return this.findListWithMapByHql(hql.toString(), queryParam); } - @Override + @Override public List<Map<String,Object>> queryAllClassIdAndName() { - StringBuffer hql = new StringBuffer(500); + StringBuffer hql = new StringBuffer(500); // c.deleteFlag is false and hql.append("select c.classId as classId ,c.name as className from ClsClass c where c.endTime>=:endTime and c.orgId=:orgId " ); - return this.findListWithMapByHql(hql.toString(), CollectionUtils.newObjectMap("endTime",new Date(),"orgId",ClientUtils.getOrgId())); + return this.findListWithMapByHql(hql.toString(), CollectionUtils.newObjectMap("endTime",new Date(),"orgId",ClientUtils.getOrgId())); } - /** - * 查询班级 - * - * type 1正常班級,2历史班級 - */ - public Result classList(String keyword, Pager pager, int type) { - //获取老师id - String teacherId = teacherService.getTeacherIdByUserId(ClientUtils.getUserId()); - if (StringUtils.isEmpty(teacherId)) { - return new Result(false, "非老师角色无法查看班级"); - } - QClsClass qClsClass = QClsClass.clsClass; - QSubject qSubject = QSubject.subject; - QClsClassReSubject qClsClassReSubject = QClsClassReSubject.clsClassReSubject; - QSubjectProgressTreeV qSubjectProgressTreeV = QSubjectProgressTreeV.subjectProgressTreeV; + /** + * 鏌ヨ鐝骇 + * + * type 1姝e父鐝礆锛�2鍘嗗彶鐝礆 + */ + public Result classList(String keyword, Pager pager, int type) { + //鑾峰彇鑰佸笀id + String teacherId = teacherService.getTeacherIdByUserId(ClientUtils.getUserId()); + if (StringUtils.isEmpty(teacherId)) { + return new Result(false, "闈炶�佸笀瑙掕壊鏃犳硶鏌ョ湅鐝骇"); + } + QClsClass qClsClass = QClsClass.clsClass; + QSubject qSubject = QSubject.subject; + QClsClassReSubject qClsClassReSubject = QClsClassReSubject.clsClassReSubject; + QSubjectProgressTreeV qSubjectProgressTreeV = QSubjectProgressTreeV.subjectProgressTreeV; - //查询脚本 - JPAQuery<Tuple> queryDsl = this.getQueryFactory() - .select(qClsClass.name, qClsClass.classId, qClsClass.classNumber, qClsClass.studentCount, - qClsClass.createTime, qClsClass.startTime, qClsClass.endTime, qSubject) - .from(qClsClass, qSubject, qClsClassReSubject) - .where(qClsClass.deleteFlag.isFalse().and((type == 2 ? qClsClass.endTime.lt(new Date()) : qClsClass.endTime.gt(new Date()))).and(qClsClass.name.like("%" + keyword + "%")) - .and(qSubject.teacherId.eq(teacherId)).and(qSubject.deleteFlag.isFalse()) - .and(qClsClassReSubject.deleteFlag.isFalse()) - .and(qClsClassReSubject.classId.eq(qClsClass.classId)) - .and(qClsClassReSubject.subjectId.eq(qSubject.subjectId))) - .groupBy(qClsClass.classId); + //鏌ヨ鑴氭湰 + JPAQuery<Tuple> queryDsl = this.getQueryFactory() + .select(qClsClass.name, qClsClass.classId, qClsClass.classNumber, qClsClass.studentCount, + qClsClass.createTime, qClsClass.startTime, qClsClass.endTime, qSubject) + .from(qClsClass, qSubject, qClsClassReSubject) + .where(qClsClass.deleteFlag.isFalse().and((type == 2 ? qClsClass.endTime.lt(new Date()) : qClsClass.endTime.gt(new Date()))).and(qClsClass.name.like("%" + keyword + "%")) + .and(qSubject.teacherId.eq(teacherId)).and(qSubject.deleteFlag.isFalse()) + .and(qClsClassReSubject.deleteFlag.isFalse()) + .and(qClsClassReSubject.classId.eq(qClsClass.classId)) + .and(qClsClassReSubject.subjectId.eq(qSubject.subjectId))) + .groupBy(qClsClass.classId); - //总数 - long count = queryDsl.fetchCount(); + //鎬绘暟 + long count = queryDsl.fetchCount(); - //listData - List<Map<String, Object>> listData = queryDsl.limit(pager.getPageSize()).offset(pager.getOffset()) - .orderBy(qClsClass.createTime.desc(), qSubject.createTime.desc()).fetch().stream().map(tuple -> { - Map<String, Object> map = new HashMap<String, Object>(); - Subject subject = tuple.get(qSubject); + //listData + List<Map<String, Object>> listData = queryDsl.limit(pager.getPageSize()).offset(pager.getOffset()) + .orderBy(qClsClass.createTime.desc(), qSubject.createTime.desc()).fetch().stream().map(tuple -> { + Map<String, Object> map = new HashMap<String, Object>(); + Subject subject = tuple.get(qSubject); - map.put("className", tuple.get(qClsClass.name)); - map.put("classId", tuple.get(qClsClass.classId)); - map.put("classNumber", tuple.get(qClsClass.classNumber)); - map.put("studentCount", tuple.get(qClsClass.studentCount)); - map.put("createTime", tuple.get(qClsClass.createTime)); - map.put("startTime", tuple.get(qClsClass.startTime)); - map.put("endTime", tuple.get(qClsClass.endTime)); - if (subject != null) { - map.put("subjectName", subject.getName()); - map.put("progressPercent", - this.getQueryFactory().select(qSubjectProgressTreeV.percent.avg()) - .from(qSubjectProgressTreeV) - .where(qSubjectProgressTreeV.id.nodeId.eq(subject.getSubjectId()) - .and(qSubjectProgressTreeV.nodeType.eq(Progress.PROGRESS_TYPE_SUBJECT))) - .groupBy(qSubjectProgressTreeV.id.nodeId).fetchOne()); - } else { - map.put("subjectName", "暂无开班课程"); - map.put("progressPercent", 0); - } - return map; - }).collect(Collectors.toList()); + map.put("className", tuple.get(qClsClass.name)); + map.put("classId", tuple.get(qClsClass.classId)); + map.put("classNumber", tuple.get(qClsClass.classNumber)); + map.put("studentCount", tuple.get(qClsClass.studentCount)); + map.put("createTime", tuple.get(qClsClass.createTime)); + map.put("startTime", tuple.get(qClsClass.startTime)); + map.put("endTime", tuple.get(qClsClass.endTime)); + if (subject != null) { + map.put("subjectName", subject.getName()); + map.put("progressPercent", + this.getQueryFactory().select(qSubjectProgressTreeV.percent.avg()) + .from(qSubjectProgressTreeV) + .where(qSubjectProgressTreeV.id.nodeId.eq(subject.getSubjectId()) + .and(qSubjectProgressTreeV.nodeType.eq(Progress.PROGRESS_TYPE_SUBJECT))) + .groupBy(qSubjectProgressTreeV.id.nodeId).fetchOne()); + } else { + map.put("subjectName", "鏆傛棤寮�鐝绋�"); + map.put("progressPercent", 0); + } + return map; + }).collect(Collectors.toList()); - return new Result(true, "success", CollectionUtils.newObjectMap("count", count, "listData", listData)); - } + return new Result(true, "success", CollectionUtils.newObjectMap("count", count, "listData", listData)); + } @Override public String [] queryClassNamesByIds(String[] classIds){ - if(classIds!=null && classIds.length==0){ - return null; - } + if(classIds!=null && classIds.length==0){ + return null; + } - String [] classNames = null; + String [] classNames = null; - List<Map<String,Object>> lstResult= this.findListWithMapByHql("select c.classId as classId ,c.name as className from ClsClass c where c.classId in (:classIds) ", - CollectionUtils.newObjectMap("classIds",classIds)); + List<Map<String,Object>> lstResult= this.findListWithMapByHql("select c.classId as classId ,c.name as className from ClsClass c where c.classId in (:classIds) ", + CollectionUtils.newObjectMap("classIds",classIds)); - if(lstResult!=null && lstResult.size()==classIds.length){ - Map<String,String> map= new HashMap<String,String>(lstResult.size()); - classNames =new String [classIds.length]; + if(lstResult!=null && lstResult.size()==classIds.length){ + Map<String,String> map= new HashMap<String,String>(lstResult.size()); + classNames =new String [classIds.length]; - for(Map<String,Object> item:lstResult){ - map.put((String)item.get("classId"), (String)item.get("className")); - } + for(Map<String,Object> item:lstResult){ + map.put((String)item.get("classId"), (String)item.get("className")); + } - for(int i=0;i<classIds.length;i++){ - classNames[i]= map.get(classIds[i]); - } - } + for(int i=0;i<classIds.length;i++){ + classNames[i]= map.get(classIds[i]); + } + } - return classNames; + return classNames; } @Override public List<ClsClass> queryStudentClassesByUserId(String userId) { - return this.find("from ClsClass c where c.deleteFlag is false and exists( select 1 from StuStudent t where t.classId = c.classId and t.userId=? and t.status=? ) ", - CollectionUtils.newList(userId,StuStudent.STATUS_ACTIVE),ClsClass.class); + return this.find("from ClsClass c where c.deleteFlag is false and exists( select 1 from StuStudent t where t.classId = c.classId and t.userId=? and t.status=? ) ", + CollectionUtils.newList(userId,StuStudent.STATUS_ACTIVE),ClsClass.class); } -- Gitblit v1.8.0