java树easyui_Jquery EasyUI Tree树形结构的Java实现(实体转换VO)

前一阵做的OA项目,有一个是组织架构的树,因为是分开做的,我做的是Controller和页面,其他组做的Service和Dao,因为之前一直没有商量页面用什么框架做比较好,导致,Dao层取出来的数据都不是Easyui Tree所能识别的,其实后台返回的也是树形的结构,但是他们返回的是name,,而不是Easyui Tree所能识别的text,他们返回的是****,,而不是Easyui Tree所能识别的children,因为别人已经做好了,所以也不方便让别人重新去定义格式,所以我这边只能通过转VO,把Service返回的对象重新进行封装,使之支持Easyui ,话不多说,直接上代码。

这段是VO代码;其中主要的就是ID,text,children,要转的就是这三个

public class OrganizationVo implementsSerializable{privateInteger id;privateInteger pid;privateInteger teamId;privateString text;privateString state;privateString leader;privateInteger sort;private Listchildren;publicOrganizationVo(){}public OrganizationVo(Integer id,Integer pid, Integer teamId,String leader,Integer sort,String text,String state, Listchildren) {this.id =id;this.pid =pid;this.teamId =teamId;this.text =text;this.sort =sort;this.leader =leader;this.state =state;this.children =children;

}publicInteger getId() {returnid;

}public voidsetId(Integer id) {this.id =id;

}publicInteger getTeamId() {returnteamId;

}public voidsetTeamId(Integer teamId) {this.teamId =teamId;

}publicString getText() {returntext;

}public voidsetText(String text) {this.text =text;

}publicString getLeader() {returnleader;

}public voidsetLeader(String leader) {this.leader =leader;

}publicInteger getSort() {returnsort;

}public voidsetSort(Integer sort) {this.sort =sort;

}publicString getState() {returnstate;

}public voidsetState(String state) {this.state =state;

}public ListgetChildren() {returnchildren;

}public void setChildren(Listchildren) {this.children =children;

}publicInteger getPid() {returnpid;

}public voidsetPid(Integer pid) {this.pid =pid;

}

}

这个是转换的工具类(只要组织,不带成员)

public classTreeNoteUtil {/*** 获取父节点菜单

*@paramtreesList 所有树菜单集合

*@return

*/

public final static List getFatherNode(ListtreesList){

List newTrees = new ArrayList();for(TeamOrganizational teamOrganizational : treesList) {if (teamOrganizational.getFatherId()==null) {//如果pId为空,则该节点为父节点//递归获取父节点下的子节点

OrganizationVo newTree = newOrganizationVo();

newTree.setId(teamOrganizational.getId());

newTree.setText(teamOrganizational.getName());

newTree.setTeamId(teamOrganizational.getTeamId());

List treesLists =teamOrganizational.getSonTeamOrganizationals();

newTree.setChildren(getChildrenNode(teamOrganizational.getId(), treesLists));

newTrees.add(newTree);

}

}returnnewTrees;

}/*** 递归获取子节点下的子节点

*@parampId 父节点的ID

*@paramtreesLists 所有菜单树集合

*@return

*/

private final static List getChildrenNode(Integer pId, ListtreesLists){

List newTrees = new ArrayList();for(TeamOrganizational mt : treesLists) {if (mt.getFatherId() != null) {if (mt.getFatherId() ==pId) {

OrganizationVo newTree= newOrganizationVo();//递归获取子节点下的子节点,即设置树控件中的children

newTree.setChildren(getChildrenNode(mt.getId(), mt.getSonTeamOrganizationals()));//设置树控件attributes属性的数据

newTree.setId(mt.getId());

newTree.setText(mt.getName());

newTree.setPid(mt.getFatherId());

newTree.setTeamId(mt.getTeamId());

newTree.setSort(mt.getSort());

newTree.setLeader(mt.getLeader());

newTrees.add(newTree);

}

}

}returnnewTrees;

}

}

这个是转换的工具类(带组织,带成员)

public classTreeNoteUtil2 {/*** 获取父节点菜单

*@paramtreesList 所有树菜单集合

*@return

*/

public final static List getFatherNode(ListtreesList){

List newTrees = new ArrayList();for(TeamOrganizational teamOrganizational : treesList) {if (teamOrganizational.getFatherId()==null) {//如果pId为空,则该节点为父节点//递归获取父节点下的子节点

OrganizationVo newTree = newOrganizationVo();

newTree.setId(teamOrganizational.getId());

newTree.setText(teamOrganizational.getName());

newTree.setTeamId(teamOrganizational.getTeamId());

List treesLists =teamOrganizational.getSonTeamOrganizationals();

List treesUserLists =teamOrganizational.getOaUsers();

newTree.setChildren(getChildrenNode(teamOrganizational.getId(), treesLists,treesUserLists));

newTrees.add(newTree);

}

}returnnewTrees;

}/*** 递归获取子节点下的子节点

*@parampId 父节点的ID

*@paramtreesLists 所有菜单树集合

*@return

*/

private final static List getChildrenNode(Integer pId, List treesLists,ListtreesUserLists) {

List newTrees = new ArrayList();for(TeamOrganizational mt : treesLists) {if (mt.getFatherId() != null) {if (mt.getFatherId() ==pId) {

OrganizationVo newTree= newOrganizationVo();//递归获取子节点下的子节点,即设置树控件中的children

newTree.setChildren(getChildrenNode(mt.getId(), mt.getSonTeamOrganizationals(),treesUserLists));//设置树控件attributes属性的数据

newTree.setId(mt.getId());

newTree.setText(mt.getName());

newTree.setPid(mt.getFatherId());

newTree.setTeamId(mt.getTeamId());

newTree.setSort(mt.getSort());

newTree.setLeader(mt.getLeader());if(mt.getOaUsers().size()>0){

newTree.setChildren(getOaUsers(mt.getOaUsers()));

}

newTrees.add(newTree);

}

}

}if(treesUserLists.size()>0){for(OaUser oaUser:treesUserLists){

OrganizationVo newTree= newOrganizationVo();

newTree.setId(oaUser.getId());

newTree.setText(oaUser.getRealname());

newTrees.add(newTree);

}

}returnnewTrees;

}public static List getOaUsers(ListoaUsers){

List newTrees = new ArrayList();if (oaUsers.size()>0){for(OaUser oaUser:oaUsers){

OrganizationVo newTree= newOrganizationVo();

newTree.setId(oaUser.getId());

newTree.setText(oaUser.getRealname());

newTrees.add(newTree);

}

}else{

}returnnewTrees;

}

}

代码就这么多,主要是运用了递归的思想,因为在你不知道有多少层级的情况下,还是用递归比较方便,虽然循环比递归的速度快,占用内存小,但递归还是有其优势的;

同时,仔细看那两个工具类,第二个工具类比第一个工具类多了添加员工的操作,但是这里就不会使用递归了,因为员工下面不会再有员工了,为什么我会强调这个,因为我先写的是第一个工具类,总想着如何递归,写第二个的时候,人员总是重复添加,好久都找不到原因,后来才忽然想到,员工下面是没有员工的,于是恍然大悟。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值