当前位置:网站首页>Recursive query single table - single table tree structure - (self-use)

Recursive query single table - single table tree structure - (self-use)

2022-07-31 03:03:00 Gerald Peake Shea

Single table recursive application scenario,The tree structure sinks infinitely(如下图)

在这里插入图片描述

表结构 parent_id(父亲id)

在这里插入图片描述

实体类

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "t_dept")
public class OrgDept implements Serializable {
    
    /** * 组织架构 */
    @TableId(value = "org_id", type = IdType.INPUT)
    private Long orgId;

    /** * 组织code */
    @TableField(value = "org_code")
    private String orgCode;

    /** * 组织名称 */
    @TableField(value = "org_name")
    private String orgName;

    /** * 父节点 */
    @TableField(value = "parent_id")
    private Long parentId;

    /** * 组织描述 */
    @TableField(value = "org_address")
    private String orgAddress;

    /** * 创建时间 */
    @TableField(value = "create_time")
    private Date createTime;

    /** * 创建人 */
    @TableField(value = "create_by")
    private String createBy;

    /** * 电话号码 */
    @TableField(value = "phone_number")
    private String phoneNumber;

    /** * 排序 */
    @TableField(value = "order_number")
    private Integer orderNumber;

    @TableField(exist = false)
    private String parentName;

    @TableField(exist = false)
    List<OrgDept> children;

    /** * 部门id集合 */
    @TableField(exist = false)
    List<Integer> depaIds;

    private static final long serialVersionUID = 1L;
}

impl 递归开始

listRoleOrgDept

   @Override
    @Transactional(rollbackFor = Exception.class)
    public List<OrgDept> listRoleOrgDept(Long deptId) {
    
    	// 
        List<Long> depaIds = new ArrayList<>();
        // x_1 Department full list
        List<OrgDept> orgDepts = new LambdaQueryChainWrapper<>(orgDeptMapper)
                .list();
        //Defines the return object child parent nesting
        List<OrgDept> parentMenu;
        // When the page is clicked, the current node will be captured to get the nodeid If not default all
        if (deptId == null) {
    
        // 获取全部列表
            parentMenu = orgDepts.stream().filter(e -> e.getParentId().equals(0L)).collect(Collectors.toList());
            // 
            for (OrgDept sysMenu : parentMenu) {
    
                depaIds.add(sysMenu.getOrgId());
                setChild(sysMenu, orgDepts, depaIds);
            }
        } else {
    
            parentMenu = pIdLive(deptId, orgDepts, depaIds);
        }
        return parentMenu;
    }
原网站

版权声明
本文为[Gerald Peake Shea]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/212/202207310300099755.html