@@ -281,98 +281,134 @@ public class StudyCourseServiceImpl implements IStudyCourseService{
@Override
public List < StudyCourse > ids ( StudyCourseQuery studyCourseQuery ) {
// List<StudyCouseDto> studyCouseDtos = new ArrayList<>();
// QueryBuilder builder = QueryBuilder.from(StudyCourse.class.getSimpleName()+" sc,"+ Course.class.getSimpleName()+" c");
// builder.addFilter(FieldFilters.eqField("sc.courseId","c.id")) ;
//// builder.addFilter(FieldFilters.eq("c.enabled",true)) ;
//// builder.addFilter(FieldFilters.eq("c.deleted",false));
// builder.addFilter(FieldFilters.eq("sc.aid",studyCourseQuery.getAid())) ;
// builder.addFilter(FieldFilters.in("sc.courseId",studyCourseQuery.getIds()));
// builder.addOrder(OrderCondition.desc("sc.lastTime"));
// builder.addFields("sc");
// builder.addFields("c.score");
// builder.addFields("c.coverImg");
StringBuilder str = new StringBuilder ( ) ;
if ( ! studyCourseQuery . getIds ( ) . isEmpty ( ) ) {
for ( String id : studyCourseQuery . getIds ( ) ) {
str . append ( " ' " ) ;
str . append ( id ) ;
str . append ( " ' " ) ;
str . append ( " , " ) ;
}
}
if ( StringUtils . isNotBlank ( str ) ) {
str . deleteCharAt ( str . 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=' " + studyCourseQuery . getAid ( ) + " ' and sc.course_id in ( " + str + " ) order by sc.last_time " ;
//List<StudyCourse> list = studyCourseDao.findList(builder.builder());
List < StudyCourse > rs = new ArrayList < StudyCourse > ( ) ;
Set < String > checkSet = new HashSet < String > ( ) ;
//分两次查询,查询课程,查询学习记录
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=?1 and courseId in(?2) " ;
List < StudyCourse > rs = new ArrayList < > ( ) ;
try {
// List< Object[]> list= studyCourseDao. findListFields(builder.builder()) ;
List < Object [ ] > list = studyCourseDao . sqlF indList( sql ) ;
for ( Object [ ] objs : list ) {
// System.out.println(objs[0].getClass());
// 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 . s etAid ( ( 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 ( ) ) ;
List< Object[ ] > clist = studyCourseDao. findListFields( courseHql , studyCourseQuery . getIds ( ) ) ;
List < Object [ ] > s list= studyCourseDao . f indListFields ( studyHql , studyCourseQuery . getAid ( ) , studyCourseQuery . getIds ( ) ) ;
//数据数量一般不会太多, 不超过20条, 所以直接使用嵌套循环
for ( Object [ ] sobjs : slist ) {
StudyCourse sc = new StudyCourse( ) ;
sc . setCourseId ( ConvertUtil . toStr ( sobjs [ 0 ] ) ) ;
sc . setAddTime ( ( LocalDateTime ) sobjs [ 1 ] ) ;
sc . setProgress ( ConvertUtil . toFloat ( s objs [ 2 ] ) ) ;
sc . setAid ( ConvertUtil . toStr ( s objs[ 3 ] ) ) ;
for ( Object [ ] c objs : clist ) {
String cid = ConvertUtil . toStr ( c objs[ 0 ] ) ;
if ( cid ! = null & & cid . equals ( sc . g etCourseId ( ) ) ) {
sc . setCourseImage ( ConvertUtil . toStr ( c objs[ 1 ] ) ) ;
sc . setLastScore ( ConvertUtil . toFloat ( c objs[ 2 ] ) ) ; //课程分数,使用此值来承载
break ;
}
}
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 ( ) ) ;
if ( sc . getProgress ( ) = = null ) {
sc . setProgress ( 0f ) ;
}
rs . add ( sc ) ;
}
return rs ;
} catch ( Exception e ) {
} catch ( Exception e ) {
log . error ( " 查询错误 " , e ) ;
e . printStackTrace ( ) ;
log . error ( " " , e ) ;
}
return rs ;
//// List<StudyCouseDto> studyCouseDtos = new ArrayList<>();
//// QueryBuilder builder = QueryBuilder.from(StudyCourse.class.getSimpleName()+" sc,"+ Course.class.getSimpleName()+" c");
//// builder.addFilter(FieldFilters.eqField("sc.courseId","c.id"));
////// builder.addFilter(FieldFilters.eq("c.enabled",true));
////// builder.addFilter(FieldFilters.eq("c.deleted",false));
//// builder.addFilter(FieldFilters.eq("sc.aid",studyCourseQuery.getAid()));
//// builder.addFilter(FieldFilters.in("sc.courseId",studyCourseQuery.getIds()));
//// builder.addOrder(OrderCondition.desc("sc.lastTime"));
//// builder.addFields("sc");
//// builder.addFields("c.score");
//// builder.addFields("c.coverImg");
//
// StringBuilder str=new StringBuilder();
// if(!studyCourseQuery.getIds().isEmpty()){
// for (String id:studyCourseQuery.getIds()){
// str.append("'");
// str.append(id);
// str.append("'");
// str.append(",");
//
// }
// }
// if(StringUtils.isNotBlank(str)){
// str.deleteCharAt(str.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='"+studyCourseQuery.getAid()+"' and sc.course_id in ("+str+") order by sc.last_time";
//
//
// //List<StudyCourse> list = studyCourseDao.findList(builder.builder());
// List<StudyCourse> rs=new ArrayList<StudyCourse>();
// Set<String> checkSet=new HashSet<String>();
// try {
//// List<Object[]> list= studyCourseDao.findListFields(builder.builder());
// List<Object[]> list = studyCourseDao.sqlFindList(sql);
// for(Object[] objs:list) {
//// System.out.println(objs[0].getClass());
//// 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){
// e.printStackTrace();
// log.error("",e);
// }
// return rs;
}
@Override