JEPaaS 社区

 找回密码
 立即注册
JECloud低代码平台-官网
查看: 2456|回复: 1

【树形字典系列】如何在后台通过几张表格拼接出树形字典

[复制链接]

75

主题

77

帖子

355

积分

中级会员

Rank: 3Rank: 3

积分
355
发表于 2021-8-31 11:11:01 | 显示全部楼层 |阅读模式
本帖最后由 guoguo 于 2021-8-31 11:15 编辑

一、实现效果
如图1所示,通过几张普通表拼接成树形表。:

1.png
二、实现思路
1、创建数据字典
2、后台拼接该字典
三、具体操作
1、创建树形数据字典,选择自定义,只需要写明java bean的名称和方法名即可,如图2:
2.png

2、如图3所示,代码分析如下:
3.png

1)树形数据字典要求返回的是JSONTreeNode类型。
2)参数固定是DicInfoVo的格式,前端会将参数传过来,并封装到java该类中。
3)取出所有基础数据
4)将取出的普通数据拼接成可树形模式的数据加入到主数据中
3、如图4,代码分析如下:
4.png

1)获取根节点数据集合
2)定义一个集合,用来存放根节点信息
3)循环根节点,并且封装根节点以下节点
4)把根节点放入集合中
四、相关代码(可选)
  1. @Component("dictXmsService")
  2. public class DictXmsServiceImpl implements DictXmsService {

  3.     @Autowired
  4.     private PCDynaServiceTemplate serviceTemplate;

  5.     @Override
  6.     public JSONTreeNode getDictXmsTree(DicInfoVo dicInfoVo) {
  7.         JSONTreeNode rootNode = TreeUtil.buildRootNode();
  8.         EndUser currentUser = SecurityUserHolder.getCurrentUser();
  9.         //获取自定义字典表中数据集合,主数据树
  10.         List<DynaBean> zhjDynaBeanList = serviceTemplate.selectList("BFSY_BASE_XM", "AND 1 = 1 AND INSTR((SELECT JDGSINFO_JGGS_ID FROM JE_CORE_JDGSINFO WHERE JE_CORE_YWCJ_ID='rMHNXUwdwZ1G102goeK' AND JDGSINFO_TYPE_CODE='SHOW' AND JDGSINFO_JGGS_ID IS NOT NULL AND JDGSINFO_JGGS_ID!='' AND SY_JTGSID = '"+currentUser.getJtgsId()+"'),SY_JTGSID)>0 order by SY_ORDERINDEX");
  11.         //AND INSTR((SELECT JDGSINFO_JGGS_ID FROM JE_CORE_JDGSINFO WHERE JE_CORE_YWCJ_ID='rMHNXUwdwZ1G102goeK' AND JDGSINFO_TYPE_CODE='SHOW' AND JDGSINFO_JGGS_ID IS NOT NULL AND JDGSINFO_JGGS_ID!='' AND SY_JTGSID = currentUser.getJtgsId()),SY_JTGSID)>0
  12.         //获取区域数据集合
  13.         List<DynaBean> qyDynaBeanList = serviceTemplate.selectList("BFSY_XS_QY", "AND BFSY_XS_QY_ID != 'ROOT' order by QY_CODE");
  14.         //获取栋楼数据集合
  15.         List<DynaBean> dlDynaBeanList = serviceTemplate.selectList("BFSY_XS_LD", "AND 1 = 1 order by LD_CODE");
  16.         //获取单元数据集合
  17.         List<DynaBean> dyDynaBeanList = serviceTemplate.selectList("BFSY_XS_DY", "AND 1 = 1 order by DY_NUMBER");
  18.         for(DynaBean zhj : zhjDynaBeanList){
  19.             zhj.set("nodeInfo", "SY_XMID");                                  //点左侧项目树查询功能查询字段
  20.         }
  21.         //区域数据加入主数据
  22.         for(DynaBean qy : qyDynaBeanList){
  23.             DynaBean bean = new DynaBean("BFSY_BASE_XM", true);
  24.             bean.set("BFSY_BASE_XM_ID", qy.getStr("BFSY_XS_QY_ID"));    //主键赋值
  25.             bean.set("SY_PARENT", qy.getStr("SY_XMID"));                //父节点赋值
  26.             bean.set("XM_XMBM", qy.getStr("QY_CODE"));                //区域编码
  27.             bean.set("XM_NAME", qy.getStr("QY_NAME"));                //区域名称
  28.             bean.set("nodeInfo", "QY_ID");                                  //点左侧项目树查询功能查询字段
  29.             zhjDynaBeanList.add(bean);
  30.         }
  31.         //栋楼数据加入主数据
  32.         for(DynaBean dl : dlDynaBeanList){
  33.             DynaBean bean = new DynaBean("BFSY_BASE_XM", true);
  34.             bean.set("BFSY_BASE_XM_ID", dl.getStr("BFSY_XS_LD_ID"));    //主键赋值
  35.             bean.set("SY_PARENT", dl.getStr("QY_ID"));                //父节点赋值
  36.             bean.set("XM_XMBM", dl.getStr("LD_CODE"));                //栋楼编码
  37.             bean.set("XM_NAME", dl.getStr("LD_NAME"));                //栋楼名称
  38.             bean.set("nodeInfo", "LD_ID");                                  //点左侧项目树查询功能查询字段
  39.             zhjDynaBeanList.add(bean);
  40.         }
  41.         //单元数据加入主数据
  42.         for(DynaBean dy : dyDynaBeanList){
  43.             DynaBean bean = new DynaBean("BFSY_BASE_XM", true);
  44.             bean.set("BFSY_BASE_XM_ID", dy.getStr("BFSY_XS_DY_ID"));    //主键赋值
  45.             bean.set("SY_PARENT", dy.getStr("LD_ID"));                //父节点赋值
  46.             bean.set("XM_XMBM", dy.getStr("DY_CODE"));                //栋楼编码
  47.             bean.set("XM_NAME", dy.getStr("DY_NAME"));                //栋楼名称
  48.             bean.set("nodeInfo", "DY_ID");                                  //点左侧项目树查询功能查询字段
  49.             zhjDynaBeanList.add(bean);
  50.         }
  51.         //获取根节点数据集合
  52.         List<DynaBean> dynaBeanNodeList = this.getRootNode(zhjDynaBeanList);
  53.         //定义一个集合,用来存放根节点信息
  54.         List<JSONTreeNode> childrenList = new ArrayList<>();
  55.         //循环根节点,并且封装根节点以下节点
  56.         for(DynaBean dynaBean : dynaBeanNodeList){
  57.             JSONTreeNode node = TreeUtil.buildRootNode();
  58.             node.setId((String)dynaBean.get("XM_XMBM"));//主键ID
  59.             node.setCode((String)dynaBean.get("BFSY_BASE_XM_ID"));//编码
  60.             node.setText((String)dynaBean.get("XM_NAME"));//名称
  61.             node.setParent((String)dynaBean.get("SY_PARENT"));//父节点信息
  62.             node.setNodeInfo((String)dynaBean.get("nodeInfo"));//左侧项目树查询字段
  63.             node.setIcon("fe icon-book-alt");//图标自己看着定义
  64.             //看是否有下级节点
  65.             buildChilNode(node, zhjDynaBeanList);
  66.             childrenList.add(node);
  67.         }
  68.         //把根节点放入集合中
  69.         rootNode.setChildren(childrenList);
  70.         rootNode.setText("项目");
  71.         rootNode.setNodeInfo("SY_XMID");
  72.         return rootNode;
  73.     }
复制代码

五、总结(可选)
可以任意拼接自己的项目树,只要按照上面的模板即可。
六、关键字

查询树,树形字典,左侧查询树,树形拼接

回复

使用道具 举报

0

主题

1

帖子

17

积分

新手上路

Rank: 1

积分
17
发表于 2023-8-18 19:16:37 | 显示全部楼层
前端怎么传参数
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|JEPaaS 低代码平台社区 ( 京ICP备18023569号 )

GMT+8, 2024-2-25 13:48 , Processed in 0.059490 second(s), 23 queries .

Powered by 北京凯特伟业科技有限公司

Copyright © 2001-2021, JEPaaS.COM

快速回复 返回顶部 返回列表