Jpa自定义分页

自定义分页核心:

     new PageImpl<MasterUserAuth>(result, usersPage.getPageable(), usersPage.getTotalElements());

    @JsonView(TreeWithCheckedView.class)
    @PostMapping("/authUser/users")
    @ApiOperation(value = "加载员工信息", notes = "加载员工信息")
    public ResponseEntity<Page<MasterUserAuth>> findAuthUser(
                                            @RequestParam(required = false) String name,
                                            @RequestParam(required = false) String code,
                                            @RequestBody COPUserBean userBean,
                                            @RequestParam String pageNum,
                                            @RequestParam String pageSize) {
        List<MasterUser> selectedUsers = new ArrayList<>();
        if ("MasterCompany".equals(userBean.getOrgType())) {
            MasterCompany company = companyService.findByIdAndDeletedFalse(userBean.getOrgId());
            if (company == null) {
                throw new ControllerException("所属公司没有找到");
            }

            // 获取已选用户
            List<MasterCompanyUser> selectedCompanyUsers = companyUserService.findByCompany(company);
            selectedUsers = selectedCompanyUsers.stream()
                    .map(MasterCompanyUser::getUser)
                    .collect(Collectors.toList());


        } else if ("MasterOrganization".equals(userBean.getOrgType())) {
            MasterOrganization organization = masterOrganizationService.findByIdAndDeletedFalse(userBean.getOrgId());
            if (organization == null) {
                throw new ControllerException("所属机构没有找到");
            }

            // 获取已选用户
            List<MasterOrganizationUser> selectedOrganizationUser = masterOrganizationUserService.findByOrg(organization);
            selectedUsers = selectedOrganizationUser.stream()
                    .map(MasterOrganizationUser::getUser)
                    .collect(Collectors.toList());
        }
        // 获取所有用户
        List<SearchFilter> userFilter = new ArrayList<>();
        userFilter.add(SearchFilter.equal("deleted", Boolean.FALSE));
        userFilter.add(SearchFilter.contains("userName", name));
        userFilter.add(SearchFilter.contains("userCode", code));
        Specification<MasterUser> spec = buildFilterRequest(userFilter);
		
        int pn = Integer.parseInt(pageNum);
        int ps = Integer.parseInt(pageSize);
        PageRequest pageRequest = PageRequest.of(pn - 1, ps);
        Page<MasterUser> usersPage = masterUserService.findAll(spec, pageRequest);

        List<MasterUser> users=usersPage.getContent();
        List<MasterUserAuth> result=setCheckedUser(selectedUsers, users);
        Page<MasterUserAuth> resultPage=new PageImpl<MasterUserAuth>(result, usersPage.getPageable(), usersPage.getTotalElements());
        return ResponseEntity.ok(resultPage);
    }



    /**
     * 设置已选的用户
     */
    private List<MasterUserAuth> setCheckedUser(List<MasterUser> selectedUsers, List<MasterUser> users) {
        List<MasterUserAuth> result = new ArrayList<>();
        for (MasterUser user : users) {
            MasterUserAuth ua = new MasterUserAuth();
            ua.setUser(user);
            if (selectedUsers.contains(user)) {
                ua.setChecked(true);
            }
            result.add(ua);
        }
        return result;
    }

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值