需求描述:
在通讯录开发中,上级组织菜单可以展示本级及一下多部门的用户信息,用户信息列表排序先按照组织排序再按照人员排序,但是组织中设置的排序字段只针对同级组织。
XXX公司 1
AA部门 1
AA1小组 1
AA2小组 2
AA3小组 3
BB部门 2
BB1小组 1
BB2小组 2
BB3小组 3
CC部门 3
CC1小组 1
CC2小组 2
CC3小组 3
需求分析:
- 点击AA2只展示AA2小组中的用户
- 点击AA部门展示AA部门、AA1小组 、AA2小组 、AA3小组 中的用户
排序:AA部门 > AA1小组 > AA2小组 > AA3小组
- 点击XXX公司展示单位所有用户
排序:XXX公司 > AA部门 > AA1小组 > AA2小组 > AA3小组 > BB部门 > BB1小组 > BB2小组 > BB3小组> CC部门 > CC1小组 > CC2小组 > CC3小组
解决方案:
更具排序字段生成组织树路径path,最后更具path排序,但是path排序为字符串比较,所哟排序要固定长度例如:0001,0002等。
高位补0发:
select lpad(sn,4,'0') as sn from table
生成路径:
select sys_connect_by_path(sn,'/') path
from (select lpad(sn,4,'0') as sn from table)
connect by prior id=orgsupid start with id = '100'