1.父子级关系
public class TreeDepartmentResp implements Serializable {
private static final long serialVersionUID = 6109449105813084543L;
@ApiModelProperty("组织名称")
private String organizationName;
@ApiModelProperty("组织uuid")
private String organizationUuid;
@ApiModelProperty("组织主管名称")
private String managerName;
@ApiModelProperty("组织主管账号uuid")
private String userAccountUuid;
@ApiModelProperty("组织人数")
private Integer num;
@ApiModelProperty("父级组织uuid")
private String parentUuid;
@ApiModelProperty("父级组织名称")
private String parentOrganizationName;
private List<TreeDepartmentResp> treeDepartmentResp;
2.循环查询子部门
public List<TreeDepartmentResp> getDepartment(TreeDepartmentResp treeDepartmentResp) {
List<TreeDepartmentResp> departmentList = this.getDepartmentList(treeDepartmentResp);
if (departmentList.size() > 0) {
TreeDepartmentResp departmentResp = new TreeDepartmentResp();
for (int i = 0; i < departmentList.size(); i++) {
departmentResp.setParentUuid(departmentList.get(i).getOrganizationUuid());
List<TreeDepartmentResp> dto = getDepartment(departmentResp);
departmentList.get(i).setTreeDepartmentResp(dto);
}
}
return departmentList;
}
3.递归统计部门与子部分的人数->父子级
/**
* 根据部门uuid统计人数
*
* @param organizationUuid
* @return
*/
private int countPerson(String organizationUuid) {
CompanyDepartmentMembersResp companyDepartmentMembers = queryCompanyDepartmentMembers(organizationUuid);
int a = getNum(companyDepartmentMembers, 0);
return a;
}
/**
* 递归查询部门人数
*
* @param companyDepartmentMembers
* @param count
* @return
*/
private int getNum(CompanyDepartmentMembersResp companyDepartmentMembers, int count) {
List<CompanyDepartmentMembersResp> childList = companyDepartmentMembers.getCompanyDepartmentMembersResp();
List<MembersResp> memberList = companyDepartmentMembers.getMembersResp();
if (memberList != null && memberList.size() > 0) {
count = CollectionUtils.isEmpty(memberList) ? 0 : memberList.size();
}
if (!CollectionUtils.isEmpty(childList)) {
Iterator<CompanyDepartmentMembersResp> it = childList.iterator();
while (it.hasNext()) {
CompanyDepartmentMembersResp companyDepartment = (CompanyDepartmentMembersResp) it.next();
count = count + getNum(companyDepartment, count);
}
}
return count;
}