Bootstrap

某些场景下避免嵌套查询,优化嵌套查询

  /**
     * 分页列表查询
     *
     * @param room
     * @param pageNo
     * @param pageSize
     * @param req
     * @return
     */
    //@AutoLog(value = "教学资源模块-教室使用情况-分页列表查询")
    @ApiOperation(value = "教学资源模块-教室使用情况-分页列表查询", notes = "教学资源模块-教室使用情况-分页列表查询")
    @GetMapping(value = "/list")
    public Result<IPage<Room>> queryPageList(Room room,
                                             @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
                                             @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
                                             HttpServletRequest req) {
        QueryWrapper<Room> queryWrapper = QueryGenerator.initQueryWrapper(room, req.getParameterMap());
        Page<Room> page = new Page<Room>(pageNo, pageSize);
        IPage<Room> pageList = roomService.page(page, queryWrapper);

        List<String> floorIds = pageList.getRecords().stream().map(Room::getFloorId).collect(Collectors.toList());

        // 查询楼层信息
        Map<String, SysFloor> floorMap = sysFloorService.listByIds(floorIds)
                .stream()
                .collect(Collectors.toMap(SysFloor::getId, Function.identity()));

        // 将楼层信息设置到 Room 实体中
        pageList.getRecords().forEach(record -> {
            SysFloor sysFloor = floorMap.get(record.getFloorId());
            if (sysFloor != null) {
                record.setFloorId(sysFloor.getName());
            }
        });
        return Result.OK(pageList);
    }
;