diff --git a/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyCourseServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyCourseServiceImpl.java index d4729cd5..11297424 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyCourseServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyCourseServiceImpl.java @@ -23,6 +23,7 @@ import com.xboe.core.orm.FieldFilters; import com.xboe.core.orm.FieldUpdateType; import com.xboe.core.orm.QueryBuilder; import com.xboe.core.orm.UpdateBuilder; +import com.xboe.core.utils.ConvertUtil; import com.xboe.module.course.dao.CourseContentDao; import com.xboe.module.course.dao.CourseDao; import com.xboe.module.course.entity.Course; @@ -382,6 +383,41 @@ public class StudyCourseServiceImpl implements IStudyCourseService{ @Override public List followids(StudyCourseQuery studyCourseQuery) { + //分两次查询,查询课程,查询学习记录 + String courseHql="Select id,coverImg,score from "+Course.class.getSimpleName()+" where id in(?1)"; + String studyHql="Select courseId,addTime,progress,aid from "+StudyCourse.class.getSimpleName()+" where aid in(?1) and courseId in(?2)"; + + List rs=new ArrayList<>(); + try { + List clist= studyCourseDao.findListFields(courseHql,studyCourseQuery.getIds()); + List slist= studyCourseDao.findListFields(studyHql,studyCourseQuery.getAids(),studyCourseQuery.getIds()); + //数据数量一般不会太多,不超过20条,所以直接使用嵌套循环 + for(Object[] cobjs : clist) { + StudyCourse sc=new StudyCourse(); + sc.setCourseId(ConvertUtil.toStr(cobjs[0])); + sc.setCourseImage(ConvertUtil.toStr(cobjs[1])); + sc.setLastScore(ConvertUtil.toFloat(cobjs[2]));//课程分数,使用此值来承载 + for(Object[] sobjs : slist) { + String cid=ConvertUtil.toStr(sobjs[0]); + if(cid!=null && cid.equals(sc.getCourseId())) { + sc.setAddTime((LocalDateTime)sobjs[1]); + sc.setProgress(ConvertUtil.toFloat(sobjs[2])); + sc.setAid(ConvertUtil.toStr(sobjs[3])); + } + } + if(sc.getProgress()==null) { + sc.setProgress(0f); + } + rs.add(sc); + + } + }catch(Exception e) { + log.error("查询错误",e); + e.printStackTrace(); + } + + return rs; + //当前先这样查询,以后要修改,只查询需要的字段,另外 ,需要按课程分组,不然一门课程会查出很多记录出来 // QueryBuilder builder = QueryBuilder.from(StudyCourse.class.getSimpleName()+" sc,"+ Course.class.getSimpleName()+" c"); // builder.addFilter(FieldFilters.eqField("sc.courseId","c.id")); @@ -394,95 +430,100 @@ public class StudyCourseServiceImpl implements IStudyCourseService{ // builder.addFields("c.score"); // builder.addFields("c.coverImg"); //List list = studyCourseDao.findList(builder.builder()); - StringBuilder str=new StringBuilder(); - if(!studyCourseQuery.getIds().isEmpty()){ - for (String id:studyCourseQuery.getAids()){ - //str.append("'"); - str.append(id); - //str.append("'"); - str.append(","); - - } - } - if(StringUtils.isNotBlank(str)){ - str.deleteCharAt(str.length()-1); - } - - StringBuilder str1=new StringBuilder(); - if(!studyCourseQuery.getAids().isEmpty()){ - for (String id:studyCourseQuery.getIds()){ - //str1.append("'"); - str1.append(id); - //str1.append("'"); - str1.append(","); - - } - } - if(StringUtils.isNotBlank(str)){ - str1.deleteCharAt(str1.length()-1); - } - - String sql="select sc.id,sc.course_id,sc.course_type,sc.course_name,sc.aid,sc.aname,sc.source,sc.add_time,sc.start_time,sc.finish_time,sc.progress," + - "sc.total_duration,sc.last_score,sc.status,sc.status_time,sc.last_time," + - "c.score,c.cover_img from boe_course as c left join boe_study_course as sc on sc.course_id=c.id where " + - "sc.aid in("+str+") and sc.course_id in ("+str1+") order by sc.last_time"; - - List rs=new ArrayList(); - Set checkSet=new HashSet(); - try { -// List list= studyCourseDao.findListFields(builder.builder()); - List list = studyCourseDao.sqlFindList(sql); - for(Object[] objs:list) { -// StudyCourse sc=(StudyCourse)objs[0]; - StudyCourse studyCourse = new StudyCourse(); - - studyCourse.setId(String.valueOf((BigInteger) objs[0])); - studyCourse.setCourseId((String) objs[1]); - studyCourse.setCourseType((Integer) objs[2]); - studyCourse.setCourseName((String) objs[3]); - studyCourse.setAid((String) objs[4]); - studyCourse.setAname((String) objs[5]); - studyCourse.setSource((Integer) objs[6]); - if(objs[7]!=null) { - Timestamp timestamp = (Timestamp) objs[7]; - - studyCourse.setAddTime(timestamp.toLocalDateTime()); - } - if(objs[8]!=null){ - Timestamp timestamp1 = (Timestamp) objs[8]; - studyCourse.setStartTime(timestamp1.toLocalDateTime()); - } - if(objs[9]!=null){ - Timestamp timestamp2 = (Timestamp) objs[9]; - studyCourse.setFinishTime(timestamp2.toLocalDateTime()); - } - - studyCourse.setProgress((Float) objs[10]); - studyCourse.setTotalDuration((Integer) objs[11]); -// studyCourse.setLastScore((Float) objs[12]); - studyCourse.setStatus((Integer) objs[13]); - if(objs[14]!=null){ - Timestamp timestamp3 = (Timestamp) objs[14]; - studyCourse.setStatusTime(timestamp3.toLocalDateTime()); - } - if(objs[15]!=null){ - Timestamp timestamp4 = (Timestamp) objs[15]; - studyCourse.setLastTime(timestamp4.toLocalDateTime()); - } - if(!checkSet.contains(studyCourse.getCourseId())) { - Float score=(Float)objs[16]; - String img=(String)objs[17]; - studyCourse.setLastScore(score); - studyCourse.setCourseImage(img); - rs.add(studyCourse); - checkSet.add(studyCourse.getCourseId()); - } - } - return rs; - }catch(Exception e){ - log.error("",e); - } - return rs; +// StringBuilder str=new StringBuilder(); +// if(!studyCourseQuery.getIds().isEmpty()){ +// for (String id:studyCourseQuery.getAids()){ +// //str.append("'"); +// str.append(id); +// //str.append("'"); +// str.append(","); +// +// } +// } +// if(StringUtils.isNotBlank(str)){ +// str.deleteCharAt(str.length()-1); +// } +// +// StringBuilder str1=new StringBuilder(); +// if(!studyCourseQuery.getAids().isEmpty()){ +// for (String id:studyCourseQuery.getIds()){ +// //str1.append("'"); +// str1.append(id); +// //str1.append("'"); +// str1.append(","); +// +// } +// } +// if(StringUtils.isNotBlank(str)){ +// str1.deleteCharAt(str1.length()-1); +// } +// +// String hql="select sc.id,sc.courseId,sc.courseType,sc.courseName,sc.aid,sc.aname,sc.source,sc.addTime,sc.startTime,sc.finishTime,sc.progress," + +// "sc.totalDuration,sc.lastScore,sc.status,sc.statusTime,sc.lastTime," + +// "c.score,c.coverImg from Course as c left join studyCourse sc where sc.courseId=c.id and " + +// "sc.aid in(?1) and sc.courseId in(?2) order by sc.lastTime"; +// +//// String sql="select sc.id,sc.course_id,sc.course_type,sc.course_name,sc.aid,sc.aname,sc.source,sc.add_time,sc.start_time,sc.finish_time,sc.progress," + +//// "sc.total_duration,sc.last_score,sc.status,sc.status_time,sc.last_time," + +//// "c.score,c.cover_img from boe_course as c left join boe_study_course as sc on sc.course_id=c.id where " + +//// "sc.aid in("+str+") and sc.course_id in ("+str1+") order by sc.last_time"; +// +// List rs=new ArrayList(); +// Set checkSet=new HashSet(); +// try { +//// List list= studyCourseDao.findListFields(builder.builder()); +// List list = studyCourseDao.sqlFindList(hql,studyCourseQuery.getAids(),studyCourseQuery.getIds()); +// for(Object[] objs:list) { +//// StudyCourse sc=(StudyCourse)objs[0]; +// StudyCourse studyCourse = new StudyCourse(); +// +// studyCourse.setId(String.valueOf((BigInteger) objs[0])); +// studyCourse.setCourseId((String) objs[1]); +// studyCourse.setCourseType((Integer) objs[2]); +// studyCourse.setCourseName((String) objs[3]); +// studyCourse.setAid((String) objs[4]); +// studyCourse.setAname((String) objs[5]); +// studyCourse.setSource((Integer) objs[6]); +// if(objs[7]!=null) { +// Timestamp timestamp = (Timestamp) objs[7]; +// +// studyCourse.setAddTime(timestamp.toLocalDateTime()); +// } +// if(objs[8]!=null){ +// Timestamp timestamp1 = (Timestamp) objs[8]; +// studyCourse.setStartTime(timestamp1.toLocalDateTime()); +// } +// if(objs[9]!=null){ +// Timestamp timestamp2 = (Timestamp) objs[9]; +// studyCourse.setFinishTime(timestamp2.toLocalDateTime()); +// } +// +// studyCourse.setProgress((Float) objs[10]); +// studyCourse.setTotalDuration((Integer) objs[11]); +//// studyCourse.setLastScore((Float) objs[12]); +// studyCourse.setStatus((Integer) objs[13]); +// if(objs[14]!=null){ +// Timestamp timestamp3 = (Timestamp) objs[14]; +// studyCourse.setStatusTime(timestamp3.toLocalDateTime()); +// } +// if(objs[15]!=null){ +// Timestamp timestamp4 = (Timestamp) objs[15]; +// studyCourse.setLastTime(timestamp4.toLocalDateTime()); +// } +// if(!checkSet.contains(studyCourse.getCourseId())) { +// Float score=(Float)objs[16]; +// String img=(String)objs[17]; +// studyCourse.setLastScore(score); +// studyCourse.setCourseImage(img); +// rs.add(studyCourse); +// checkSet.add(studyCourse.getCourseId()); +// } +// } +// return rs; +// }catch(Exception e){ +// log.error("",e); +// } +// return rs; } @Override