List多个字段条件分组
List多个字段条件分组
public static String fetchGroupKey(UserPackageResidue userPackageResidue) { return userPackageResidue.getOrderNo() + "#" + userPackageResidue.getPackageName(); }
public ResultVo<List<ClientPackageManageResp>> clientPackageManage() { List<UserPackageResidue> userPackageResidues = this.lambdaQuery().eq(UserPackageResidue::getUserId, JWTContextUtil.getCurrentUserId()) .groupBy(UserPackageResidue::getOrderNo, UserPackageResidue::getPackageName) .orderByDesc(UserPackageResidue::getCreateTime) .last("limit 5").list(); List<String> orderNos = new ArrayList<>(); for (UserPackageResidue a : userPackageResidues) { orderNos.add(a.getOrderNo()); } if (orderNos.size() <= 0) { return ResultVo.success(new ArrayList<>()); } List<UserPackageResidue> mapList = this.lambdaQuery().in(UserPackageResidue::getOrderNo, orderNos).list(); Map<String, List<UserPackageResidue>> map = new HashMap<>(); map = mapList.stream().collect(Collectors.groupingBy(UserPackageResidueService::fetchGroupKey)); List<ClientPackageManageResp> list = new ArrayList<>(); for (UserPackageResidue u : userPackageResidues) { ClientPackageManageResp resp = new ClientPackageManageResp(); resp.setPackageName(u.getPackageName()); resp.setOrderNo(u.getOrderNo()); if (map.containsKey(u.getOrderNo() + "#" + u.getPackageName())) { resp.setUserPackageResidues(map.get(u.getOrderNo() + "#" + u.getPackageName())); } list.add(resp); } return ResultVo.success(list); }