在最近的业务系统中,碰到了这样的需求:
客户方有自己的用户编码方式,并且某种编码表示某个岗位,
GGYH001........GGYH100 高管级
BMJL001........BMJL100 部门经理级
PTYH001........PTYH100 普通用户级
一般系统是有一个组织结构树,然后用工号或者姓名登陆,所有的业务表单就保存用户ID,如果能操作某项业务就通过权限系统赋予他这种业务的权限,如果离职,这个号就不使用了。这样他处理过的表单保存的就是他的名字。
客户的想法是,公司的某个人换了岗位,那么办理交接,交出以前的岗位号,领用新的岗位号,有一张岗位变动表,但是这样造成的问题很复杂,业务表单的用户肯定还是要显示姓名,因为姓名是最直观的。但是在表的设计中就有问题了,是保存岗位号,然后根据表单的保存时间检索姓名?还是直接保存姓名?请大家从下面的问题角度给予分析。
1、如果保存岗位号,统计某人的工作时,不好统计。
2、某业务需要选择多人(比如5人)时,其中3个在保存前后都有换岗的情况,表如何保存?
3、某流程进行一半,换岗,新人对于以前和接下来的流程如何执行?
4、某个表单页面的编辑页面有个控件(比如dropdownlist)绑定当前登录人姓名,那么换岗后,后来人看这个页面时这个控件不是显示成自己了么?要解决这个,只能是编辑页面和显示页面是不同的页面。
还有很多想不清楚。........................................................
------解决方案--------------------------------------------------------
用户ID和用户工号不能混淆,在系统中用户ID是唯一的与姓名直接绑定,用户离职ID失效。用户工号作为权限判断使用对于用户是可变的。用户登录通过用户id获取其姓名。统计工作量按照用户id和时间统计。
大致的表结构如下:
用户表
用户ID,姓名,用户现工号,建立(或更新)时间。
用户变更表
用户ID,用户原工号,用户新工号,变更时间。
用户权限表
用户工号,业务内容,操作权限。
业务单表
业务单号,内容,建立时间,状态。
业务单处理角色类型
角色类型id,角色类型说明(包含新建者,交出者,接手者,审批者,执行者,监督者等键值)。
业务单流转表
业务单号,用户id,角色类型id,流转方式id,时间。
业务单流转方式表
流转方式id,流转方式说明(包含新建,交出,接手,审批,执行,监督等键值)
------解决方案--------------------------------------------------------
等LS的,相对于对系统而言的内部代码,是永远不变的。另外,如果可以说服客户,员工的工号不变也是可行的。