//1.查询条件 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq('admin_id', admin.getAdminId()); queryWrapper.orderByDesc('work_status'); queryWrapper.orderByAsc('real_name');

List coaches = coachMapper.selectList(queryWrapper); List coachList = new ArrayList<>();

if (!CollectionUtils.isEmpty(coaches)) { //1.获取当前查询时间 Date date = RcqtUtils.getDay();

for (Coach coach : coaches) {
    //2.查询当前教练课程
    //判断教练的工作状态(true工作中/false休息中)
    List<CourseDto> courseDtoList = courseInfoService.queryCourseByCoachId(coach.getCoachId(), date);
    boolean isWorking = courseDtoList.stream()
            .anyMatch(c -> LocalTime.now().isAfter(c.getStartReservationTime().toLocalTime()) && LocalTime.now().isBefore(c.getEndReservationTime().toLocalTime()));
    CoachDto coachDto = new CoachDto();
    BeanUtils.copyProperties(coach, coachDto);
    coachDto.setWorkStatus(isWorking);
    coachDto.setCarCount(queryAllDeviceEntitiesByCoachIdByCount(coach.getCoachId()));//车数量
    coachList.add(coachDto);
}

}

// 排序(按照工作状态和姓名排序) Comparator comparator = Comparator.comparing(CoachDto::getWorkStatus, Comparator.reverseOrder()) .thenComparing((c1, c2) -> Collator.getInstance(Locale.CHINESE).compare(c1.getRealName(), c2.getRealName()));

coachList.sort(comparator); List coachDtoList = coachList.stream().skip((long) (queryRequest.getPageNum() - 1) * queryRequest.getPageSize()).limit(queryRequest.getPageSize()).toList(); map.put('coaches', coachDtoList); map.put('total', coachDtoList.size());

return map;

Java MyBatis Plus 查询教练列表并优化排序

原文地址: https://www.cveoy.top/t/topic/qgj2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录