集深V5报表系统分区域展现数据技术方案.docx_第1页
集深V5报表系统分区域展现数据技术方案.docx_第2页
集深V5报表系统分区域展现数据技术方案.docx_第3页
集深V5报表系统分区域展现数据技术方案.docx_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

集深V5报表系统分区域展现数据技术方案撰写时间:2013-11-02撰写人:李金修订历史:12013-11-03对方案一、二代码部分做详细说明。需求内容:出于数据安全方面的考虑,对于清单类报表数据要求实现按照部门控制所能访问的数据权限。即本部门的工号登录后只能看到本部门的数据。实现方案一:通过角色实现数据权限的控制集深V5中定义乡镇数据权限角色,将相关用户添加到该角色中,利用动态宏,判断session变量“sys_Roles_For_Cached_Resource”(登录用户所属角色,通常一个用户对应多个角色,整数组类型)的值,如属于“乡镇数据权限角色”则限定grid_id为用户所属的部门编码(session变量sys_AuxOrgs为登录用户所属的部门编码),集深系统设置乡镇机构的部门编码时要使用网格系统的网格编码。宏定义如下:if(case(4,sys_Roles_For_Cached_Resource,1)=1 or sys_UserID=root,1=1,grid_id=+sys_AuxOrgs+)代码说明:(此例假定“乡镇数据权限角色”的role_id=4)动态宏实际为字符串,动态宏判断设定的表达式后生成字符串值并作为变量值传给SQL语句中。实现根据用户所属角色不同,设定不同条件展现不同数据的目的。该例中如用户属于角色4,则将1=1传给SQL语句中,实现展现全部数据;如用户不属于角色4,传递grid_id=+sys_AuxOrgs+到SQL语句中,实现展现本部门数据。动态宏定义界面如下:方案一评价:测试初期使用动态宏方式实现了分县区数据的展现,数据要求分乡镇展现后,有如下缺点:1、 需要新定义动态宏,操作略微复杂些。2、 灵活度、扩展度不够好。不同级别的部门编码需要按不同的组织架构体系来定义,如分县区展现数据则3级部门对应的部门编码要定义为部门对应的area_code,分乡镇展现4级部门数据则4级部门对应的部门编码要定义为网格编码,使用这种方式灵活度不高,如新增其他分区域展现数据的口径则不能灵活应对。集深V5系统中的机构编码需要使用多套组织架构体系,不便于维护。3、 不建议使用该方案。实现方案二:数据集中where子句判断用户级别确定展现数据的范围在本地数据库新建组织机构对应关系表BSS.T_AREA_DEPART。该表以BSS系统的部门编码(depart_id)为主线,建立和BSS营业区(area_code)、网格营销系统网格编码(grid_id)、BSS部门归属县区(area_code3)等的对应关系;该表只管理BSS部门编码(depart_id)与其他编码的对应关系,其他编码之间的对应关系不进行直接管理。支持1个BSS部门对应1个或多个网格编码;部门编码(depart_id)为非空字段;depart_id和其他编码的对应要符合实际组织架构体系的逻辑关系。如遇相关系统组织架构调整,该表需手工进行数据的维护管理。集深V5系统的组织机构统一使用BSS系统的部门编码(对应td_m_depart.depart_id字段值)。制作报表时,结合集深V5系统的Session变量(主要是sys_AuxOrgs),在SQL语句中实现根据用户所属部门动态确定取数条件,从而实现4级户头用户只能看到本部门数据,3级户头用户可以看到全县的数据的目的。用户所属的部门级别在表BSS.T_AREA_DEPART.DEPART_LEVEL字段中管理,市、县公司市场销售部如需要看到全市、全县的数据,可以手工将对应部门的部门级别进行修改。部门级别为2时,可看全市数据;部门级别为3时,可看全县数据;部门级别为4-5时只能看本部门的数据。数据集中where子句中添加如下的动态条件判断脚本:(nvl(select depart_level from bss.t_area_depart where depart_id = ?depart_id and validflag =0 and rownum=1),-1) IN (-1,4,5) -判断是否4-5部门:4-5级部门根据网格限定本网格数据(如t_area_depart表中没有该用户的depart_id信息,则满足该条件,不展现任何数据) and a.grid_id in (select grid_id from bss.t_area_depart where depart_id = ?depart_id and validflag =0) or nvl(select depart_level from bss.t_area_depart where depart_id = ?depart_id and validflag =0 and rownum=1),-1) not in (-1,4,5) -判断是否4-5部门:2-3级部门不限定网格 and a.grid_id = a.grid_id)and a.city_code = (CASE WHEN nvl(select depart_level from bss.t_area_depart where depart_id = ?depart_id and validflag =0 and rownum=1),-1) IN (-1,3,4,5) THEN -3-5级部门限定为本部门数据,2级部门看全市数据(如t_area_depart表中没有depart_id信息,则满足该条件,不展现任何数据) (select area_code3 from bss.t_area_depart where depart_id = ?depart_id and validflag =0 and rownum=1) ELSE a.city_code END)代码说明:以限定数据到乡镇级为例,乡镇用户只允许看本乡镇的数据,县区允许看全县的数据,市公司允许看全市的数据。通过city_code和grid_id两个条件相与运算进行判断。4-5级部门用户既限定grid_id也限定city_code;3级用户不限定grid_id,仅限定city_code;2级用户既不限定grid_id也不限定city_code(用grid_id=grid_id and city_code=city_code使用)。“?depart_id”为集深V5系统传递给报表的参数,数值来自session变量sys_AuxOrgs。报表中参数设置如下图(集深V5系统截图):实际使用时可以直接复制该段代码添加到SQL语句的where子句中,根据实际报表中用到的区分数据区域的字段,将粗体标黄部分进行替换即可,其他部分无需修改。特别强调:代码中用到了column_name=column_name的条件,区分数据区域的字段不能有null值,建议null值更新为-1,否则null部分的数据不能展现。)方案二评价:1、 优点:该方案灵活度较高,使用depart_id作为主线,维护depart_id和其他区域编码的对应关系,可以灵活实现对多级部门数据权限的控制(2-5级均可进行数据权限控制)。只需在报表的SQL语句中增加相关代码,代码部分可根据不通的报表需求进行灵活设置。不依赖于动态宏。2、 缺点:表BSS.T_AREA_DEPART需手工进行维护,维护不及时将导致无法准确展现数据。3、 推荐使用该方案。附录:针对方案二进行了BSS部门编码(三级和四级)、网格营销系统网格编码的对应关系的整理;进行了集深V5系统组织架构的导入;数据详见附件excel。2013-11-13调整导入的组织机构的org_id。导入组织机构id后,页面新增组织机构时,org_id字段不会根据最大的增加1。修改导入的机构的org_id,增加50000。以避免页面手工增加机构的org_id与导入的冲突。-导入的机构代码+5000。以避免从界面上新增加的机构与导入的编号重叠update mis2.t_org_patch a set org_id = org_id + 50000 where org_id = 10013;commit; -211update mis2.t_org a set org_id = org_id + 50000 where org_id = 10013;commit; -211update mis2.t_org a set org_fatherid = org_fatherid + 50000 where org_fatherid = 10013;commit; -158update mis2.t_org a set org_path = replace(org_path,9999,10001,1,9999,10001,6) where org_path not in (9999,10001

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论