OA之审批流程设计

1,146 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第29天,点击查看活动详情

定义

OA(Office Automation)——办公自动化,将现代计算机、通信等技术运用到传统办公方式,进而形成一种新型办公方式。利用西安大话技术,代替办公人员传统的部分手动重复性的业务活动,优质高效的处理办公事务和业务信息,提高工作效率和质量,改善工作环境。

背景

封城休假期间朋友需要搞一个OA的审核流程,出于朋友友情,替朋友设计一个OA审批流程业务表。

审核的流程

他们的业务是按照流程,完成相应的审批人员逐层的进行审批,只有当所有的审核人员全部都通过了,则可以认为这条审批记录是通过的状态。

依据这个流程,进行了表结构的设计,首先分为审批流程主表

审批主表(sys_approval_flow)

列名称类型含义
idvarchar(32)主键,可作为审批编号
titlevarchar(50)标题(王五的请假申请)
typevarchar(20)审批类型(字典表设置code用作区分类型)
user_idvarchar(32)申请人主键
create_timedatetime创建时间
statuschar(1)审核状态(1:待审核;2:通过;3:驳回;4:撤销)

审批明细表(sys_approval_flow_mx)

列名称类型含义
idvarchar(32)明细表主键
approval_flow_idvarchar(32)审批表主键
user_idvarchar(32)审批人主键
create_timedatetime创建时间
approval_timedatetime审批时间
opinionvarchar(20)审核意见
statuschar(1)审核状态(1:审核中;2:等待我审核;3:通过;4:驳回)
opinionvarchar(100)审核意见

这里的明细表的数据,取决于我们申请时所需选填的审批人的数量

这样我们的审批流程的两张主要表就设计好了,接下来我们以请假流程来说明一下,

首先,看一下请假表的设计

请假表(sys_vacation)

列名称类型含义
approval_flow_idvarchar(32)审批表主键(关联审批流程主表)
user_idvarchar(32)申请用户主键
create_timedatetime创建时间
reasonvarchar(50)请假事由
remarkvarchar(100)备注
start_timedatetime请假开始时间
end_timedatetime请假结束时间
time_hoursint请假总时长(小时)

到这里,我们整个OA审批流程的表结构设计完成了,是不是在我们的脑子中有了一个清晰的流程了呢?

我们看一下大概的流程:

  1. 录入当前审批业务数据(请假申请单据的表单),选择好三个审批人(部门主管、经理、人事)
  2. 审批流程主表中插入了1条数据
  3. 审批流程明细表中插入了3条数据
  4. 请假表中插入1条数据
  5. 向第一个审核人发送相关的审批通知信息

上面我们看到了申请的流程,那么接下来我们看一下审核的基本流程和逻辑:

  1. 根据表单数据来判断审核是否同意
  2. 根据approval_flow_id(审批流程主键)、user_id(审批人主键)和status(审批状态:2:等待我审核)的组合条件去sys_approval_flow_mx(审批流程明细表)中查询,当结果为空,则这条单据没有我要审核的或者已经审核通过了,则直接返回。
  3. 如果2中的结果不为空,则说明将当前审核明细中的1条数据的审核状态根据我们的情况配置为通过或者驳回
  4. 当审核明细数据全部为审核通过的时候,则需要将主表状态设置为审核通过
  5. 当审核明细数据中有一条审核不通过,则将审核流程主表中的审核状态设置为不通过

好了,今天的OA审核就先讲解到这,欢迎大家留言多交流,也欢迎大家关注我的公众号coder练习生》