公司需求是 根据当前员工查找他对应整个分公司及部门的名字,思路:根据员工查找出他属于哪个分公司,拿到分公司PID(可以理解为是子公司的父节点ID),再使用递归方法依次查找,(在递归方法中只要你传父节点ID,不管其子下有没有子节点),
效果图:
现在贴代码:
package com.neusoft.talentbase.organization.orgunit.orgunit.vo; import java.util.List; import com.neusoft.talentbase.framework.core.base.vo.BaseVO; public class MyOrgUnitVO extends BaseVO { /** * 组织单元ID */ private long orgid; /** * 组织单元名称 */ private String orgName; private List<MyOrgUnitVO> list;// 存放子节点 private String open; // 在前台把当前节点展开 /** * 父节点ID */ private long pid; private int isCost; private int isZhangtao; private int type; public int getType() { return type; } public void setType(int type) { this.type = type; } public int getIsCost() { return isCost; } public void setIsCost(int isCost) { this.isCost = isCost; } public int getIsZhangtao() { return isZhangtao; } public void setIsZhangtao(int isZhangtao) { this.isZhangtao = isZhangtao; } public long getPid() { return pid; } public void setPid(long pid) { this.pid = pid; } public List<MyOrgUnitVO> getList() { return list; } public void setList(List<MyOrgUnitVO> list) { this.list = list; } public long getOrgid() { return orgid; } public void setOrgid(long orgid) { this.orgid = orgid; } public String getOrgName() { return orgName; } public void setOrgName(String orgName) { this.orgName = orgName; } public String getOpen() { return open; } public void setOpen(String open) { this.open = open; } }
package com.neusoft.talentbase.organization.orgunit.orgunit.dao; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.hibernate.Hibernate; import com.neusoft.talentbase.framework.core.base.dao.BaseDAOImpl; import com.neusoft.talentbase.organization.orgunit.orgunit.vo.MyOrgUnitVO; /** * * {} * @author tangjia * @created 2013-10-23 下午01:56:24 * @lastModified * @history */ public class MyOrgUnitDAOImpl extends BaseDAOImpl implements MyOrgUnitDAO{ public List<MyOrgUnitVO> getOrgUnitTree(long unitId,boolean flag) { String sql=""; if(flag) { sql="select o.c_name as name ,u.c_orgunitid as unitid ,i.c_iscost as iscost ,o.c_type as type "+ " from tb_org_unitrelation u, tb_org_orgunit o,tb_iscostcentre i "+ " where u.c_orgunitid = o.c_oid_orgunit and u.c_orgunitid=i.c_unitid "+ " and u.c_parentunitid in " + " (select u.c_parentunitid from tb_org_unitrelation u where u.c_orgunitid="+unitId+")" + " and u.c_status=1 and i.c_status=1 and o.c_status=1 and u.c_orgunitid="+unitId; } else { sql="select o.c_name as name,u.c_orgunitid as unitid ,i.c_iscost as iscost ,o.c_type as type from " + "tb_org_unitrelation u, tb_org_orgunit o ,tb_iscostcentre i where u.c_orgunitid = o.c_oid_orgunit"+ " and u.c_orgunitid=i.c_unitid and i.c_status=1 and o.c_status=1 and u.c_status=1 and u.c_parentunitid="+unitId; } List list=this.getSession().createSQLQuery(sql) .addScalar("name", Hibernate.STRING) .addScalar("unitid", Hibernate.LONG) .addScalar("iscost", Hibernate.INTEGER).addScalar("type", Hibernate.INTEGER).list(); List <MyOrgUnitVO> orgUnitlist=new ArrayList<MyOrgUnitVO>(); for (int i = 0; i < list.size(); i++) { Object[] obj=(Object[])list.get(i); //查帐套 String s=" select count(*) as counts from rlship_base rl,tb_org_orgunit_append app ,tb_org_orgunit org "+ " where rl.rrolecode = app.c_org_code "+ " and app.c_oid_orgunit = org.c_oid_orgunit "+ " and rl.typeid = '2000772'"+ " and org.c_oid_orgunit ="+obj[1].toString(); List li=this.getSession().createSQLQuery(s).addScalar("counts", Hibernate.INTEGER).list(); MyOrgUnitVO orgUnit=new MyOrgUnitVO(); orgUnit.setOrgName(obj[0].toString()); orgUnit.setOpen("true");//这里设为true是因为需求中要把所有的节点打开 orgUnit.setPid(Long.valueOf(obj[1].toString())); orgUnit.setIsCost(Integer.parseInt(obj[2].toString())); orgUnit.setType(Integer.parseInt(obj[3].toString())); if(Integer.parseInt(li.get(0).toString())>0) { orgUnit.setIsZhangtao(1);//有帐套 } else { orgUnit.setIsZhangtao(0);//没有帐套 } orgUnitlist.add(orgUnit); } for(MyOrgUnitVO unit:orgUnitlist) { List li=getOrgUnitTree(unit.getPid(),false); unit.setList(li); } return orgUnitlist; } }
/** * * { 获取该用户的组织树} * @param mapping * @param form * @param request * @param response * @return * @throws Exception * @author tangjia * @created 2013-10-18 下午06:07:17 * @lastModified * @history */ public ActionForward myOrgUnit(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { //获取操作用户权限 long unitOid = 0; SecurityJdbcDAO securityDAO = (SecurityJdbcDAO) getBean("securityJdbcDAOForAction"); HashMap securityMap = (HashMap) securityDAO .getUserFuncHiberarchyAndRootOrgUnit("no_config_func"); if (securityMap == null || securityMap.get("rootNodeId") == null || securityMap.isEmpty()) { OrgUnitCommonService orgUnitCommonService = (OrgUnitCommonService) getBean("orgUnitCommonService"); unitOid = orgUnitCommonService.getDefaultUnit().getOid(); } else { unitOid = Long.parseLong(String.valueOf(securityMap .get("rootNodeId"))); } //总公司员工对应于寿险总公司 if(unitOid==1||unitOid==21266433){ unitOid=245569460; } MyOrgUnitService myOrgUnitDao=(MyOrgUnitService) getBean("myOrgUnitService"); List<MyOrgUnitVO> list=myOrgUnitDao.getOrgUnitTree(unitOid,true); JSONArray jsonObj = JSONArray.fromObject(list); //转换成json格式,前台用的是ztree控件,解析的数据可以为json格式,ztree控件对数据格式有要求,旗下子节点必须是以children 所以我把javabean里面的list替换成children,还有个name是一样的意思 String s=jsonObj.toString().replaceAll("list", "children").replaceAll("orgName", "name"); request.setAttribute("jsonList", s); // System.out.println(jsonObj.toString()); // System.out.println(s); return mapping.findForward("myUnit"); }
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <!-- ztree --> <link rel="stylesheet" href="<%= request.getContextPath() %>/scripts/jquery-treeview-js/css/demo.css" type="text/css"> <link rel="stylesheet" href="<%= request.getContextPath() %>/scripts/jquery-treeview-js/css/zTreeStyle.css" type="text/css"> <script src="<%= request.getContextPath() %>/scripts/jquery-treeview-js/jquery-1.4.4.min.js" type="text/javascript"></script> <script src="<%= request.getContextPath() %>/scripts/jquery-treeview-js/jquery.ztree.core-3.5.js" type="text/javascript"></script> </head> <body> <div style="width:100%;"> <div style="float:left;width:25%;"><span style="background-color:#ccc; font-size:20px">成本中心</span></div> <div style="float:right;width:63%; "><span style="background-color:#ccc; font-size:20px">帐套中心</span></div> </div><br/> <div class="content_wrap"> <div class="zTreeDemoBackground left"> <ul id="treeDemo" class="ztree"></ul> </div> <div class="zTreeDemoBackground right"> <ul id="treeDemo1" class="ztree"></ul> </div> <!-- <div style="width:50%; margin-left:30px;float:left;overflow-y: scroll; height:400px;position: relative;"> <div id="tree3"></div> </div> <div style="width:40%; margin-left:30px;float:right;height:400px;overflow-y: scroll;position: relative;"> <div id="tree2"></div> </div>--> </div> <script type="text/javascript"> var jsonObj = <%=request.getAttribute("jsonList")%>; //----------------------ztree------------------------ function setFontCss(treeId, treeNode) { if(treeNode.type == 1 && treeNode.isCost==1) return treeNode.type == 1 ? {"background-color":"#FF6666 "} : {}; if(treeNode.type == 2 && treeNode.isCost==1) return treeNode.type == 2 ? {"background-color":"#FF9933 "} : {}; if(treeNode.type == 3 && treeNode.isCost==1) return treeNode.type == 3 ? {"background-color":"#FFFF99 "} : {}; if(treeNode.type == 4 && treeNode.isCost==1) return treeNode.type == 4 ? {"background-color":"#339933 "} : {}; if(treeNode.type == 5 && treeNode.isCost==1) return treeNode.type == 5 ? {"background-color":"#CCFF99 "} : {}; if(treeNode.type == 6 && treeNode.isCost==1) return treeNode.type == 6 ? {"background-color":"#99CCFF "} : {}; if(treeNode.type == 7 && treeNode.isCost==1) return treeNode.type == 7 ? {"background-color":"#9999CC "} : {}; }; function setFontCss1(treeId, treeNode) { if(treeNode.isZhangtao == 1 ) return treeNode.isZhangtao == 1 ? {"background-color":"#99CC33 "} : {}; }; var setting = { view: { showLine: true,//显示连接线 showIcon: true,//显示节点图片 //fontCss: {color:"red"} fontCss: setFontCss//节点颜色 } }; var setting1 = { view: { showLine: true,//显示连接线 showIcon: false,//显示节点图片 //fontCss: {color:"red"} fontCss: setFontCss1//节点颜色 } }; $(document).ready(function(){ $.fn.zTree.init($("#treeDemo"), setting, jsonObj); }); $(document).ready(function(){ $.fn.zTree.init($("#treeDemo1"), setting1, jsonObj); }); </script> </body> </html>
到此就把从数据库中查询出来的数据 ,展示在jsp 树上面了
相关推荐
使用递归生成文件目录树 .txt 使用递归生成文件目录树 .txt
递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树...
Java递归算法构造JSON树形结构,Java递归算法构造JSON树形结构Java递归算法构造JSON树形结构
用递归实现C#树形结构 ,用递归实现C#树形结构 ,
C#使用递归算法,生成并画树形状的图形。详细介绍请到博客中看看
c#递归树自动树 添加父子节点等等操作全部包涵
使用递归和dom遍历dom树形结构 完整代码
分别用递归和非递归建立树,实现前序,中序,后序,分层遍历
基于极限树特征递归消除和LightGBM的异常检测模型.docx
在JSP中使用递归算法生成目录树 计算机工程与设计2005年第1期
pb中使用递归算法实现树的遍历
Java递归将List转为树形结构 博客地址:https://blog.csdn.net/weixin_38500202/article/details/110456363
易语言递归算法画树源码例程程序使用递归算法在易语言画板上画树。点评:易语言递归算法画树源码是易语言编程算法的应用例程。
主要介绍了MyBatis之自查询使用递归实现 N级联动效果,本文给大家分享两种实现方式,需要的的朋友参考下吧
使用递归方法生成连通树的matlab小程序,仅供参考,写出来还是比较简单
php利用递归实现分类树显示(使用递归实现分类树显示,要写好多字哟能不能少写点,复制几行凑数,使用递归实现分类树显示使用递归实现分类树显示使用递归实现分类树显示)
借用jquery控件实现对树的展示,后台使用递归对树的组建。。
springJpa单标递归树形结构
这个是通过vc6.0运行出来的分形树,只是一个分形结构图,参考的是一本书上的代码,一根竹竿生长出两个侧干,实现的递归算法。。
树PostgreSQL的递归查询树PostgreSQL的递归查询树PostgreSQL的递归查询