查询教练分页列表-参数查询
<p>@GetMapping("/queryCoachByPageByParam")
public Result<Object> queryCoachByPageByParam(QueryRequest queryRequest, Admin admin,
String text, String drivingProjectType,
String workStatus, HttpServletRequest request) {</p>
<pre><code>//权限验证
String token = (String) request.getAttribute("claims_admin");
if (token == null || "".equals(token)) {
throw new RuntimeException("权限不足!");
}
Map<String, Object> map = new HashMap<>();
//查出当前管理员
Admin admin1 = adminService.queryOneAdminByID(admin.getAdminId());
//1.当前管理员为总管理
if (admin1.getTotalAdminId() != null && admin1.getTotalAdminId() == 0) {
//找到当前总管理名下所有管理员
List<Admin> admins = adminService.queryAdminsByTotalAdminId(admin.getAdminId());
//(1)通过姓名和电话查询-总管理
if (!StringUtils.isEmpty(text)) {
List<Coach> coaches = new ArrayList<>();
for (Admin admin2 : admins) {
coaches.addAll(adminService.queryAllCoachByAdminId(admin2.getAdminId()));
}
List<CoachDto> coachDtoListByText = new ArrayList<>();
List<Coach> coachList = new ArrayList<>();
for (Coach coach : coaches) {
if (coach.getRealName() != null) {
if (coach.getRealName().contains(text) || coach.getCoachPhone().contains(text)) {
coachList.add(coach);
}
}
}
if (!CollectionUtils.isEmpty(coachList)) {
List<Long> coachIds = coachList.stream()
.map(Coach::getCoachId)
.collect(Collectors.toList());
Map<Long, Coach> coachMap = coaches.stream().collect(Collectors.toMap(Coach::getCoachId, Function.identity()));
// 查询当前教练课程
Map<Long, List<CourseDto>> courseDtoMap = courseInfoService.queryCourseByCoachIds(coachIds, RcqtUtils.getDay());
coachDtoListByText = coachIds.stream()
.map(coachId -> {
Coach coach = coachMap.get(coachId);
if (coach != null) {
CoachDto coachDto = new CoachDto();
BeanUtils.copyProperties(coach, coachDto);
// 判断教练是否在工作中
List<CourseDto> courseDtoList = courseDtoMap.get(coachId);
boolean isWorking = courseDtoList != null && courseDtoList.stream()
.anyMatch(c -> {
LocalTime currentTime = LocalTime.now();
return currentTime.isAfter(c.getStartReservationTime().toLocalTime()) && currentTime.isBefore(c.getEndReservationTime().toLocalTime());
});
coachDto.setWorkStatus(isWorking);
return coachDto;
}
return null;
})
.filter(Objects::nonNull)
.collect(Collectors.toList());
}
//按照姓名与工作状态排序
Comparator<CoachDto> comparator = Comparator.comparing(CoachDto::getWorkStatus, Comparator.reverseOrder())
.thenComparing((c1, c2) -> Collator.getInstance(Locale.CHINESE).compare(c1.getRealName(), c2.getRealName()));
coachDtoListByText.sort(comparator);
//进行分页
List<CoachDto> coachDtoListByPage = coachDtoListByText.stream()
.skip((long) (queryRequest.getPageNum() - 1) * queryRequest.getPageSize())
.limit(queryRequest.getPageSize())
.collect(Collectors.toList());
map.put("coaches", coachDtoListByPage);
map.put("total", coachDtoListByText.size());
return new Result<>(ResultCode.SUCCESS, map);
}
//(2)查全部教练-总管理
List<Coach> coaches = new ArrayList<>();
for (Admin admin2 : admins) {
coaches.addAll(adminService.queryAllCoachByAdminId(admin2.getAdminId()));
}
List<CoachDto> coachDtoListByAll = new ArrayList<>();
if (!CollectionUtils.isEmpty(coaches)) {
List<Long> coachIds = coaches.stream()
.map(Coach::getCoachId)
.collect(Collectors.toList());
Map<Long, Coach> coachMap = coaches.stream().collect(Collectors.toMap(Coach::getCoachId, Function.identity()));
// 查询当前教练课程
Map<Long, List<CourseDto>> courseDtoMap = courseInfoService.queryCourseByCoachIds(coachIds, RcqtUtils.getDay());
coachDtoListByAll = coachIds.stream()
.map(coachId -> {
Coach coach = coachMap.get(coachId);
if (coach != null) {
CoachDto coachDto = new CoachDto();
BeanUtils.copyProperties(coach, coachDto);
// 判断教练是否在工作中
List<CourseDto> courseDtoList = courseDtoMap.get(coachId);
boolean isWorking = courseDtoList != null && courseDtoList.stream()
.anyMatch(c -> {
LocalTime currentTime = LocalTime.now();
return currentTime.isAfter(c.getStartReservationTime().toLocalTime()) && currentTime.isBefore(c.getEndReservationTime().toLocalTime());
});
coachDto.setWorkStatus(isWorking);
return coachDto;
}
return null;
})
.filter(Objects::nonNull)
.collect(Collectors.toList());
}
//按照姓名与工作状态排序
Comparator<CoachDto> comparator = Comparator.comparing(CoachDto::getWorkStatus, Comparator.reverseOrder())
.thenComparing((c1, c2) -> Collator.getInstance(Locale.CHINESE).compare(c1.getRealName(), c2.getRealName()));
coachDtoListByAll.sort(comparator);
//(3)通过科目和工作状态-总管理
if (!StringUtils.isEmpty(workStatus) && !StringUtils.isEmpty(drivingProjectType)) {
//前端传递工作状态为0、1
Boolean workStatusB = Integer.parseInt(workStatus) == 1;
List<CoachDto> filteredList = coachDtoListByAll.stream()
.filter(coachDto -> coachDto.getWorkStatus() == workStatusB && coachDto.getDrivingProjectType() != null && coachDto.getDrivingProjectType().contains(drivingProjectType))
.toList();
//分页查询
List<CoachDto> coachDtos = filteredList.stream()
.skip((long) (queryRequest.getPageNum() - 1) * queryRequest.getPageSize())
.limit(queryRequest.getPageSize())
.collect(Collectors.toList());
map.put("coachList", coachDtos);
map.put("total", filteredList.size());
return new Result<>(ResultCode.SUCCESS, map);
} else if (StringUtils.isEmpty(workStatus) && !StringUtils.isEmpty(drivingProjectType)) {
List<CoachDto> filteredList = coachDtoListByAll.stream()
.filter(coachDto -> coachDto.getDrivingProjectType() != null && coachDto.getDrivingProjectType().contains(drivingProjectType))
.toList();
//分页查询
List<CoachDto> coachDtos = filteredList.stream()
.skip((long) (queryRequest.getPageNum() - 1) * queryRequest.getPageSize())
.limit(queryRequest.getPageSize())
.collect(Collectors.toList());
map.put("coachList", coachDtos);
map.put("total", filteredList.size());
return new Result<>(ResultCode.SUCCESS, map);
} else if (!StringUtils.isEmpty(workStatus) && StringUtils.isEmpty(drivingProjectType)) {
//前端传递工作状态为0、1
Boolean workStatusB = Integer.parseInt(workStatus) == 1;
List<CoachDto> filteredList = coachDtoListByAll.stream()
.filter(coachDto -> coachDto.getWorkStatus() == workStatusB)
.toList();
//分页查询
List<CoachDto> coachDtos = filteredList.stream()
.skip((long) (queryRequest.getPageNum() - 1) * queryRequest.getPageSize())
.limit(queryRequest.getPageSize())
.collect(Collectors.toList());
map.put("coachList", coachDtos);
map.put("total", filteredList.size());
return new Result<>(ResultCode.SUCCESS, map);
}
//进行分页
List<CoachDto> coachDtoListByPage = coachDtoListByAll.stream()
.skip((long) (queryRequest.getPageNum() - 1) * queryRequest.getPageSize())
.limit(queryRequest.getPageSize())
.collect(Collectors.toList());
map.put("coaches", coachDtoListByPage);
map.put("total", coachDtoListByAll.size());
return new Result<>(ResultCode.SUCCESS, map);
}
//2.管理员不是总管理
//查询当前管理员所有教练
List<Coach> coaches = adminService.queryAllCoachByAdminId(admin.getAdminId());
//(1)通过姓名和电话查询-普通管理员
if (!StringUtils.isEmpty(text)) {
//存放所有管理员名下教练
List<CoachDto> coachDtoList = new ArrayList<>();
List<Coach> coachList = new ArrayList<>();
for (Coach coach : coaches) {
if (coach.getRealName() != null) {
if (coach.getRealName().contains(text) || coach.getCoachPhone().contains(text)) {
coachList.add(coach);
}
}
}
if (!CollectionUtils.isEmpty(coachList)) {
List<Long> coachIds = coachList.stream()
.map(Coach::getCoachId)
.collect(Collectors.toList());
Map<Long, Coach> coachMap = coaches.stream().collect(Collectors.toMap(Coach::getCoachId, Function.identity()));
// 查询当前教练课程
Map<Long, List<CourseDto>> courseDtoMap = courseInfoService.queryCourseByCoachIds(coachIds, RcqtUtils.getDay());
coachDtoList = coachIds.stream()
.map(coachId -> {
Coach coach = coachMap.get(coachId);
if (coach != null) {
CoachDto coachDto = new CoachDto();
BeanUtils.copyProperties(coach, coachDto);
// 判断教练是否在工作中
List<CourseDto> courseDtoList = courseDtoMap.get(coachId);
boolean isWorking = courseDtoList != null && courseDtoList.stream()
.anyMatch(c -> {
LocalTime currentTime = LocalTime.now();
return currentTime.isAfter(c.getStartReservationTime().toLocalTime()) && currentTime.isBefore(c.getEndReservationTime().toLocalTime());
});
coachDto.setWorkStatus(isWorking);
return coachDto;
}
return null;
})
.filter(Objects::nonNull)
.collect(Collectors.toList());
}
//按照姓名与工作状态排序
Comparator<CoachDto> comparator = Comparator.comparing(CoachDto::getWorkStatus, Comparator.reverseOrder())
.thenComparing((c1, c2) -> Collator.getInstance(Locale.CHINESE).compare(c1.getRealName(), c2.getRealName()));
coachDtoList.sort(comparator);
//进行分页
List<CoachDto> coachDtoListByPage = coachDtoList.stream()
.skip((long) (queryRequest.getPageNum() - 1) * queryRequest.getPageSize())
.limit(queryRequest.getPageSize())
.collect(Collectors.toList());
map.put("coaches", coachDtoListByPage);
map.put("total", coachDtoList.size());
return new Result<>(ResultCode.SUCCESS, map);
}
//(2)查询所有教练-普通管理员
List<CoachDto> coachDtoList = new ArrayList<>();
List<Long> coachIds = coaches.stream()
.map(Coach::getCoachId)
.collect(Collectors.toList());
Map<Long, Coach> coachMap = coaches.stream().collect(Collectors.toMap(Coach::getCoachId, Function.identity()));
if (!CollectionUtils.isEmpty(coaches)) {
// 查询当前教练课程
Map<Long, List<CourseDto>> courseDtoMap = courseInfoService.queryCourseByCoachIds(coachIds, RcqtUtils.getDay());
coachDtoList = coachIds.stream()
.map(coachId -> {
Coach coach = coachMap.get(coachId);
if (coach != null) {
CoachDto coachDto = new CoachDto();
BeanUtils.copyProperties(coach, coachDto);
// 判断教练是否在工作中
List<CourseDto> courseDtoList = courseDtoMap.get(coachId);
boolean isWorking = courseDtoList != null && courseDtoList.stream()
.anyMatch(c -> {
LocalTime currentTime = LocalTime.now();
return currentTime.isAfter(c.getStartReservationTime().toLocalTime()) && currentTime.isBefore(c.getEndReservationTime().toLocalTime());
});
coachDto.setWorkStatus(isWorking);
return coachDto;
}
return null;
})
.filter(Objects::nonNull)
.collect(Collectors.toList());
//按照姓名与工作状态排序
Comparator<CoachDto> comparator = Comparator.comparing(CoachDto::getWorkStatus, Comparator.reverseOrder())
.thenComparing((c1, c2) -> Collator.getInstance(Locale.CHINESE).compare(c1.getRealName(), c2.getRealName()));
coachDtoList.sort(comparator);
}
//(3)通过科目和工作状态-普通管理员
if (!StringUtils.isEmpty(workStatus) && !StringUtils.isEmpty(drivingProjectType)) {
//前端传递工作状态为0、1
Boolean workStatusB = Integer.parseInt(workStatus) == 1;
List<CoachDto> filteredList = coachDtoList.stream()
.filter(coachDto -> coachDto.getWorkStatus() == workStatusB && coachDto.getDrivingProjectType() != null && coachDto.getDrivingProjectType().contains(drivingProjectType))
.toList();
//分页查询
List<CoachDto> coachDtos = filteredList.stream()
.skip((long) (queryRequest.getPageNum() - 1) * queryRequest.getPageSize())
.limit(queryRequest.getPageSize())
.collect(Collectors.toList());
map.put("coachList", coachDtos);
map.put("total", filteredList.size());
return new Result<>(ResultCode.SUCCESS, map);
} else if (StringUtils.isEmpty(workStatus) && !StringUtils.isEmpty(drivingProjectType)) {
List<CoachDto> filteredList = coachDtoList.stream()
.filter(coachDto -> coachDto.getDrivingProjectType() != null && coachDto.getDrivingProjectType().contains(drivingProjectType))
.toList();
//分页查询
List<CoachDto> coachDtos = filteredList.stream()
.skip((long) (queryRequest.getPageNum() - 1) * queryRequest.getPageSize())
.limit(queryRequest.getPageSize())
.collect(Collectors.toList());
map.put("coachList", coachDtos);
map.put("total", filteredList.size());
return new Result<>(ResultCode.SUCCESS, map);
} else if (!StringUtils.isEmpty(workStatus) && StringUtils.isEmpty(drivingProjectType)) {
//前端传递工作状态为0、1
Boolean workStatusB = Integer.parseInt(workStatus) == 1;
List<CoachDto> filteredList = coachDtoList.stream()
.filter(coachDto -> coachDto.getWorkStatus() == workStatusB)
.toList();
//分页查询
List<CoachDto> coachDtos = filteredList.stream()
.skip((long) (queryRequest.getPageNum() - 1) * queryRequest.getPageSize())
.limit(queryRequest.getPageSize())
.collect(Collectors.toList());
map.put("coachList", coachDtos);
map.put("total", filteredList.size());
return new Result<>(ResultCode.SUCCESS, map);
}
//进行分页
List<CoachDto> coachDtoListByPage = coachDtoList.stream()
.skip((long) (queryRequest.getPageNum() - 1) * queryRequest.getPageSize())
.limit(queryRequest.getPageSize())
.collect(Collectors.toList());
map.put("coaches", coachDtoListByPage);
map.put("total", coachDtoList.size());
return new Result<>(ResultCode.SUCCESS, map);
</code></pre>
<p>}</p>
原文地址: https://www.cveoy.top/t/topic/qhJX 著作权归作者所有。请勿转载和采集!