从职称信息表中获得组织架构图结构树:递归实现方法:
@Override
public String getOrganizationTreeByBaseNum(String baseNumber) {
Gson gson = new Gson();
List<Title> listTitleInfo = this.getTitleInfoByBaseNum(baseNumber);
OrganizationTree node = new OrganizationTree();
for (Title titleInfo : listTitleInfo) {
if (titleInfo.getParentsNumber().equals("10")) { // 第一层
List<SysUser> listUserInfo = userService.getUserByTitleBaseNum(
baseNumber, titleInfo.getTitlNumber()); //根据基地编号和职称编号查询,list里面永远都只有一个值
node.setId(titleInfo.getTitlNumber());
node.setName(titleInfo.getName());
node.setData(listUserInfo.get(0));
node.setChildren(getChildren(titleInfo, listTitleInfo));
}
}
// 使用net.sf.json会生成对象中多余的字段(GSON中值为null的字段不生成)
// jsonObject = JSONObject.fromObject(node);
// return jsonObject.toString();
return gson.toJson(node).toString();
}
public List<OrganizationTree> getChildren(Title fatherNode,
List<Title> listTitleInfo) {
List<OrganizationTree> treeList = new ArrayList<OrganizationTree>();
for (Title titleInfo : listTitleInfo) {
if (titleInfo.getParentsNumber().equals(fatherNode.getTitlNumber())) {
List<SysUser> listUserInfo = userService.getUserByTitleBaseNum(
titleInfo.getBaseNumber(), titleInfo.getTitlNumber());
OrganizationTree node = new OrganizationTree();
if (titleInfo.getIsLeaf().equals("0")) { // 是否有孩子结点
node.setId(titleInfo.getTitlNumber());
node.setName(titleInfo.getName());
node.setData(listUserInfo.get(0));
node.setChildren(getChildren(titleInfo, listTitleInfo));
treeList.add(node); // 添加内部结点
} else {
node.setId(titleInfo.getTitlNumber());
node.setName(titleInfo.getName());
node.setData(listUserInfo.get(0));
treeList.add(node); // 添加叶子结点
}
}
}
return treeList;
}
附件,pojo:OrganizationTree,SysUser,Title