需求:
工厂目前有多条流水线,每天8点开始运行,17点分停止,希望以图形的形式展示当天流水线各个机器的安排情况。


原理:
smartbi内置了echarts图形,但是未支持时间轴,因此需要把日期转换成数值,然后使用横向堆积图展示。
实现步骤:
一、数据准备
1、把日期时间处理成数字:从数据上看可以考虑把任务执行的消化时长数值作为X轴,但X轴是从0开始的,而机器每天8点开始运行,因此还需要对8点开始的机器+8。即:开始时间=8点 然后耗时+8,其他时间段 然后直接处理成耗时,对所有的数据进行堆叠。

2、增加排序字段:由于堆叠是按照耗时字段堆叠,顺序可能出现异常,因此可把流水线和机器开始时间拼接,用于排序

(注:以下SqlServer语法,时间处理可自行根据数据库类型调整)
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
}
}