代码如下:
public class Service{ public IPage<ChannelAgentOrgVO> getChannelAgentTeamStream(Page<ChannelAgentOrgVO> page, Channel channel) { Page<Channel> channelPage = this.getPage(new Page<>(page.getCurrent(), page.getSize()), channel); Stream<Channel> channelStream = channelPage.getRecords().stream(); Stream<ChannelAgentOrgVO> voStream = channelStream.map(c -> { ChannelAgentOrgVO vo = new ChannelAgentOrgVO(); vo.setChannel(c); return vo; }); List<Long> channelOrgIds = channelPage.getRecords().stream().map(Channel::getChannelOrgId).collect(Collectors.toList()); List<Long> agentOrgIds = channelPage.getRecords().stream().map(Channel::getAgentOrgId).collect(Collectors.toList()); List<Long> agentTeamIds = channelPage.getRecords().stream().map(Channel::getAgentTeamId).collect(Collectors.toList()); List<ChannelOrg> channelOrgList = channelOrgService.lambdaQuery().in(ChannelOrg::getId, channelOrgIds) .select(ChannelOrg::getId, ChannelOrg::getCode, ChannelOrg::getName, ChannelOrg::getFullName, ChannelOrg::getType) .list(); List<Org> agentOrgList = agentOrgService.lambdaQuery().in(Org::getId, agentOrgIds) .select(Org::getId, Org::getCode, Org::getName, Org::getFullName, Org::getType) .list(); List<AgentTeam> agentTeamList = agentTeamService.lambdaQuery().in(AgentTeam::getId, agentTeamIds) .select(AgentTeam::getId, AgentTeam::getName, AgentTeam::getFullName, AgentTeam::getAddressDetail, AgentTeam::getAddressName, AgentTeam::getAddressContact) .list(); voStream = voStream.peek(vo -> channelOrgList.forEach(channelOrg -> { if (Objects.equals(channelOrg.getId(), vo.getChannel().getChannelOrgId())) { vo.setChannelOrg(channelOrg); } })); voStream = voStream.peek(vo -> agentOrgList.forEach(agentOrg -> { if (Objects.equals(agentOrg.getId(), vo.getChannel().getAgentOrgId())) { vo.setAgentOrg(agentOrg); } })); voStream = voStream.map(vo -> { agentTeamList.forEach(agentTeam -> { if (Objects.equals(agentTeam.getId(), vo.getChannel().getAgentTeamId())) { vo.setAgentTeam(agentTeam); } }); return vo; }); return new PageResult<>(channelPage, voStream.collect(Collectors.toList())).getVoPage(); } } 

