简单的审核表设计

本文介绍了如何在项目中设计一个基础版的简单审核流程,仅支持单个审核人,以及如何升级到支持多审人且审核方式灵活的版本,通过数据库表结构详细说明了审核节点、审核记录和审核人之间的关联关系。
摘要由CSDN通过智能技术生成

背景

在我们的日常开发任务中,有很多的业务是跟审核相关的,业界也有很成熟的工作流框架比如 flowable activiti等,但是项目中如果用这种框架,需要投入一定的时间去学习,这种框架支持的场景很多,但是我们大部分的审核都是比较简单的,综合考虑引入这种框架的成本比较高的时候,我们就可以自己设计一套比较简单的审核表

基础版

这种设计仅支持每个审核节点的审核人都是单个人的,当前节点审核完成后,进入下一个节点审核.
审核节点表

CREATE TABLE `audit_node` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `audit_record_id` bigint DEFAULT NULL COMMENT '审批记录ID,关联audit_record.biz_id',
  `step` int DEFAULT NULL COMMENT '步骤',
  `step_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '步骤名称',
  `audit_status` int DEFAULT NULL COMMENT '审核状态(0:未开始,1:审核中,2:通过,3:拒绝)',
  `audit_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '审核人',
  `submit_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '审核发起人id',
  `reason` varchar(4000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '原因',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=5374 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='审核节点';

审核记录表

CREATE TABLE `audit_record` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `object_id` bigint DEFAULT NULL COMMENT '审核业务表主键',
  `audit_status` int DEFAULT NULL COMMENT '审核状态(1:审核中,2:通过,3:拒绝)',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '创建人',
  PRIMARY KEY (`id`),
  KEY `tenant_audit_record_object_id_audit_type_in_use` (`object_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=4060 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='审核记录';

业务表(业务中需要审核的对象)

CREATE TABLE `product` (
  `id` bigint NOT NULL COMMENT '主键',
  `product_name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '产品名称',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='闲置资源明细';

业务场景:生产经理创建一个产品需要部门经理和部门总监审批通过

-- 新增一个产品
INSERT INTO `my_temp`.`product`(`id`, `product_name`) VALUES (1, '新产品');
-- 新增一条审核记录 状态是审核中
INSERT INTO `my_temp`.`audit_record`(`id`, `object_id`, `audit_status`, `create_time`, `create_by`) VALUES (1, 1, 1, '2024-01-29 15:01:30', '系统');
-- 新增两条审核节点数据
INSERT INTO `my_temp`.`audit_node`(`id`, `audit_record_id`, `step`, `step_name`, `audit_status`, `audit_by`, `submit_by`, `reason`) VALUES (1, 1, 1, '部门经理审批', 1, '部门经理', '生产经理', NULL);
INSERT INTO `my_temp`.`audit_node`(`id`, `audit_record_id`, `step`, `step_name`, `audit_status`, `audit_by`, `submit_by`, `reason`) VALUES (2, 1, 2, '项目总监审批', 1, '项目总监', '部门经理', NULL);

部门经理审批通过

update audit_node set audit_status = 2 ,reason='符合条件通过' where audit_record_id = 1 and step_name = '部门经理审批';

部门总监审批通过

update audit_node set audit_status = 2 ,reason='符合条件通过' where audit_record_id = 1 and step_name = '项目总监审批';
update audit_record set audit_status = 2 where object_id = 1 ;

升级版

基础版仅支持审核节点只有一个人的,升级版就是支持一个节点可以有多个审核人,审核的方式可以是一个人审核通过该节点审核通过或者所有审核人审核通过该节点审核通过(或者多余半数以上的人审核通过).
审核节点和审核人变成了一对多的关系,需要关联关系表

-- 审核记录表
CREATE TABLE `audit_record` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `object_id` bigint DEFAULT NULL COMMENT '审核业务表主键',
  `audit_status` int DEFAULT NULL COMMENT '审核状态(1:审核中,2:通过,3:拒绝)',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '创建人',
  PRIMARY KEY (`id`),
  KEY `tenant_audit_record_object_id_audit_type_in_use` (`object_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=4060 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='租户审核记录';
-- 审核节点表
CREATE TABLE `audit_node` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `audit_record_id` bigint DEFAULT NULL COMMENT '审批记录ID,关联tenant_audit_record.biz_id',
  `step` int DEFAULT NULL COMMENT '步骤',
  `step_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '步骤名称',
  `audit_status` int DEFAULT NULL COMMENT '审核状态(0:未开始,1:审核中,2:通过,3:拒绝)',
  `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '审核方式 1-一个人审核通过即为通过 2-所有人审核通过',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=5374 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='租户审核节点';
--审核人表
CREATE TABLE `audit_node_person` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `audit_node_id` bigint DEFAULT NULL COMMENT '审批节点,关联audit_node',
  `person` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '审核人',
  `audit_status` int DEFAULT NULL COMMENT '审核状态(0:未开始,1:审核中,2:通过,3:拒绝)',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=5374 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='租户审核节点';
  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值