工作中的部门关系探讨
在做应用开发中,很经常的需要通过登录用户得到用户所属的部门,然后取这部门的所有下级部门,这样就可以用sql里的in这些下级部门来取用户有权限看到的数据。
?
一、对子部门的理解:
? 我们在部门表里一般有两个字段来表示部门:一个是dep_code,另一个字段是parent_dep。dep_code表示部门代码,parent_dep表示这个部门的父部门。
? 这样,我们要取某个部门的下属性部门就可以通过迭代来取得。
? 主要是要注意迭代。因为所用迭代,所以不能单纯地用一个函数开始先设result="",最后返回result的方式,因为每次迭代函数,result都被初始化了。只能把结果存放在类成员里。
?
二、对子部门代码、虚拟部门、共享部门的理解
?讲到子部门,有些业务是这样的。可能两个部门并不存在上下级关系,但是A部门却要看到B部门的数据,这时我们用虚拟部门来说明这种关系。或者A部门的数据要共享给B部门,这时候我们用共享部门来表明这种关系。
? 虚拟部门:没有上下级关系,我们把它们做成上下级关系。如省监控中心与分中心的监控中心是没有上下级关系的,但是省中心监控室要看到分中心的监控数据,这时候需要用到虚拟部门。以省监控中心用户登录,设置虚拟子部门,这时候,省监控中心是virt_dep_code,而设置的虚拟子部门是sub_dep_code。
共享部门:共享部门是02,两个部门没有什么关系,比如路政大队要看监控中心的数据,也没有虚拟的层级关系,这时候用到共享部门。
? 共享部门例子比如:马尾监控中心的数据要让罗长路政大队看到,这时候用14003登录到epub,把罗长路政大队设置为共享部门就可以了。这时候,sub_dep_code马尾监控中心;virt_dep_code是罗长路政大队。是注意的是:这个共享关系是单方向的。
? 为什么代码里取以上两个的sql是相反的,认真想下就会明白。
?
三、代码:
??