E8-关于矩阵的表

文章讲述了在E8系统中,如何根据部门信息查找分管副总和总经理的角色,并通过SQL查询动态获取抄送人员。在流程归档时,如果部门无分管副总,则抄送给总经理。涉及到的表包括MatrixInfo、MatrixFieldInfo、Matrixtable_6、hrmroles和hrmrolemembers等,通过表间关联实现需求功能。
摘要由CSDN通过智能技术生成

起因

接前一篇文章里提到的需求。E8-有关流程节点的表之间的关联关系_rarenmen的博客-CSDN博客。一个流程,在归档时要抄送给发起人的分管副总,如果当前部门没有分管副总时,抄送给总经理。

经过

换一个思路,根据部门,到我设置的矩阵信息去取分管副总,如果取到的分管副总是空的,那么取总经理角色对应的人员。

按这思路去处理,需要找到一些数据表,首先是我要用的矩阵存在了哪里。里面信息是怎么记的,是首先要搞清楚的。

网传的E8表结构里,没有这部份内容,没关系,如法炮制,跟踪到了表MatrixInfo,这表挺简单的,除了记录了矩阵的名称和描述之外,还有创建日期和创建时间,以及是不是系统矩阵的标识,以及一个自增涨的id。

从命名的类似程度上入手,很容易找到了MatrixFieldInfo表。它是用于记录矩阵的列信息的,结构很容易看懂。

矩阵的表名,从现有数据分析,应该是前缀”Matrixtable_“加上MatrixInfo表里相对应的id。那么看来,想通过矩阵名称去动态调对应的表,在SQL语句里实现不了了,只能指定具体的表名了。

获取当前部门的分管副总
doFieldSQL("select FGFZ from Matrixtable_6 where bumen = '$9331$'")

这里FGFZ存的是部门的分管副总,$9331$是表单里申请部门的控件ID。 

接下来,想办法通过角色取总经理,由于我们只有一个分部,这里直接取“总部”级“总经理”角色对应的人。

这里是找总经理的SQL语句
select    *
from    hrmrolemembers hrm,
        hrmroles hr 
where   hr.id = hrm.roleid and 
        hrm.rolelevel = '2' and
        hr.rolesmark = '总经理'

到这里,所有技术上的问题都清晰了,实现方法就简单了,在表单里放一个人力资源字段,放在创建节点的表单里,并给编辑权限,在字段属性里写如下代码,实现自动计算需要抄送的人员。

doFieldSQL("select case ISNULL(a.FGFZ, '') when '' then b.resourceid else a.FGFZ end from (select FGFZ from Matrixtable_6 where bumen = '$9331$') a right outer join (select hrm.resourceid as resourceid from hrmrolemembers hrm, hrmroles hr where hr.id = hrm.roleid and hrm.rolelevel = '2' and hr.rolesmark = '总经理') b on 1=1")

 在归档步骤就更简单了,设置抄送人直接取这字段里的人员就可以了。

结果

至此,需求实现了,以下是这次处理问题所涉及到的表,具体的表结构,请参看网传的《E8表结构》

MatrixInfo矩阵信息
MatrixFieldInfo矩阵列信息
Matrixtable_X矩阵值信息
hrmroles人力资源角色表
hrmrolemembers人力资源角色成员表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rarenmen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值