一下代码只供参考,不保证正确。
@Override
public TreeItem getAllTreeData() throws Exception {
TreeItem rootNode = new TreeItem();
rootNode.setId("0");
rootNode.setText("根");
List<TreeItem> list = new ArrayList<TreeItem>();
TreeItem gwNode = getGuangWaiOrGuangXinDeptTreeData("1", "广外公司", CommonConstant.DB_DEPT_ROOT_ID_广外);
list.add(gwNode);
TreeItem gxNode = getGuangWaiOrGuangXinDeptTreeData("2", "广信公司", CommonConstant.DB_DEPT_ROOT_ID_广信);
list.add(gxNode);
//加载人员
List<TFsqsgTeacher> gwUserList = getUsersByDeptId(CommonConstant.DB_DEPT_ROOT_ID_广外);
List<TreeItem> gw = getUserTree(gwUserList);
list.addAll(gw);
List<TFsqsgTeacher> gxUserList = getUsersByDeptId(CommonConstant.DB_DEPT_ROOT_ID_广信);
List<TreeItem> gx = getUserTree(gxUserList);
list.addAll(gx);
rootNode.setChildren(list);
return rootNode;
}
//获取广外部门数据
@Override
public TreeItem getGuangWaiOrGuangXinDeptTreeData(String id, String text, String fid) throws Exception {
TreeItem rootNode = new TreeItem();
rootNode.setId(id);
rootNode.setText(text);
//根据总节点查询部门节点
List<TreeItem> children = getChildrenByParentId(fid);
rootNode.setChildren(children);
return rootNode;
}
/**
* 根据部门id获取该部门的孩子
* @param deptId
* @return
* @throws Exception
*/
public List<TreeItem> getChildrenByParentId(String deptId) throws Exception {
List<TFsqsgDepartment> deptList = getDeptByParentId(deptId);
List<TreeItem> list = null;
if(deptList != null && deptList.size() > 0) {
list = new ArrayList<TreeItem>();
for(TFsqsgDepartment d: deptList) {
String fid = d.getFid();
TreeItem deptNode = new TreeItem();
deptNode.setId(fid);
deptNode.setText(d.getFname());
//加载部门下的员工数据
List<TreeItem> userTree = getUserTree(getUsersByDeptId(fid));
deptNode.setChildren(userTree);
list.add(deptNode);
}
}
return list;
}
/**
*
* @param userLst
* @return
*/
public List<TreeItem> getUserTree(List<TFsqsgTeacher> userLst) {
if(userLst == null || userLst.size() == 0) {
return null;
}
List<TreeItem> list = new ArrayList<TreeItem>();
for(TFsqsgTeacher d: userLst) {
String fid = d.getFid();
TreeItem userNode = new TreeItem();
userNode.setId(fid);
userNode.setText(d.getFname());
list.add(userNode);
}
return list;
}
/**
* 根据部门id查询部门下的用户信息
* @param deptId
* @return
* @throws Exception
*/
public List<TFsqsgTeacher> getUsersByDeptId(String deptId) throws Exception {
StringBuffer sb = new StringBuffer();
sb.append("FROM TFsqsgTeacher o ");
sb.append("WHERE o.departmentId=? ");
//根据父节点查询子节点
return commonService.findByHql(sb.toString(), deptId);
}
/**
* 根据父部门id查询子节点
* @param pid
* @return
* @throws Exception
*/
public List<TFsqsgDepartment> getDeptByParentId(String pid) throws Exception {
StringBuffer sb = new StringBuffer();
sb.append("FROM TFsqsgDepartment o ");
sb.append("WHERE o.parentId=? ");
//根据父节点查询子节点
return commonService.findByHql(sb.toString(), pid);
}