需求:
工厂目前有多条流水线,每天8点开始运行,17点分停止,希望以图形的形式展示当天流线型各个机器的安排情况。
原理:
smartbi内置了echarts图形,但是未支持时间轴,因此需要把日期转换成数值,然后使用横向堆积图展示。
实现步骤:
一、数据准备
1、把日期时间处理成数字:从数据上看可以考虑把任务执行的消化时长数值作为X轴,但X轴是从0开始的,而机器每天8点开始运行,因此还需要对8点开始的机器+8
即:开始时间=8点 然后耗时+8,其他时间段 然后直接处理成耗时,对所有的数据进行堆叠。(注:截图是SqlServer语法,时间处理可自行根据数据库类型调整)
2、增加排序字段:由于堆叠是按照耗时字段堆叠,顺序可能出现异常,因此可把流水线和机器开始时间拼接,用于排序
完整SQL
select "線別"+ CONVERT(varchar(100), "時間開始", 120) as sort, "線別", "機型", "時間開始", "時間結束",case when DATENAME(hour, "時間開始") = 8 then DATEDIFF(second, "時間開始", "時間結束") / 3600.0 + 8 else DATEDIFF(second, "時間開始", "時間結束") / 3600.0 end as times from "dbo"."生產排程1" order by "線別", "時間開始"
二、图形设计
1、字段拖拽情况
2、使用数据准备中构造的字段进行排序和机型颜色
3、通过扩展属性处理X轴的数值标签 转为时间标签,并把最小值调整为8点,最大值为17点
{ "xAxis": { "position": "top", "min":8, "max":17, "axisLabel": { "formatter": "function(param){return param +':00';}" }, "axisTick": { "show": true }, "axisLine": { "show": true }, "splitLine": { "show": true }, "interval": 1 } }