不同层次组织机构数据分析共享(原)
2009-06-17 09:36
411 查看
场景:集团式架构公司体系,因业务原因各子公司间数据相互独立,集团主管部门可对子公司进行数据监管、统计、分析;
解决办法:采用部门编码权限方式(纯模型,各位看官勿笑,如有好的解决方式请提供)
1、业务数据增加数据维护人员信息。
2、部门增加权限编码,大致方式(父:0001、子一:00010001、子二:00010002)。
3、数据访问根据当前用户所在部门 like 数据维护人员所在部门进行比较。
4、关于父子权限编码问题,涉及部门固有组织形式,所以不采用企业内部编码,对此自己通过后台维护处理。
5、目前采用Oracle中的触发器解决部门权限编码问题。
附两段脚本,分别是Oracle和SQLServer的(俺的新系统框架跨数据库平台哟!):
ORACLE版:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER TRIGGER [TR_TS_DEPARTMENT_BIU] ON [dbo].[TS_DEPARTMENT]
instead of INSERT
as
DECLARE
@P_CHILDCOUNT int,
@P_PARENTRIGHTCODE varchar(126),
@DEPARTMENTID char(20),
@PARENTDEPARTMENTID char(20),
@DEPARTMENTCODE varchar(128),
@DEPARTMENTNAME varchar(128),
@ZIPCODE varchar(32),
@TEL1 varchar(32),
@TEL2 varchar(32),
@FAX varchar(32),
@EMAIL varchar(64),
@ADDRESS varchar(128),
@STOPFLAG char(1),
@PROPERTY varchar(128),
@RIGHTCODE varchar(126),
@LASTUPDATEUSER char(20),
@LASTUPDATETIME datetime,
@REMARKS varchar(128);
BEGIN
--父部门权限号
SELECT @DEPARTMENTID = DEPARTMENTID,
@PARENTDEPARTMENTID =PARENTDEPARTMENTID,
@DEPARTMENTCODE = DEPARTMENTCODE,
@DEPARTMENTNAME = DEPARTMENTNAME,
@ZIPCODE = ZIPCODE,
@TEL1 = TEL1,
@TEL2 = TEL2,
@FAX = FAX,
@EMAIL = EMAIL,
@ADDRESS = ADDRESS,
@STOPFLAG =STOPFLAG,
@PROPERTY = PROPERTY,
@RIGHTCODE =RIGHTCODE,
@LASTUPDATEUSER = LASTUPDATEUSER,
@LASTUPDATETIME = LASTUPDATETIME,
@REMARKS = REMARKS
FROM inserted;
--父部门权限号
SELECT @P_CHILDCOUNT = COUNT(1),
@P_PARENTRIGHTCODE = RIGHTCODE
FROM TS_DEPARTMENT
WHERE TS_DEPARTMENT.PARENTDEPARTMENTID = @PARENTDEPARTMENTID
group by RIGHTCODE;
--当前部门权限号
select @RIGHTCODE = @P_PARENTRIGHTCODE + dbo.LPAD(convert(varchar(128),@P_CHILDCOUNT), 3, '0');
INSERT INTO TS_DEPARTMENT
VALUES
(@DEPARTMENTID,
@PARENTDEPARTMENTID,
@DEPARTMENTCODE,
@DEPARTMENTNAME,
@ZIPCODE,
@TEL1,
@TEL2,
@FAX,
@EMAIL,
@ADDRESS,
@STOPFLAG,
@PROPERTY,
@RIGHTCODE,
@LASTUPDATEUSER,
@LASTUPDATETIME,
@REMARKS);
END;
解决办法:采用部门编码权限方式(纯模型,各位看官勿笑,如有好的解决方式请提供)
1、业务数据增加数据维护人员信息。
2、部门增加权限编码,大致方式(父:0001、子一:00010001、子二:00010002)。
3、数据访问根据当前用户所在部门 like 数据维护人员所在部门进行比较。
4、关于父子权限编码问题,涉及部门固有组织形式,所以不采用企业内部编码,对此自己通过后台维护处理。
5、目前采用Oracle中的触发器解决部门权限编码问题。
附两段脚本,分别是Oracle和SQLServer的(俺的新系统框架跨数据库平台哟!):
ORACLE版:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER TRIGGER [TR_TS_DEPARTMENT_BIU] ON [dbo].[TS_DEPARTMENT]
instead of INSERT
as
DECLARE
@P_CHILDCOUNT int,
@P_PARENTRIGHTCODE varchar(126),
@DEPARTMENTID char(20),
@PARENTDEPARTMENTID char(20),
@DEPARTMENTCODE varchar(128),
@DEPARTMENTNAME varchar(128),
@ZIPCODE varchar(32),
@TEL1 varchar(32),
@TEL2 varchar(32),
@FAX varchar(32),
@EMAIL varchar(64),
@ADDRESS varchar(128),
@STOPFLAG char(1),
@PROPERTY varchar(128),
@RIGHTCODE varchar(126),
@LASTUPDATEUSER char(20),
@LASTUPDATETIME datetime,
@REMARKS varchar(128);
BEGIN
--父部门权限号
SELECT @DEPARTMENTID = DEPARTMENTID,
@PARENTDEPARTMENTID =PARENTDEPARTMENTID,
@DEPARTMENTCODE = DEPARTMENTCODE,
@DEPARTMENTNAME = DEPARTMENTNAME,
@ZIPCODE = ZIPCODE,
@TEL1 = TEL1,
@TEL2 = TEL2,
@FAX = FAX,
@EMAIL = EMAIL,
@ADDRESS = ADDRESS,
@STOPFLAG =STOPFLAG,
@PROPERTY = PROPERTY,
@RIGHTCODE =RIGHTCODE,
@LASTUPDATEUSER = LASTUPDATEUSER,
@LASTUPDATETIME = LASTUPDATETIME,
@REMARKS = REMARKS
FROM inserted;
--父部门权限号
SELECT @P_CHILDCOUNT = COUNT(1),
@P_PARENTRIGHTCODE = RIGHTCODE
FROM TS_DEPARTMENT
WHERE TS_DEPARTMENT.PARENTDEPARTMENTID = @PARENTDEPARTMENTID
group by RIGHTCODE;
--当前部门权限号
select @RIGHTCODE = @P_PARENTRIGHTCODE + dbo.LPAD(convert(varchar(128),@P_CHILDCOUNT), 3, '0');
INSERT INTO TS_DEPARTMENT
VALUES
(@DEPARTMENTID,
@PARENTDEPARTMENTID,
@DEPARTMENTCODE,
@DEPARTMENTNAME,
@ZIPCODE,
@TEL1,
@TEL2,
@FAX,
@EMAIL,
@ADDRESS,
@STOPFLAG,
@PROPERTY,
@RIGHTCODE,
@LASTUPDATEUSER,
@LASTUPDATETIME,
@REMARKS);
END;
相关文章推荐
- 不同层次组织机构数据分析共享
- Web应用同一线程内不同架构层次的数据共享
- Android应用程序组件Content Provider在应用程序之间共享数据的原理分析(3)
- Qt 之 解析wav文件的头信息(详细分析、对比不同wav文件的数据)
- 产品数据分析的三个层次
- js与php对象数组的不同点分析以及怎样应用json数据
- servlet学习笔记2——同一用户的不同页面共享数据
- Android应用程序组件Content Provider的共享数据更新通知机制分析(4)
- 第三学 linux内核中最基本的数据组织方式——list.h分析(1)
- OpenLayers项目分析(四)空间数据的组织与实现
- 第四学 linux内核中最基本的数据组织方式——list.h分析(2)
- Android Content Provider在应用程序之间共享数据的原理分析
- Android Content Provider的共享数据更新通知机制分析
- Tomcat在不同web应用程序中共享数据
- Android应用程序组件Content Provider的共享数据更新通知机制分析
- action里不同方法之间不能共享全局变量的原因分析
- C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 面向全国标准省市县行政数据基础之上的组织机构管理
- SharedPreferences之不同应用的数据共享
- BI系统的应用组织思路与数据分析模式
- [Step By Step]SAP HANA中使用Excel展示分析视图数据(带层次结构)