数据库
CREATE TABLE `sys_department` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '部门名称',
`parent_id` bigint DEFAULT NULL COMMENT '父id',
`level` int DEFAULT NULL COMMENT '部门层级',
`state` int NOT NULL DEFAULT '1' COMMENT '状态,0:禁用,1:启用',
`sort` int NOT NULL DEFAULT '0' COMMENT '排序',
`remark` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注',
`version` int NOT NULL DEFAULT '0' COMMENT '版本',
`create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NULL DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `sys_department_name_uindex` (`name`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=208 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='部门';
java vo
@Data
@Accessors(chain = true)
@ApiModel(value = "SysDepartmentTreeVo对象", description = "部门")
public class SysDepartmentTreeVo implements Serializable {
private static final long serialVersionUID = -2250233632748939400L;
@ApiModelProperty("主键")
private Long id;
@ApiModelProperty("部门名称")
private String name;
@ApiModelProperty("父id")
private Long parentId;
@ApiModelProperty("状态,0:禁用,1:启用")
private Integer state;
@ApiModelProperty("排序")
private Integer sort;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("版本")
private Integer version;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改时间")
private Date updateTime;
private List<SysDepartmentTreeVo> children;
impl
//表所有内容
List<SysDepartment> sysDepartmentList = getAllDepartmentList();
public List<SysDepartment> getAllDepartmentList() {
SysDepartment sysDepartment = new SysDepartment().setState(StateEnum.ENABLE.getCode());
// 获取所有已启用的部门列表
return sysDepartmentMapper.selectList(new QueryWrapper(sysDepartment));
}
List<SysDepartmentTreeVo> treeVos = new ArrayList<>();
for (SysDepartmentTreeVo treeVo : sysDepartmentList ) {
if (treeVo.getParentId() == null) {
treeVos.add(findChildren(treeVo, list));
}
}
return treeVos;
public SysDepartmentTreeVo findChildren(SysDepartmentTreeVo tree, List<SysDepartmentTreeVo> list) {
for (SysDepartmentTreeVo vo : list) {
if (tree.getId().equals(vo.getParentId())) {
if (tree.getChildren() == null) {
tree.setChildren(new ArrayList<>());
}
tree.getChildren().add(findChildren(vo, list));
}
}
return tree;
}