|
本帖最后由 guoguo 于 2021-8-31 11:15 编辑
一、实现效果
如图1所示,通过几张普通表拼接成树形表。:
二、实现思路
1、创建数据字典
2、后台拼接该字典
三、具体操作
1、创建树形数据字典,选择自定义,只需要写明java bean的名称和方法名即可,如图2:
2、如图3所示,代码分析如下:
1)树形数据字典要求返回的是JSONTreeNode类型。
2)参数固定是DicInfoVo的格式,前端会将参数传过来,并封装到java该类中。
3)取出所有基础数据
4)将取出的普通数据拼接成可树形模式的数据加入到主数据中
3、如图4,代码分析如下:
1)获取根节点数据集合
2)定义一个集合,用来存放根节点信息
3)循环根节点,并且封装根节点以下节点
4)把根节点放入集合中
四、相关代码(可选)
- @Component("dictXmsService")
- public class DictXmsServiceImpl implements DictXmsService {
- @Autowired
- private PCDynaServiceTemplate serviceTemplate;
- @Override
- public JSONTreeNode getDictXmsTree(DicInfoVo dicInfoVo) {
- JSONTreeNode rootNode = TreeUtil.buildRootNode();
- EndUser currentUser = SecurityUserHolder.getCurrentUser();
- //获取自定义字典表中数据集合,主数据树
- 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");
- //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
- //获取区域数据集合
- List<DynaBean> qyDynaBeanList = serviceTemplate.selectList("BFSY_XS_QY", "AND BFSY_XS_QY_ID != 'ROOT' order by QY_CODE");
- //获取栋楼数据集合
- List<DynaBean> dlDynaBeanList = serviceTemplate.selectList("BFSY_XS_LD", "AND 1 = 1 order by LD_CODE");
- //获取单元数据集合
- List<DynaBean> dyDynaBeanList = serviceTemplate.selectList("BFSY_XS_DY", "AND 1 = 1 order by DY_NUMBER");
- for(DynaBean zhj : zhjDynaBeanList){
- zhj.set("nodeInfo", "SY_XMID"); //点左侧项目树查询功能查询字段
- }
- //区域数据加入主数据
- for(DynaBean qy : qyDynaBeanList){
- DynaBean bean = new DynaBean("BFSY_BASE_XM", true);
- bean.set("BFSY_BASE_XM_ID", qy.getStr("BFSY_XS_QY_ID")); //主键赋值
- bean.set("SY_PARENT", qy.getStr("SY_XMID")); //父节点赋值
- bean.set("XM_XMBM", qy.getStr("QY_CODE")); //区域编码
- bean.set("XM_NAME", qy.getStr("QY_NAME")); //区域名称
- bean.set("nodeInfo", "QY_ID"); //点左侧项目树查询功能查询字段
- zhjDynaBeanList.add(bean);
- }
- //栋楼数据加入主数据
- for(DynaBean dl : dlDynaBeanList){
- DynaBean bean = new DynaBean("BFSY_BASE_XM", true);
- bean.set("BFSY_BASE_XM_ID", dl.getStr("BFSY_XS_LD_ID")); //主键赋值
- bean.set("SY_PARENT", dl.getStr("QY_ID")); //父节点赋值
- bean.set("XM_XMBM", dl.getStr("LD_CODE")); //栋楼编码
- bean.set("XM_NAME", dl.getStr("LD_NAME")); //栋楼名称
- bean.set("nodeInfo", "LD_ID"); //点左侧项目树查询功能查询字段
- zhjDynaBeanList.add(bean);
- }
- //单元数据加入主数据
- for(DynaBean dy : dyDynaBeanList){
- DynaBean bean = new DynaBean("BFSY_BASE_XM", true);
- bean.set("BFSY_BASE_XM_ID", dy.getStr("BFSY_XS_DY_ID")); //主键赋值
- bean.set("SY_PARENT", dy.getStr("LD_ID")); //父节点赋值
- bean.set("XM_XMBM", dy.getStr("DY_CODE")); //栋楼编码
- bean.set("XM_NAME", dy.getStr("DY_NAME")); //栋楼名称
- bean.set("nodeInfo", "DY_ID"); //点左侧项目树查询功能查询字段
- zhjDynaBeanList.add(bean);
- }
- //获取根节点数据集合
- List<DynaBean> dynaBeanNodeList = this.getRootNode(zhjDynaBeanList);
- //定义一个集合,用来存放根节点信息
- List<JSONTreeNode> childrenList = new ArrayList<>();
- //循环根节点,并且封装根节点以下节点
- for(DynaBean dynaBean : dynaBeanNodeList){
- JSONTreeNode node = TreeUtil.buildRootNode();
- node.setId((String)dynaBean.get("XM_XMBM"));//主键ID
- node.setCode((String)dynaBean.get("BFSY_BASE_XM_ID"));//编码
- node.setText((String)dynaBean.get("XM_NAME"));//名称
- node.setParent((String)dynaBean.get("SY_PARENT"));//父节点信息
- node.setNodeInfo((String)dynaBean.get("nodeInfo"));//左侧项目树查询字段
- node.setIcon("fe icon-book-alt");//图标自己看着定义
- //看是否有下级节点
- buildChilNode(node, zhjDynaBeanList);
- childrenList.add(node);
- }
- //把根节点放入集合中
- rootNode.setChildren(childrenList);
- rootNode.setText("项目");
- rootNode.setNodeInfo("SY_XMID");
- return rootNode;
- }
复制代码
五、总结(可选)
可以任意拼接自己的项目树,只要按照上面的模板即可。
六、关键字
查询树,树形字典,左侧查询树,树形拼接
|
|