highlight: arta
theme: smartblue
需求
例:现有一数据表存储筛选规则,如下表
| 年龄 | 性别 | 负责人 |
| --- | --- | --- | | 大于20 | 男 | 张三 | | 小于20 | 男 | 李四 | | 大于20 | 女 | 王五 |
根据筛选条件,选择负责人,若后期新增或修改筛选规则,要求不能和之前重复
如添加下面条件,则符合规则
| 年龄 | 性别 | 负责人 |
| --- | --- | --- | | 小于20 | 女 | 赵六 |
若添加下面条件,则不符合规则,因为与第一条数据的筛选条件冲突
| 年龄 | 性别 | 负责人 |
| --- | --- | --- | | 大于20 | 男 | 赵六 |
逻辑说明
创建实体类
假设有4个筛选条件,分别抽象为F1,F2,F3,F4
筛选规则说明
并且可取的值只能为三种: 1. 数字(表示该条件对应的id) 2. ALL (不进行筛选) 3. ELSE (若所有筛选条件没有命中,则选择该条件)
初始化数据:
假设数据库存放三条筛选规则:
第一条:
| F1 | F2 | F3 | F4 | ID | | --- | --- | --- | --- | --- | | 1,2,3,4 | 2,3,4 | ALL | ALL | 1 |
一共有 4 * 3 = 12种条件,此时若符合则让ID为1的用户处理,该12种分别是:
第二条:
| F1 | F2 | F3 | F4 | ID | | --- | --- | --- | --- | --- | | ALL | 2,3,4 | ALL | ALL | 2 |
一共有 3 种条件,此时若符合则让ID为2的用户处理,分别是:
第二条:
| F1 | F2 | F3 | F4 | ID | | --- | --- | --- | --- | --- | | ELSE | ELSE | ELSE | ELSE | 3 |
若上述条件都没有命中,则让ID为3的用户处理
新增筛选条件
在 新增的数据与数据库中内容重复 的条件下
如新增一条筛选规则,让id为4的用户处理
此时数据重复,将会报错并返回重复信息,以下是重复信息
在 新增的数据与数据库中内容不重复 的条件下
如新增一条不重复的筛选规则,让id为4的用户处理
此时由于没有重复信息,将不会返回重复列表
修改筛选条件
分别定义before和after,分别代表要修改的数据,和要修改后的数据
要求修改后的规则,不能与现有规则冲突
在 修改后的数据与已有内容重复 的条件下
例如修改后的条件与第一行内容重复,要求返回重复的条件列表
在 修改后的数据与已有内容不重复 的条件下
当修改后后的条件不与现有的冲突时,则可正常修改