多人审批功能简单实现
文章目录
- 前言
- 一、数据库设计
- 2.实现逻辑
前言
多人审批功能简单实现
一、数据库设计
流程表
CREATE TABLE `system_flow` (`id` int NOT NULL AUTO_INCREMENT,`name` varchar(50) DEFAULT NULL,`active` int DEFAULT '1',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
节点表
CREATE TABLE `system_node` (`id` int NOT NULL AUTO_INCREMENT,`fid` int DEFAULT NULL,`name` varchar(255) DEFAULT NULL,`active` int DEFAULT '1',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10003 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
连接节点表
CREATE TABLE `system_link` (`id` int NOT NULL AUTO_INCREMENT,`fid` int DEFAULT NULL,`name` varchar(255) DEFAULT NULL,`preNode` int DEFAULT NULL,`nextNode` int DEFAULT NULL,`active` int DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10004 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
审批人表
CREATE TABLE `system_approver` (`id` int NOT NULL AUTO_INCREMENT,`fid` int DEFAULT NULL,`node` int DEFAULT NULL,`userId` int DEFAULT NULL,`active` int DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10003 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
业务测试表
CREATE TABLE `test_business` (`id` int NOT NULL AUTO_INCREMENT,`name` varchar(255) DEFAULT NULL,`state` char(1) DEFAULT NULL,`active` int DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10004 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
业务流程关联表
CREATE TABLE `test_flow_business` (`id` int NOT NULL AUTO_INCREMENT,`fid` int DEFAULT NULL,`busId` int DEFAULT NULL,`node` int DEFAULT NULL,`userId` int DEFAULT NULL,`active` varchar(255) DEFAULT NULL,`state` char(1) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10006 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
2.实现逻辑
新增接口,增加业务表数据,以及关联表数据,根据上图链路表获取初始节点及审批人更新到业务流程关联表
//TestBusinessEntity save = testBusinessService.save(testBusiness);Integer fid = getIntegerParam("fid");TestFlowBusinessEntity testFlowBusinessEntity = new TestFlowBusinessEntity();testFlowBusinessEntity.setFid(fid);//获取下一节点Integer preNode = 0;Integer nextNode = systemLinkService.getNextNode(fid,preNode);testFlowBusinessEntity.setNode(nextNode);//根据流程与节点获取审批人Integer Approval = systemApproverService.getApprover(fid,nextNode);testFlowBusinessEntity.setUserId(Approval);testFlowBusinessEntity.setBusId(save.getId());testFlowBusinessEntity.setState("0");testFlowBusinessService.save(testFlowBusinessEntity);
审批接口,判断审核状态,同意的话进入下一个节点,不同意,结束流程
Integer busId = testFlowBusinessEntity.getBusId();String state = testFlowBusinessEntity.getState();Example example = new Example(TestFlowBusinessEntity.class);example.createCriteria().andEqualTo("busId",busId).andEqualTo("userId",testFlowBusinessEntity.getUserId());List<TestFlowBusinessEntity> list = testFlowBusinessService.findList(example, null);TestFlowBusinessEntity testFlowBusinessEntity2 = list.get(0);Integer fid = testFlowBusinessEntity2.getFid();Integer node = testFlowBusinessEntity2.getNode();testFlowBusinessEntity2.setState(state);testFlowBusinessService.update(testFlowBusinessEntity2);//判断审核状态,同意的话进入下一个节点,不同意,结束流程if(state.equals("1")){//同意//判断是否是最后一个节点Integer nextNode = systemLinkService.getNextNode(fid,node);if(nextNode!=0){//不是最后一个节点//新增流程业务表关联数据TestFlowBusinessEntity testFlowBusinessEntity1 = new TestFlowBusinessEntity();testFlowBusinessEntity1.setFid(fid);testFlowBusinessEntity1.setNode(nextNode);//根据流程与节点获取审批人Integer Approval = systemApproverService.getApprover(fid,nextNode);testFlowBusinessEntity1.setUserId(Approval);testFlowBusinessEntity1.setBusId(busId);testFlowBusinessEntity1.setState("0");testFlowBusinessService.save(testFlowBusinessEntity1);} else {//最后一个节点,更新业务表状态,流程结束TestBusinessEntity byId = testBusinessService.findById(busId);byId.setState(state);testBusinessService.update(byId);}}if(state.equals("2")){//不同意TestBusinessEntity byId = testBusinessService.findById(busId);byId.setState(state);testBusinessService.update(byId);}
查询列表,根据userId,以及状态进行查询分页
SELECTt1.*FROMtest_business t1LEFT JOIN test_flow_business t2 ON t1.id = t2.busId
WHEREt1.active = 1AND t2.userId = #{userId}AND t1.state=#{state}
多人审批功能简单实现相关推荐
- udp实现简单的多人聊天功能
udp实现简单的多人聊天功能 多个客户端向服务器发送信息,服务端再将信息返回到各个客户端. 这是接收udp的实现类: public class Rec implements Runnable{priv ...
- 在Android应用中实现查看“附近的人”的功能
越来越多的Android应用都加入了"附近的人"的功能,比如微信.陌陌.淘宝等,今天分享一个demo,简单的来实现这一功能.主要原理为:手机端上传gps数据到服务器,服务器从数据库 ...
- JavaWeb实战项目-登录审批功能-付强-专题视频课程
JavaWeb实战项目-登录审批功能-134人已学习 课程介绍 在eclipse中进行web开发,熟练掌握HTML.Javaspript.CSS.JSP.Servlet.Oracle. ...
- html实现弹幕功能 简单的小功能
html实现弹幕功能 简单的小功能 前言 实现 实现思路 具体实现 成果 前言 最近在搞视频的时候突然想加一个弹幕功能,但对我这样一个不会前端的人来说实在是太难了. 于是打开了万能的b站,您猜怎么着, ...
- 用python做一个数据查询软件_Python实现功能简单的数据查询及可视化系统
欢迎点击右上角关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以领取包括不限于Python实战演练.PDF电子文档.面试集锦.学习资料等. image.png 前言 数据时代,数据的多源集成 ...
- python日历下拉框_Python版的农历日历Calendar,功能简单
1.[代码][Python]代码 Python语言: Python版的农历日历Calendar,功能简单 #coding=utf-8 #代码修改自wangfei(wangfei@hanwang.com ...
- Qt 2D绘图功能简单总结
文章目录 Qt 2D绘图功能简单总结 Qt 2D绘图功能简单总结 Qt 的绘图功能非常强大,它可以绘制一切想要的图形,从最简单的一条直线到其他任何复杂的图形,还可以用来绘制文本和图片. Qt的绘图系统 ...
- html 12306页面实现,jQuery模拟12306城市选择框功能简单实现方法示例
本文实例讲述了jQuery模拟12306城市选择框功能简单实现方法.分享给大家供大家参考,具体如下: www.jb51.net jQuery城市选择框 #parent{ width:500px; po ...
- python密码登录程序三次_Python实现账号密码输错三次即锁定功能简单示例
本文实例讲述了Python实现账号密码输错三次即锁定功能.分享给大家供大家参考,具体如下: 初学Python-1 #实现账号输错三次即锁定 user = "hubery" pass ...
最新文章
- linux fedora35 kvm自定义存储路径
- RPC简介及框架选择
- php字符串怎么传到html_php字符串函数(四):html与字符串之间的转换
- react学习(28)---react中componentWillReceiveProps
- Eclipse Pydev 技巧汇编
- Android Studio 3.4升级后的运行问题解决办法
- Linux Oracle服务启动停止脚本与开机自启动
- C/C++ 创建两个链表,实现两个链表低位到高位相加,并输出链表
- 杭州有哪些牛批的互联网公司
- Django修改app名称和数据表迁移方案
- pe修改服务器2003密码,PE修改Windows密码
- python fft ifft
- 代数结构:群、环、域、模、线性空间、格
- css 隐藏滚动条 竖向y滚动,横向x不滚动
- Nelder Mead算法推荐阅读博文
- 教学反思计算机专业,【计算机教学反思】_计算机教学反思参考资料-毕业论文范文网...
- hdu 2097 Java Sky数
- 常微分方程 $5 微分方程稳定性
- 最新千锋3G学院Android游戏开发教程之数独游戏
- java json utf8,将JSON转换为UTF-8字符串
热门文章
- python入门之字符串索引,切片
- linux系统安装hba驱动,Linux系统上iSCSI HBA的安装和配置
- html5 单个按钮控制音乐播放,HTML5音频控制停止按钮(而不是暂停)
- docker下安装typecho建立自己得博客系统(1)dockerfile篇
- 中式英语之鉴读书笔记(下)
- dream of/dress up/drink to等动词词组
- 【​观察】以双引擎动态技术破局,瑞数信息再定义传统WAF市场
- 下图无序列表的html标记,ul标签-无序列表
- 白色用rgba怎么设置html,转换RGB到RGBA的白色
- 一分钟,华北科技学院会发生什么?