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);
}