普通下拉框改造成下拉树的部门解决方案

1. 由于树结构中分为叶子节点和非叶子节点。如果在代码中处理是否有孩子,处理起来效率很低。最终发现一个比较好的解决方案:把判断是否有孩子工作放到查询语句中。如下
select *,
	(select 
    	count(child.id) 
    from 
    	bug_srs child 
    where 
    	child.f_id = par.id
    ) as childCount 
from 
	bug_srs par 
where 
    par.f_id=0

在查询节点信息的时候同步把孩子个数也查询出来,可以作为是否是叶子节点的判断。


2. 在数据迁移方面,目前情况是这个树结构信息已经存在在另外的一张表之中,二当前的表结构由不支持树型数据。如下图:
旧表结构:

要导入的数据表结构:



注: srs 对应 module的数据

由于旧数据也要保持,而导入的新数据id和旧数据的id将不一样,导致f_id无法正常匹配。
可以通过下面的方法来正常导入:
1. 在为旧表添加f_id 列的时候同步添加一个tempid列



2. 使用导入工具的时候,记得把id 匹配到tempid上

普通下拉框改造成下拉树的部门解决方案

3. 数据导入后,在通过sql语句修订f_id
update bug_srs
set
	bug_srs.f_id = (select srs2.id from bug_srs srs2 where bug_srs.f_id = srs2.tempid)
where bug_srs.f_id != 0 and bug_srs.f_id is not null


4. 验证下数据就ok了

你可能感兴趣的:(解决方案)