提交修改

This commit is contained in:
daihh
2022-11-01 17:09:23 +08:00
parent 62ef4a398f
commit 913c1740e9

View File

@@ -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.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());
List<Object[]> clist= studyCourseDao.findListFields(courseHql,studyCourseQuery.getIds());
List<Object[]> slist= studyCourseDao.findListFields(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(sobjs[2]));
sc.setAid(ConvertUtil.toStr(sobjs[3]));
for(Object[] cobjs : clist) {
String cid=ConvertUtil.toStr(cobjs[0]);
if(cid!=null && cid.equals(sc.getCourseId())) {
sc.setCourseImage(ConvertUtil.toStr(cobjs[1]));
sc.setLastScore(ConvertUtil.toFloat(cobjs[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