通过BOS配置+SQL制作部门树形架构展示原创
金蝶云社区-CQ周玉立
CQ周玉立
19人赞赏了该文章 2112次浏览 未经作者许可,禁止转载编辑于2022年01月11日 10:05:47

image.png

最近遇到需要做部门树形架构展示 的场景,分享一下实现思路:

  1. 根据部门的上下级关系,做成SQL视图,然后将这个视图作为到数据分组的"存储表"。就可以自动生成分组数据,并且是以树形结构展示部门。

  2. 将员工及其主任岗信息做成一个视图,然后新建基础资料,表名绑定这个视图,然后添加数据分组,绑定第1步的部门树形分组视图,就可以实现上图中的【员工花名册】效果。

  3. 如果有其他单据的部门字段需要按树形结构选择部门,则添加数据分组字段,绑定第1步的部门树形分组视图即可。



这里主要分享一下递归查询生成部门树形分组视图的SQL。

这个SQL视图是按照标准的数据分组后台表储结构进行构建的,非常好用。


WITH TEMP    AS 

(SELECT a.FDEPTID,a.FPARENTID,a.FNumber,a.F_ora_YJBM,fullParentID=Cast('.'+Cast(a.FPARENTID AS NVarchar) AS NVarchar)

         FROM   T_BD_Department a   WHERE  a.FDEPTID = 658011/*最顶层部门的内码*/

         UNION ALL

         SELECT b.FDEPTID,b.FPARENTID,b.FNumber,b.F_ora_YJBM,fullParentID=Cast(Cast(a.fullParentID AS NVarchar)+'.'+Cast(b.FPARENTID AS NVarchar) AS NVarchar)

         FROM   TEMP A  

         INNER JOIN T_BD_Department B  ON B.FPARENTID = A.FDEPTID )

SELECT a.FDeptId,a.FParentID,a.FNumber,depL.FName,Replace(a.FullParentID,'.0','') FullPartentID,depL.FFullName

FROM   TEMP  a

inner join T_BD_Department_L depL on depL.FDEPTID=a.FDEPTID and depL.FLocalEid=2052

where a.F_ora_YJBM<>0/*根据实际情况过滤想显示出来的部门*/

order by a.FNumber


赞 19