1.实体类
public class DeptInfoVO {
/**
* @Fields id 主键id
*/
@ApiModelProperty("id")
@TableId(value="id")
@TableField(value="id")
private Integer id;
/**
* @Fields parentId 父级id
*/
private Integer parentId;
/**
* @Fields deptName 部门名字
*/
@ApiModelProperty("deptName")
@TableField(value="dept_name")
private String deptName;
/**
* @Fields territory 地域
*/
@ApiModelProperty("territory")
@TableField(value="territory")
private String territory;
/**
* @Fields deptLevel 部门级别
*/
@ApiModelProperty("deptLevel")
@TableField(value="dept_level")
private String deptLevel;
/**
* @Fields ifDelete 逻辑删除 0 未删除 1 已删除
*/
@ApiModelProperty("ifDelete")
@TableField(value="if_delete")
private Integer ifDelete;
/**
* @Fields remark 备注
*/
@ApiModelProperty("remark")
@TableField(value="remark")
private String remark;
/**
* @Fields children 子结构
*/
private List<DeptInfoVO> children;
private static final long serialVersionUID = 1L;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getParentId() {
return parentId;
}
public void setParentId(Integer parentId) {
this.parentId = parentId;
}
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
public String getTerritory() {
return territory;
}
public void setTerritory(String territory) {
this.territory = territory;
}
public String getDeptLevel() {
return deptLevel;
}
public void setDeptLevel(String deptLevel) {
this.deptLevel = deptLevel;
}
public Integer getIfDelete() {
return ifDelete;
}
public void setIfDelete(Integer ifDelete) {
this.ifDelete = ifDelete;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public List<DeptInfoVO> getChildren() {
return children;
}
public void setChildren(List<DeptInfoVO> children) {
this.children = children;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
DeptInfoVO that = (DeptInfoVO) o;
return Objects.equals(id, that.id) && Objects.equals(parentId, that.parentId) && Objects.equals(deptName, that.deptName) && Objects.equals(territory, that.territory) && Objects.equals(deptLevel, that.deptLevel) && Objects.equals(ifDelete, that.ifDelete) && Objects.equals(remark, that.remark) && Objects.equals(children, that.children);
}
@Override
public int hashCode() {
return Objects.hash(id, parentId, deptName, territory, deptLevel, ifDelete, remark, children);
}
}
2.Controller层
/**
* 查询部门树结构信息
* @return
*/
@GetMapping("/deptTree")
@ApiOperation("查询部门树结构信息")
public BaseResult getDeptTree() {
List<DeptInfoVO> deptTree = deManageService.getDeptTree();
return BaseResult.success("树结构查询成功",deptTree);
}
3.Service层
/**
* 查询部门树结构信息
* @return
*/
@Override
public List<DeptInfoVO> getDeptTree() {
//获取所有的父亲列表
List<DeptInfoVO> cscpDeptInfos = getChildrenNode(0);
return cscpDeptInfos;
}
/**
* 递归获取子节点下的子节点
* @param
* @param
* @return
*/
private List<DeptInfoVO> getChildrenNode(Integer parentId) {
List<DeptInfoVO> newTrees = new ArrayList<>();
List<DeptInfoVO> list = deptInfoMapper.selectAll(parentId);
for (DeptInfoVO item : list) {
List<DeptInfoVO> news = getChildrenNode(item.getId());
if (news == null || news.size() == 0) {
newTrees.add(item);
continue;
}else {
item.setChildren(news);
newTrees.add(item);
}
}
return newTrees;
}
4.sql层
<select id="selectAll" resultType="com.ctsi.zzehr.param.vo.DeptInfoVO">
select *
FROM zzehr_settlement.cscp_dept_info
where parent_id = #{parentId}
and if_delete = 0
</select>