(一)实体
@Data
@Builder
public class BloodModelClas {
@TableId(value = "ID",type = IdType.ASSIGN_ID)
@ApiModelProperty("ID")
private Long id;
@ApiModelProperty("主键父id")
private Long parentId;
@ApiModelProperty("分类名称")
private String clasName;
@ApiModelProperty("分类类型")
private Integer clasType;
@ApiModelProperty("树类型")
private Integer treeType;
@ApiModelProperty("创建人")
private Long createUserId;
@ApiModelProperty("修改人")
private Long updateUserId;
@ApiModelProperty("创建日期")
private Date createDate;
@ApiModelProperty("修改日期")
private Date updateDate;
}
(二)递归方法
public Set<Long> getClasIds(String id) {
//存放节点集合
Set<Long> list=new HashSet<>();
//获取数据 父节点是 id 的数据
QueryWrapper<BloodModelClas> paramQueryWrapper = new QueryWrapper<>();
paramQueryWrapper.lambda().eq(BloodModelClas::getParentId, Long.valueOf(id));
List<BloodModelClas> list1 = this.list(paramQueryWrapper);
//获取 节点的 id
List<Long> collect = list1.stream().map(BloodModelClas::getId).collect(Collectors.toList());
//判断是否 有子节点 没有 子节点 返回 当前id
if(!collect.isEmpty()){
for (Long str : collect) {
//递归调用数据
Set<Long> longs = getClasIds(str.toString());
//将当前节点放入集合
list.add(Long.valueOf(id));
//将获取的子节点集合放入返回集合
list.addAll(longs);
}
}else{
list.add(Long.valueOf(id));
}
return list;
}
输出: