优化排课列表加载速度

beetlsql3-dev
Mlxa0324 2 years ago
parent 1bac63c38a
commit c5723cdd7d

@ -146,10 +146,10 @@ public class TeacherOpenCourseScheduleSession extends BaseEntity{
private Long userId ;
@FetchSql("select t.* from teacher_open_course_schedule_session_snap t where t.teacher_open_course_schedule_session_snap_status = 1 " +
" and t.teacher_open_course_schedule_session_id = #teacherOpenCourseScheduleSessionId# " +
"and t.teacher_open_course_schedule_session_snap_status = 1 " +
"order by t.teacher_open_course_schedule_session_day_time asc " )
// @FetchSql("select t.* from teacher_open_course_schedule_session_snap t where t.teacher_open_course_schedule_session_snap_status = 1 " +
// " and t.teacher_open_course_schedule_session_id = #teacherOpenCourseScheduleSessionId# " +
// "and t.teacher_open_course_schedule_session_snap_status = 1 " +
// "order by t.teacher_open_course_schedule_session_day_time asc " )
@UpdateIgnore
@InsertIgnore
@DictDeep

@ -597,7 +597,7 @@ public class TeacherOpenCourseScheduleSessionService extends CoreBaseService<Tea
new DateRange(o.getFirstStartTime(), o.getFirstEndTime(), HOUR_OF_DAY),
new DateRange(o.getSecondStartTime(), o.getSecondEndTime(), HOUR_OF_DAY));
Assert.notEmpty(containsList, "无法正常排课,课次名称:[{}],{}] 时间有重叠部分!", o.getFirstTagName(), o.getSecondTagName());
Assert.notEmpty(containsList, "无法正常排课,课次名称:【{},{}】 时间有重叠部分!", o.getFirstTagName(), o.getSecondTagName());
});
// 取出来上午的时间,判断课次之间的断课情况
@ -610,7 +610,7 @@ public class TeacherOpenCourseScheduleSessionService extends CoreBaseService<Tea
// 上午6点到12点之间的每节课之间间隔不允许超过30分钟来判断是否有断课
long betweenMinutes = o.getFirstEndTime().between(o.getSecondStartTime(), DateUnit.MINUTE);
Assert.isTrue(betweenMinutes < intervalTimeMinutes,
"无法正常排课,课次名称:[{}],{}] 不是连续的课次上午每节课间隔不超过30分钟", o.getFirstTagName(), o.getSecondTagName());
"无法正常排课,课次名称:【{},{}】 不是连续的课次上午每节课间隔不超过30分钟", o.getFirstTagName(), o.getSecondTagName());
});
// 取出来下午的时间,判断课次之间的断课情况
@ -623,7 +623,7 @@ public class TeacherOpenCourseScheduleSessionService extends CoreBaseService<Tea
// 上午6点到12点之间的每节课之间间隔不允许超过30分钟来判断是否有断课
long betweenMinutes = o.getFirstEndTime().between(o.getSecondStartTime(), DateUnit.MINUTE);
Assert.isTrue(betweenMinutes < intervalTimeMinutes,
"无法正常排课,课次名称:[{}],{}] 不是连续的课次下午每节课间隔不超过30分钟", o.getFirstTagName(), o.getSecondTagName());
"无法正常排课,课次名称:【{},{}】 不是连续的课次下午每节课间隔不超过30分钟", o.getFirstTagName(), o.getSecondTagName());
});
}
@ -649,7 +649,7 @@ public class TeacherOpenCourseScheduleSessionService extends CoreBaseService<Tea
return dateTimes;
}).collect(Collectors.joining("|"));
Assert.isTrue(result.isEmpty(), "无法正常排课,详情:[{}],时间区间有重叠的部分!", errorMessage);
Assert.isTrue(result.isEmpty(), "无法正常排课,详情:【{}】,时间区间有重叠的部分!", errorMessage);
}
/**

@ -1,5 +1,6 @@
package com.ibeetl.jlw.service;
import cn.hutool.core.util.StrUtil;
import cn.jlw.util.ToolUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
@ -8,6 +9,7 @@ import com.ibeetl.admin.core.util.PlatformException;
import com.ibeetl.admin.core.web.JsonResult;
import com.ibeetl.admin.core.web.JsonReturnCode;
import com.ibeetl.jlw.dao.TeacherOpenCourseScheduleSessionSnapDao;
import com.ibeetl.jlw.entity.TeacherOpenCourseScheduleSession;
import com.ibeetl.jlw.entity.TeacherOpenCourseScheduleSessionSnap;
import com.ibeetl.jlw.web.query.TeacherOpenCourseScheduleSessionSnapQuery;
import lombok.extern.slf4j.Slf4j;
@ -19,8 +21,10 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
import static com.ibeetl.admin.core.util.StreamUtils.listJoin;
import static java.util.stream.Collectors.groupingBy;
/**
* Service
@ -162,4 +166,30 @@ public class TeacherOpenCourseScheduleSessionSnapService extends CoreBaseService
log.info("需要实现删除操作!");
}
/**
*
* {@link TeacherOpenCourseScheduleSession#setSessionTagList}
* @param list
*/
public void fullSessionTagList(List<TeacherOpenCourseScheduleSession> list) {
String scheduleSessionIds = listJoin(list, TeacherOpenCourseScheduleSession::getTeacherOpenCourseScheduleSessionId);
if (StrUtil.isNotBlank(scheduleSessionIds)) {
TeacherOpenCourseScheduleSessionSnapQuery query = new TeacherOpenCourseScheduleSessionSnapQuery();
query.setTeacherOpenCourseScheduleSessionSnapStatus(1);
query.setTeacherOpenCourseScheduleSessionIdPlural(scheduleSessionIds);
List<TeacherOpenCourseScheduleSessionSnap> snapList = getValuesByQuery(query);
// 根据排课ID分组
Map<Long, List<TeacherOpenCourseScheduleSessionSnap>> groupSortedMap = snapList.stream()
.sorted(Comparator.comparing(TeacherOpenCourseScheduleSessionSnap::getTeacherOpenCourseScheduleSessionDayTime))
.collect(groupingBy(TeacherOpenCourseScheduleSessionSnap::getTeacherOpenCourseScheduleSessionId));
list.forEach(item -> {
final Long scheduleSessionId = item.getTeacherOpenCourseScheduleSessionId();
List<TeacherOpenCourseScheduleSessionSnap> listOrDefault = groupSortedMap.getOrDefault(scheduleSessionId, Collections.emptyList());
item.setSessionTagList(listOrDefault);
});
}
}
}

@ -12,10 +12,7 @@ import com.ibeetl.jlw.entity.Teacher;
import com.ibeetl.jlw.entity.TeacherOpenCourseScheduleSession;
import com.ibeetl.jlw.entity.TeacherOpenCourseScheduleSessionClass;
import com.ibeetl.jlw.entity.TeacherOpenCourseScheduleSessionOptions;
import com.ibeetl.jlw.service.TeacherOpenCourseScheduleSessionClassService;
import com.ibeetl.jlw.service.TeacherOpenCourseScheduleSessionService;
import com.ibeetl.jlw.service.TeacherOpenCourseScheduleSessionTagService;
import com.ibeetl.jlw.service.TeacherOpenCourseService;
import com.ibeetl.jlw.service.*;
import com.ibeetl.jlw.web.query.TeacherOpenCourseQuery;
import com.ibeetl.jlw.web.query.TeacherOpenCourseScheduleSessionClassQuery;
import com.ibeetl.jlw.web.query.TeacherOpenCourseScheduleSessionQuery;
@ -53,6 +50,7 @@ public class TeacherOpenCourseScheduleSessionController{
@Autowired private TeacherOpenCourseScheduleSessionService teacherOpenCourseScheduleSessionService;
@Autowired private TeacherOpenCourseScheduleSessionTagService teacherOpenCourseScheduleSessionTagService;
@Autowired private TeacherOpenCourseScheduleSessionClassService teacherOpenCourseScheduleSessionClassService;
@Autowired private TeacherOpenCourseScheduleSessionSnapService teacherOpenCourseScheduleSessionSnapService;
@Autowired private TeacherOpenCourseService teacherOpenCourseService;
@Autowired
@ -71,6 +69,7 @@ public class TeacherOpenCourseScheduleSessionController{
}
PageQuery page = condition.getPageQuery();
teacherOpenCourseScheduleSessionService.queryByConditionQuery(page);
teacherOpenCourseScheduleSessionSnapService.fullSessionTagList(page.getList());
return JsonResult.success(page);
}
}
@ -98,6 +97,7 @@ public class TeacherOpenCourseScheduleSessionController{
condition.setOrgId(coreUser.getOrgId());
}
List<TeacherOpenCourseScheduleSession>list = teacherOpenCourseScheduleSessionService.getValuesByQuery(condition);
teacherOpenCourseScheduleSessionSnapService.fullSessionTagList(list);
return JsonResult.success(list);
}
}
@ -201,6 +201,7 @@ public class TeacherOpenCourseScheduleSessionController{
}
PageQuery page = condition.getPageQuery();
teacherOpenCourseScheduleSessionService.queryByConditionGroup(page);
teacherOpenCourseScheduleSessionSnapService.fullSessionTagList(page.getList());
return JsonResult.success(page);
}
@ -216,6 +217,7 @@ public class TeacherOpenCourseScheduleSessionController{
}
PageQuery page = condition.getPageQuery();
teacherOpenCourseScheduleSessionService.queryByCondition(page);
teacherOpenCourseScheduleSessionSnapService.fullSessionTagList(page.getList());
return JsonResult.success(page);
}
@ -302,6 +304,7 @@ public class TeacherOpenCourseScheduleSessionController{
condition.setOrgId(coreUser.getOrgId());
}
List<TeacherOpenCourseScheduleSession>list = teacherOpenCourseScheduleSessionService.getValuesByQuery(condition);
teacherOpenCourseScheduleSessionSnapService.fullSessionTagList(list);
return JsonResult.success(list);
}
@ -366,6 +369,7 @@ public class TeacherOpenCourseScheduleSessionController{
condition.setOrgId(coreUser.getOrgId());
}
teacherOpenCourseScheduleSessionService.queryByConditionGroup(page);
teacherOpenCourseScheduleSessionSnapService.fullSessionTagList(page.getList());
return JsonResult.success(page);
}
}

Loading…
Cancel
Save