二级部门的人员树状结构封装

来源:互联网 发布:公安大数据分析研判 编辑:程序博客网 时间:2024/06/05 17:33

一下代码只供参考,不保证正确。

@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);    }