内容申请审核该怎么做

2018-05-11  本文已影响0人  questionuncle

很久没写博文了,这段时间比较忙,部门内很多基础环境在搭建同时新系统也在同步开发中。今天在做业务开发的时候遇到个问题,申请材料由多个内容块组成,有的内容块已在其他申请时审核通过,如何让审核系统知道这部分已经被审核,以减少对这部分内容块的检查力度。

问题

起初,我们设计申请表时,通过在该表内添加外键字段和其他表中记录进行关联,形成一条完整的申请记录。这样设计时存在个问题,当关联表内的记录更改后,申请表内关联该记录的申请内容也会跟着改变,这样用户在查询历史申请记录时看不到当时的申请状态。

如何解决

针对这一问题,可以通过快照的方式来解决。以前一直听到快照,特别是电商系统内,但是一直不明白是什么意思怎么操作,今天和老大交流了一下有种茅塞顿开的感觉。
快照顾名思义就是将当时的状态以镜像的方式复制一份,让我来举个例子。
现在有两张表,申请表和材料表,申请表中的材料表ID和材料表中的材料表ID进行关联。有两条申请记录都和材料表中的材料1记录相关联,如果在两次申请时材料1内容有改变,当时的申请状态就不会保留。

申请表ID 材料1 材料2 材料表ID
1 申请材料内容11 申请材料内容12 材料1
2 申请材料内容21 申请材料内容22 材料2
3 申请材料内容31 申请材料内容32 材料1
材料表ID 内容1 内容2
材料1 内容11 内容12
材料2 内容21 内容22

现在添加一张快照表,表结构和原表相似,但是最主要的时添加来几个字段

材料表ID 内容1 内容2 申请表ID 是否被审核通过 HashCode
材料1 内容11 内容12 1 0 xxxx
材料2 内容21 内容22 2 0 yyyy
材料1 内容11 内容12 3 0 xxxx

通过这张表,我们可以看到快照表内容。其实快照表内容就是根据申请表内的材料表ID字段,通过一定规则运算,生成一条记录。那规则运算是什么呢?

规则运算

申请表ID 材料1 材料2 材料表ID
1 申请材料内容11 申请材料内容12 材料1
2 申请材料内容21 申请材料内容22 材料2
3 申请材料内容31 申请材料内容32 材料1
4 申请材料内容41 申请材料内容42 材料1

当有一条新记录(如:申请表ID为4)插入到申请表中,申请表通过材料表ID去材料表内查找对应的记录(如:材料1),然后计算此时该记录的HashCode。根据该HashCode和是否被审核通过来查找快照表:
如果查找到记录(记为D1),则向快照表插入一条新记录,记录内容同D1,只是将申请表ID至为4;
如果没查找到记录,则向快照表中插入查找到的材料表的内容(如:材料1),并将申请表ID至为4。

申请表ID 材料1 材料2 材料表ID
1 申请材料内容11 申请材料内容12 材料1
2 申请材料内容21 申请材料内容22 材料2
3 申请材料内容31 申请材料内容32 材料1
4 申请材料内容41 申请材料内容42 材料1
材料表ID 内容1 内容2 申请表ID 是否被审核通过 HashCode
材料1 内容11 内容12 1 0 xxxx
材料2 内容21 内容22 2 0 yyyy
材料1 内容11 内容121 3 1 zzzz
材料1 内容11 内容121 4 1 zzzz

通过是否被审核通过这个flage,审核系统就很容易知道哪些内容已被审核过,哪些没有。

如何组成申请状态

申请表和材料表不再是根据材料表ID进行关联,而是通过材料快照表中申请表ID进行关联,通过它来构成一条完整的申请记录,当然该申请记录也就是记录当时的申请状态。

上一篇 下一篇

猜你喜欢

热点阅读