OA之审批流程设计

目录

定义

背景

审核的流程

审批主表(sys_approval_flow)

审批明细表(sys_approval_flow_mx)

请假表(sys_vacation)


定义

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

背景

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

审核的流程

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

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

审批主表(sys_approval_flow)

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

审批明细表(sys_approval_flow_mx)

列名称 类型 含义
id varchar(32) 明细表主键
approval_flow_id varchar(32) 审批表主键
user_id varchar(32) 审批人主键
create_time datetime 创建时间
approval_time datetime 审批时间
opinion varchar(20) 审核意见
status char(1) 审核状态(1:审核中;2:等待我审核;3:通过;4:驳回)
opinion varchar(100) 审核意见

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

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

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

请假表(sys_vacation)

列名称 类型 含义
approval_flow_id varchar(32) 审批表主键(关联审批流程主表)
user_id varchar(32) 申请用户主键
create_time datetime 创建时间
reason varchar(50) 请假事由
remark varchar(100) 备注
start_time datetime 请假开始时间
end_time datetime 请假结束时间
time_hours int 请假总时长(小时)

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

我们看一下大概的流程:

  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. 当审核明细数据中有一条审核不通过,则将审核流程主表中的审核状态设置为不通过

好了,今天的O A审核就先讲解到这,欢迎大家留言多交流!

也欢迎大家关点击下方卡片,关注《coder练习生》

你可能感兴趣的:(java,OA系统设计)