*画面:显示七个厂区,最新十二个月的数据。
*需求:当连续出现三个月及以上数据为0的情况时,对应厂区的月份标点改为红色。
*特殊情况:并不是每个月都会传入数据,需要我们做无数据时的数据填充。


一、MySQL部分大体思路:
1、首先,数据没有办法保证每个月都会有,而页面上需要连续的去显示各个厂区每个月的数据。因此需要我们来创建一个基础表/结果集,用于承接厂区提供的数据:

如此便可以实现每个月份都有七个厂区的数据与之对应,以此结果集为基础,与厂区提供的数据进行LEFT JOIN ,条件可以是厂区和时间(条件判断使用的字段依据项目需求自行选择)。其中对于为空的数据我们可以采用,IFNULL(XX,0)的方式来补0。

2、判断是否连续三个月及以上为0,如若为0,字段COLOR为red:

连续三个月及以上数据为0有三种情况:
(1)、本月及上下月均为0。
(2)、上个月有值,本月以及往后的两个月没有值。
(3)、下个月有值,本月以及之前的两个月没有值。

解决方法:
获取每条数据的上下月数据,如若本月和上下月数据全为0,则此条数据的COLOR为red,由此可以处理第一种情况(上图MONTH_COLOR部分)。
完成对第一种情况的处理后,用处理后得到的结果集,再次拼接上下月的数据,此时如果本月数据为0,且上下月任意一条数据COLOR为red,我们就可以将本月的COLOR设置为red,由此处理掉剩下的两种情况(上图SQL部分)。

3、最终效果:
每个月都有七个厂区的数据,各厂区如若出现连续三个月及以上数据为0的情况,对应月份的COLOR字段为red


二、FR设置
FR10的图表样式可以在特效,条件显示中进行设置,其中条件判断的依据仅有:系列名、系列序号、分类名、分类序号、值、分类阵列。其中我们需要的是对特定分类下的特定系类的样式进行修改。这时就需要动态的去设置判断值。在这里我们将各月份的数据分别存储与图标右侧的单元格中,利用包含于的判断方式对对应月份的单元格进行判断。如果分类名和系类名包含于单元格,则修改标记点样式。

如图,左侧为图标,右侧为我们用来判断的单元格,单元格由左到右以此是最近的12个月的数据,由上到下分别是月份、厂区名以及用于月份过滤的数值。第一行单元格设置过滤条件为COLOR=red,月份=最下方单元格,第二行单元格左父格设置为上方单元格。由此可以得到各个月份COLOR为red的各厂区数据。依据此数据,在条件显示中设置条件(12个单元格分别对应12个条件),设置方式例如:分类名包含于H12,系列名包含于H13。

最后将用于判断的单元格隐藏,即可完成。

One thought on “FineReport10 折线图:动态的对系列标记点进行样式修改”

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注