开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 1 天,点击查看活动详情
需求分析
业务范围:
检查单:项目组成员提交检查单、分包人员完成检查、检查单发起人复核检查单
周月报:项目组成员提交周月报、审批人员逐个审批
功能模块一:检查单审批
检查单一共有未检查、已检查、待修改(打回检查) 、已复核四个状态
流程图:
功能模块二:周月报审批
周\月报一共有审批中、已审批、待修改三个状态
实现思路
本需求针对不同类型的审批会有不同的审批层次,审批层级由审批人的决定,某一个审批流程有哪些审批人由管理员指定。
审批的流程主要是每一个审批层级的审批人逐级进行审批,当其中有一个不通过,则整个流程不通过,当所有的审批人都通过了,则流程通过。
数据库设计
设计思路: 使用审批流主表对应具体的业务表,其中每一个数据项对应一个具体的业务数据项。使用审批流明细表对应审批用户表,其中每一个数据项对应一个需要对审批流程进行处理的用户。
审批流主表(approval_flow)
| 参数 | 类型 | 约束 | 备注 |
|---|---|---|---|
| id | bigint | 主键(自增) | 审批流id |
| identifier | varchar(30) | 审批流编号 | |
| type | varchar(30) | 审批流类型(根据业务表名称checklist\weekReport\monthReport) | |
| add_user_id | varchar(30) | 申请人用户id | |
| flow_status | char(1) | 审批流状态【1:待审批 2:已审批 3:待修改 4:撤销】 | |
| create_time | datatime | 审批流创建时间 |
审批流明细表(approval_flow_detail)
| 参数 | 类型 | 约束 | 备注 |
|---|---|---|---|
| id | int | 主键(自增) | 审批流明细id |
| identifier | varchar(30) | 审批流编号 | |
| approval_user_id | int | 审批人用户id | |
| approval_remark | varchar(500) | 审批备注 | |
| flow_detail_status | char(1) | 审批流明细状态【1:待审批 2:通过 3:驳回】 | |
| create_time | datatime | 审批明细创建时间 |
产品需求
这两张表的关系是一对多,审批流明细表的数量取决与一个审批流中需要审核人员的对象。
下面结合具体业务对象来进行分析:
针对检查单这一具体业务对象,一共对应审批流主表一个数据项和审批流明细表一个数据项,检查单创建者为审批流申请人,指定分包单位人员和项目组成员/管理员均为审批人,二者不同之处就是分包单位人员对于审批流明细对象只有通过这一种操作。
针对项目周\月报这一具体业务对象,一共对应审批流主表一个数据项和审批流明细表若干个数据项,周报上传者为审批流申请人,管理员预先设定周\月报的审批人。