oa多级审批流程表设计方案(干货满满)(代码片段)

Java知音_ Java知音_     2022-12-12     248

关键词:

点击关注公众号,实用技术文章及时了解

OA(office automation) 想必大家都已不陌生,甚至还非常熟悉,是的没错,本文就来讲解一下OA中的核心业务,审批流程是如何一步步实现的。

本文干货满满,建议静下心来细细品

被审核流程

首先填写好表单相关信息,然后点击审批人,从公司部门树中点击相应部门,加载部门相关角色用户,最后再指定审批人

值得吹嘘的一点是这里的审批人可供用户自行动态选择,并且审批层级也是随着审批人的数量动态增减

以加班表单为例子

指定完成之后,点击提交即可。

然后再由相应的审批人逐级进行审批,当其中有一个不通过,则整个流程不通过,当所有的审批人全部通过才可通过

OK流程已经清楚了,接下来我们来进行表结构的设计

只需要两张核心的审批表即可,其他需要进行审批流的业务表通过审批流编号FlowNo 关联这两张核心业务表,我们来看一下

审批流主表 AuditFlow

这两张表的关系是一对多,明细表的数量取决与表单提交添加的审核人数量

ApproFlow:1 =======> n :ApproFlowDetail

审批流明细表 AuditFlowDetail

如此一来,OA审批流程的两张核心业务表就设计完成了。

那么问题来了,其他相关表呢?

别急,慢慢来嘛。首先用户表肯定是需要的,因为表单申请人和审核人都是关联的用户No,因为用户是根据部门走的,那么还需要设计一张部门表,再设计一张用户和部门相关联的表,把用户和部门联系起来,就可以从部门中选取相应角色。当然简单点的逻辑可以不用部门,直接搜索全部用户,这里就不再设计了哈。

有了用户表和审批业务核心表,接下来就可以根据公司业务需求,来设计相关的审批流程业务表了,这里就拿加班申请来举个例子,当用户需要进行加班的时候,肯定是需要走审批流程的,那么再来设计一张加班申请表

加班表 OverTimeAsk

此时,再回到文章一开始的流程,脑海中的思路是不是就慢慢的浮现出来了呢,嘻嘻

库设计好了,剩下的就是由程序实现完成了,那么问题又来了,如何去实现呢?借助问题,来进行驱动成长,下面就来探讨具体如何实现。

有了以上设计的表做铺垫,就可以为所欲为啦!

填写完加班申请表单,选择部门相关负责审批人,如主管,部门经理,总经理,此时进行表单提交

提交需要进行的操作
  • 录入当前审批业务表,也就是加班申请表的数据

  • 审批流主表插入一条数据

  • 审批流明细表插入三条数据

  • 对添加的第一个审核人发送相关通知消息

注意要点:
  1. 以上三条是同时进行操作,必须要满足事务,否则数据会出现问题

  2. 三条数据插入的FlowNo字段必须是相同的

  3. 插入审批流主表数据的时候,BusType字段的值可以设置为OverTimeAsk,审核状态默认1(待审核)

  4. 插入审批流明细表数据的条数取决与用户提交表单选择的审核人数量,如这里选择了三个审批人,就需要插入三条数据,第一条的审核状态 设为 2(待我审批),其他两条的审核状态设为1(审核中)

  5. 插入加班申请表对月份进行判定,不允许跨月加班

表单提交的操作完成了,下面就开始论到审核操作的流程了

首先,要有一个待我审批的入口,查询出所有待我审核的表单

  • AuditFlow表和AuditFlowDetail表通过FlowNo关联查询

  • 过滤AuditFlow表审核状态为1并且AuditFlowDetail表审核状态为2的数据

    • 也可以根据AuditFlow表的BusType字段进行审批表单的分类

审核操作,基本上分为审核通过和不通过, 当然也可以根据业务自行扩展其他的审核操作。

实现思路与细节如下:
  1. 根据表单提交操作来判断审核是否同意

  2. 根据FlowNoAuditUserNo以及AuditStatus为2(待我审批) 的条件去查询AuditFlowDetail表,如果数据为空,则此单已进行过审核操作,直接返回。

  3. 如果上一条查询的数据不为空,则可以将当前审核明细单数据的审核状态设置为通过or驳回

  4. 如果当前审核明细单的待审核数量大于一,则说明还需要向下一级传递审核,同时将下一级数据的审核状态设置为待我审核,并发送相关通知

  5. 如果当前审核明细单数据全部为审核通过,则将AuditFlow表的审核状态设为通过

  6. 如果当前审核明细单有一条审核不通过,则将AuditFlow表的审核状态设为不通过

实现细节

如果审核同意则,根据FlowNo查询出所有AuditFlowDetail表数据,然后进行过滤,分别统计审核通过和审核不通过的数据条数,并记录第一个审核状态为审核中的数据。此时可根据条件执行上面的第4,5,6条

审核不同意操作大致同上

OK,整个多级审批流程就实现完啦,如果你仔细看完此文,相信你一定会茅塞顿开

当然OA的审批业务远远不止这么一点,还有其他的表单审批,比如工作汇报审批表,还可增加关联的附件表,提交工作内容的同时上传相关文件或者照片存放在服务中,方便审核人随时在线预览或者下载到本地

还可根据业务需求自行扩展相关表单

以上所有表单的审批流程都是围绕基于两张核心业务表来实现。

来源:blog.csdn.net/cslx5zx5/article/details/107566070

推荐

Java面试题宝典

技术内卷群,一起来学习!!

PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点“在看”支持我们吧!

oa多级审批流程表设计方案(干货满满)(代码片段)

点击上方关注“终端研发部”设为“星标”,和你一起掌握更多数据库知识来源:blog.csdn.net/cslx5zx5/article/details/107566070上一篇:面试官:int(1)和int(10)有什么区别?大家好,我是终端研发部的小于哥。OA(offic... 查看详情

oa多级审批流程表设计方案(干货满满)(代码片段)

点击关注公众号,实用技术文章及时了解OA(officeautomation)想必大家都已不陌生,甚至还非常熟悉,是的没错,本文就来讲解一下OA中的核心业务,审批流程是如何一步步实现的。本文干货满满,建议静下心... 查看详情

设计模式@第26章:职责链模式(代码片段)

第26章:职责链模式一、学校OA系统的采购审批项目:需求是采购员采购教学器材如果金额小于等于5000,由教学主任审批(0<=x<=5000)如果金额小于等于10000,由院长审批(5000<x<=10000)如果金额小于等于30000,由副校长审批(10000&l... 查看详情

设计变更管理

...称操作平台1项目部工程师录入设计变更基本信息并发起审批OA2设计部文员选择设计工程师OA3项目设计工程师填写设计单位基本信息OA4项目设计经理录入审批意见OA5项目部工程师录入审批意见OA6采购部文员选择采购相关工程师OA7... 查看详情

企业微信开发oa审批(代码片段)

目录1OA-审批1.1场景描述1.2与审批流程引擎的区别2获取审批模板详情2.1线上调试2.2代码实战2.2.1获取access_token工具类2.2.2错误分析2.2.3获取模版详情2.2.4错误分析3提交审批申请3.1代码实战3.2错误分析3.3提交审批自定义模板中的json值... 查看详情

如何实现oa系统的自定议审批流程的数据库设计

...据用户量和业务情况来分析采取对策。参考技术A自定义审批流程,不需要懂数据库设计。懂得制作表单排版,变量的含义,以及变量的可控设置,还有流程设定。再测试测试,就可以交付了,很简单的。--OA办公软件,电子政务O... 查看详情

javascript的核心语法之变量(绝对详细,干货满满)(代码片段)

JavaScript与其它程序设计一样,也都有着自己独特的语法结构,,主要包含变量、数据类型、运算符号、控制语句和注释等等。变量(三种使用方式) 说明:变量是由于存储数据的基本单位  方式1:... 查看详情

云原生java设计模式8,校验审批流程改善神器,责任链模式(代码片段)

目录一、责任链模式二、责任链模式的优缺点1、优点2、缺点三、违背原则方案1、Programmer实体类2、数据校验3、但是,似乎违反了一些设计原则四、通过责任链模式重构代码1、链路抽象类定义2、校验项目名称3、校验名字4、... 查看详情

干货满满涂鸦智能模组sdk开发系列课程——5.对模组二次开发(代码片段)

上期精彩回顾:Wi-Fi模组二次开发课程——4.烧录授权本章节旨在通过一个简单Demo,使开发者能够了解涂鸦SDK的启动流程,带领开发者基于涂鸦提供的SDK对模组进行二次开发。Demo功能介绍:硬件使用CBUNano板,... 查看详情

spring-aop简介与底层实现机制,干货满满!

高并发架构消息队列搜索引擎缓存分库分表读写分离设计高并发系统高并发架构部分内容缓存:Redis高可用:高并发系统设计:分布式系统分布式业务系统,就是把原来用Java开发的一个大块系统,给拆分成多... 查看详情

mysql最全笔记,快速入门,干货满满,爆肝(代码片段)

目录一、MySQL的重要性二、MySQL介绍三、软件的服务架构四、MySQL的安装五、SQL语句六、数据库相关(DDL)七、表相关八、DML相关(表中数据)九、DQL(重点)十、数据完整性十一、表与表之间的关系一、MyS... 查看详情

c语言编译过程,满满的干货!!!(代码片段)

程序环境和预处理一、程序翻译和运行环境二、预处理详解1.预定义符号2.define定义宏3.#和##的区别4.宏和函数好坏比较5.命名约定6.头文件中<>和""区别7.条件编译一、程序翻译和运行环境翻译环境:在翻译环境中ÿ... 查看详情

o2oa二次开发-使用开源平台搭建完整oa-开发企业报销审批

需求今天以OA系统中的报销审批流程为例来讲一下流程应用管理。首先介绍一下报销流程的需求,主要分为两部分,流程和表单。流程OA的报销流程部分,我们将其分成两种情况:报销金额<=3000元时,审批路径为:【提交报销... 查看详情

javascript核心语法之基本数据类型(绝对详细,满满干货)(代码片段)

数据类型    1.JavaScript中有五种简单的数据类型,被称为基本数据类型,分别是:undefined---未初始化的变量以及未声明的变量null---空类型boolean---true或falsenumber---整数或浮点数string---用双引号来进行声明的字符串  ... 查看详情

杭州黑马java培训多少钱,干货满满(代码片段)

01.第一份资料是图解网络根据读者阅读偏好不同,共出了两个版本风格的PDF,分别是亮白版本和暗黑版本。02.第二份资料是计算机的相关知识看完能让你对计算机有一个基础的了解和入门,是培养你 内核 的基础ÿ... 查看详情

设计模式-行为型-职责链设计模式(代码片段)

...轮出牌,这样一个场景,其实就是职责链模式的原型。2.审批流程:再比如,一个公司的采购单审批流程,如果采购单总价在5万RMB,那么主任审核即可,如果5-10万RMB由副董事长审批,10-50万由董事长审批,>=50万则由董事会审批。... 查看详情

java认识顺序表及常用操作函数(干货满满!!)(代码片段)

目录一、线性表二、什么是顺序表?实现顺序表:三、顺序表的常用操作实现:(1)在pos位置新增元素(2)打印顺序表(4)判定是否包含某个元素(4)查找某个元素对应的位置(5)获取pos位置的元素(5)获取... 查看详情

一位博士在华为的22年(干货满满)(代码片段)

星标/置顶 公众号👇,硬核文章第一时间送达!来源| 心声社区作者| Clayman前几天,我的一个朋友外派迪拜三年多,历经千辛万苦回来深圳,聊了很多有些感慨,分享一篇相关文章。转眼在我厂已经... 查看详情