OA多级审批流程表设计方案以及开发思路(非常细节)
OA(office automation) 想必大家都已不陌生,甚至还非常熟悉,是的没错,本文就来讲解一下OA中的核心业务,审批流程是如何一步步实现的。
本文干货满满,建议静下心来细细品
被审核流程
首先填写好表单相关信息,然后点击审批人,从公司部门树中点击相应部门,加载部门相关角色用户,最后再指定审批人
值得吹嘘的一点是这里的审批人可供用户自行动态选择,并且审批层级也是随着审批人的数量动态增减
以加班表单为例子
指定完成之后,点击提交即可。
然后再由相应的审批人逐级进行审批,当其中有一个不通过,则整个流程不
通过,当所有的审批人全部通过才可通过
OK流程已经清楚了,接下来我们来进行表结构的设计
只需要两张核心的审批表即可,其他需要进行审批流的业务表通过审批流编号FlowNo 关联这两张核心业务表,我们来看一下
审批流主表 AuditFlow
Column Name | Data Type | Describe |
---|---|---|
FlowNo | Varchar(50) not null primary key | 审批编号返回yyyMMddHHmm+n位随机数 |
Title | Nvarchar(50) not null | 标题(例如:某某人的加班申请) |
BusType | Varchar(20) not null | 审批类型(根据业务表定义Code,区分表单) |
AddUserNo | Datetime not null | 申请人 |
AddTime | Varchar(50) not null | 添加时间 |
ApproStatus | Int not null | 审核状态(1.待审,2.通过.3.驳回,4.撤销) |
这两张表的关系是一对多,明细表的数量取决与表单提交添加的审核人数量
ApproFlow:1 =======> n :ApproFlowDetail
审批流明细表 AuditFlowDetail
Column Name | Data Type | Describe |
---|---|---|
ID | Int not null primary key identity(1,1) | 主键自增列 |
FlowNo | Varchar(50) not null | 审批编号,关联主表 |
AuditUserNo | Varchar(50) not null | 审核人 |
AuditRemark | Nvarchar(500) | 审核备注 |
AuditTime | Datetime | 审核时间 |
AuditStatus | Int not null | 审核状态(1.审核中,2.待我审批.3.通过,4.驳回) |
如此一来,OA审批流程的两张核心业务表就设计完成了.
那么问题来了,其他相关表呢?
别急,慢慢来嘛。首先用户表肯定是需要的,因为表单申请人和审核人都是关联的用户No,因为用户是根据部门走的,那么还需要设计一张部门表,再设计一张用户和部门相关联的表,把用户和部门联系起来,就可以从部门中选取相应角色。当然简单点的逻辑可以不用部门,直接搜索全部用户,这里就不再设计了哈。
有了用户表和审批业务核心表,接下来就可以根据公司业务需求,来设计相关的审批流程业务表了,这里就拿加班申请来举个例子,当用户需要进行加班的时候,肯定是需要走审批流程的,那么再来设计一张加班申请表
加班表 OverTimeAsk
Column Name | Data Type | Describe |
---|---|---|
FlowNo | Varchar(50) not null primary key | 关联AuditFlow表 |
AddUserNo | Varchar(20) not null | 添加用户No |
AddTime | Datetime not null | 添加时间 |
AskReason | Nvarchar(50) not null | 加班事由 |
Remark | Nvarchar(100) | 备注 |
LeaveTimeFrom | Datetime not null | 加班开始时间 |
LeaveTimeTo | Datetime not null | 加班结束时间 |
OverTimeHours | decimal(10,2) | 加班总小时 |
此时,再回到文章一开始的流程,脑海中的思路是不是就慢慢的浮现出来了呢,嘻嘻
库设计好了,剩下的就是由程序实现完成了,那么问题又来了,如何去实现呢?借助问题,来进行驱动成长,下面就来探讨具体如何实现.
有了以上设计的表做铺垫,就可以为所欲为啦!
填写完加班申请表单,选择部门相关负责审批人
如主管,部门经理,总经理,此时进行表单提交
提交需要进行的操作
- 录入当前审批业务表,也就是加班申请表的数据
- 审批流主表插入一条数据
- 审批流明细表插入三条数据
- 对添加的第一个审核人发送相关通知消息
注意要点:
1.以上三条是同时进行操作,必须要满足事务,否则数据会出现问题
2.三条数据插入的FlowNo字段必须是相同的
3.插入审批流主表数据的时候,BusType字段的值可以设置为OverTimeAsk,审核状态默认1(待审核)
4.插入审批流明细表数据的条数取决与用户提交表单选择的审核人数量,如这里选择了三个审批人,就需要插入三条数据,第一条的审核状态 设为 2(待我审批),其他两条的审核状态设为1(审核中)
5.插入加班申请表对月份进行判定,不允许跨月加班
表单提交的操作完成了,下面就开始论到审核操作的流程了
首先,要有一个待我审批的入口,查询出所有待我审核的表单
将AuditFlow表和AuditFlowDetail表通过FlowNo关联查询
过滤AuditFlow表审核状态为1并且AuditFlowDetail表审核状态为2的数据
也可以根据AuditFlow表的BusType字段进行审批表单的分类
审核操作,基本上分为审核通过和不通过, 当然也可以根据业务自行扩展其他的审核操作。
实现思路与细节如下:
- 根据表单提交操作来判断审核是否同意
- 根据FlowNo和AuditUserNo以及AuditStatus为2(待我审批) 的条件去查询AuditFlowDetail表,如果数据为空,则此单已进行过审核操作,直接返回.
- 如果上一条查询的数据不为空,则可以将当前审核明细单数据的审核状态设置为通过or驳回
- 如果当前审核明细单的待审核数量大于一,则说明还需要向下一级传递审核,同时将下一级数据的审核状态设置为待我审核,并发送相关通知
- 如果当前审核明细单数据全部为审核通过,则将AuditFlow表的审核状态设为通过
- 如果当前审核明细单有一条审核不通过,则将AuditFlow表的审核状态设为不通过
实现细节
如果审核同意则,根据FlowNo查询出所有AuditFlowDetail表数据,然后进行过滤,分别统计审核通过和审核不通过的数据条数,并记录第一个审核状态为审核中的数据.此时可根据条件执行上面的第4,5,6条
审核不同意操作大致同上
OK,整个多级审批流程就实现完啦,如果你仔细看完此文,相信你一定会茅塞顿开
当然OA的审批业务远远不止这么一点,还有其他的表单审批,比如工作汇报审批表,还可增加关联的附件表,提交工作内容的同时上传相关文件或者照片存放在服务中,方便审核人随时在线预览或者下载到本地
还可根据业务需求自行扩展相关表单
以上所有表单的审批流程都是围绕基于两张核心业务表来实现.
如果有其他问题,欢迎留言咨询,不定期更新
OA多级审批流程表设计方案以及开发思路(非常细节)相关推荐
- Java项目(一)--MyBatis实现OA系统项目实战(7)--开发多级审批流程
开发多级审批流程 请假流程 设计约束 每一个请假单对应一个审批流程. 请假单创建后,按业务规则生成部门经理.总经理审批任务. 审批任务的经办人只能审批自己辖区内的请假申请. 所有审批任务"通 ...
- 使用O2OA二次开发搭建企业办公平台(十三)流程开发篇:报销审批流程表单开发...
本博客为O2OA系列教程.O2OA使用手册,教程目录和各章节天梯将在连载完后更新. 使用O2OA二次开发搭建企业办公平台(一)平台部署篇:平台下载和部署 使用O2OA二次开发搭建企业办公平台(二)平台 ...
- 使用O2OA二次开发搭建企业办公平台(十三)流程开发篇:报销审批流程表单开发
本博客为O2OA系列教程.O2OA使用手册,教程目录和各章节天梯将在连载完后更新. 使用O2OA二次开发搭建企业办公平台(一)平台部署篇:平台下载和部署 使用O2OA二次开发搭建企业办公平台(二)平台 ...
- 自定义审批流程表设计
我想开发一个OA的自定义审批流程,但对表的设计感觉怎么也设不好,好像达不到想要的效果. 我把表设计贴出来,大家帮忙看看,给点好建议. 流程模块表,我会在后台手动建立,就是那个表的资料要进来审批,那就要 ...
- mysql简化的审批流程表设计
审批配置表(approval_config) 字段名称 类型 长度 约束 备注 code varchar 64 ...
- 审批流程表设计-简单易用
审批配置表(approval_config) 字段名称 类型 长度 约束 备注 code varchar 64 not null 审批流程code type tinyint 1 not null 审批 ...
- java多级审批流程_[SharePoint 工作流] 如何设计一个通用的多级多审核工作流程(三):工作流开发...
在上2篇博客中,我们有了工作流定义的列表,也有了关联表单和启动表单,现在就是开始开发这个通用工作流的时刻了. 工作流的基本构成就是:一个While循环控制工作流的运转,While里的Task Repl ...
- 使用O2OA二次开发搭建企业办公平台(十五)流程开发篇:创建报销审批流程
本博客为O2OA系列教程.O2OA使用手册,教程目录和各章节天梯将在连载完后更新. 使用O2OA二次开发搭建企业办公平台(一)平台部署篇:平台下载和部署 使用O2OA二次开发搭建企业办公平台(二)平台 ...
- 如何在OA系统中设定审批流程(一)固定流程
在OA系统中,我们公司很多事情的审批流程都是固定的,并且不允许随意更改,能不能让每个人在发起申请的时候自动调用这个流程呢?制定好的入职手续老是不能严格地执行,技术人员都工作一周了人事部门才得到信息,怎 ...
- 使用O2OA二次开发搭建企业办公平台(十二)流程开发篇:报销审批流程需求和应用创建
本博客为O2OA系列教程.O2OA使用手册,教程目录和各章节天梯将在连载完后更新. 使用O2OA二次开发搭建企业办公平台(一)平台部署篇:平台下载和部署 使用O2OA二次开发搭建企业办公平台(二)平台 ...
最新文章
- SublineText 3 安装 Package Control插件
- 注册窗口类RegisterClassEx AfxRegisterWndClass
- Navicat 9如何连接ORACLE10G数据库
- java两字符串是否相等_Java与JavaScript中判断两字符串是否相等的区别
- 一些Setup Factory 教程的链接
- 解决sodu echo写入文件是权限不足-bash: test.txt: Permission denied
- ?php echo $this_php如何使用echo输出常量+变量?
- 项目管理实践之版本控制工具SVN
- iOS图形学(四):iOS中的绘图框架
- unity--newtonsoft.json解析
- 仿某云宝一元云购系统网站源码v1.0
- 大厂面试|字节跳动面试题汇总
- android微信支付跳转逻辑,Android对接微信支付
- 网站使用手机相机_孩子拿手机是在上课,还是玩游戏、看不良网站?4招查看使用记录...
- 电商api、地图api、视频api、音乐api等各类接口合集,或许对你有用
- 从输入url到页面加载完成中间都发生了什么?
- androidnbsp;关机闹钟
- flask_session中配置项SESSION_PERMANENT 时候会自动刷新过期时间
- Google操作系统基于Chrome?!
- linux学习——linux中文件属主、属组是什么意思
热门文章
- oracle如何修改redo,修改oracle redo
- 使用计算机能播放音乐也能观看视频,我电脑可以放歌有声音。怎么播放视频没声音啊?给我解决方案...
- postman导入postman_collection文件
- 提醒后来人:钉钉里面的钉盘一定不要用,坑
- windows10上配置pyspark工作环境
- C语言加油站程序,C语言解决 加油站问题
- AI新技术:利用神经网络对图片进行超级压缩
- C语言每日一练——第74天:黑与白问题
- 用ftp上传服务器文件大小,ftp服务器上传文件大小
- 35、T5L 迪文屏C51开发之音频播放