实际需求:业务上的一个需求,数据库表A中的B字段存放的是该条数据的一些标签,标签存在两级【即一级标签和二级标签】, 现在要是实现将这些标签统计到报表中,一级标签作为表头,二级标签作为填充值。
由于之前的报表每增加一个列都需要去数据库表中增加这个字段名称,然后代码中写统计逻辑,这样才能实现, 这样做的好处是只需要后端就可以完成报表的一个字段的增加,不需要等待前端去增加这了列名了, 后来的低代码就是这样的逻辑,可以简单的编写sql,去实现统计逻辑。实现快速开发,节省开发时间。
回归正题,由于每个数据的标签是不确定的,那就导致了每个每个数据要统计的列是不一样的,这里的做法是将全部的标签都进行增加统计【用户不需要的话还有个功能取消掉某列的统计就可以了】,当用户新增一个标签的时候,只要去查看报表,检测到这个标签的名称不在列统计当中,就会自动的去新增一条列统计字段,每条数据循环的时候要将给其赋值,有对应的二级标签那就展示二级标签名称,没有的话那也要新增一个列,但是数据填写空字符串。【这一步主要是防止在下载报表的时候报错,以防列数对应不上而报错】。
有两个核心的点,第一个:统计的列名为什么还要在数据库表中再存一份? 其实也可以将要统计的列名放入代码中写死,同样可以实现报表数据的展示,但是所有的客户都会展示这么多的列统计,没有办法支持各个客户对统计列的筛选【这个就是原因】。
第二个:代码中的列数据如何和数据库表中的列名对应上的? 数据库表中存入统计列的列中文名和列英文名, 在代码中一个字段的定义肯定是英文的,这样就可以知道如何赋值了,【列中文名是给客户展示的】,其中 。。。 有时间再继续