You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
2.3 KiB
59 lines
2.3 KiB
@startuml
|
|
'https://plantuml.com/activity-diagram-beta
|
|
|
|
start
|
|
note left: TsKvNativeSQL.amSumV1
|
|
repeat:forEach protoList
|
|
:dataProto;
|
|
:初始化参数:\n inter:时间间隔(min 换算成 ms)\n thingCode: 物编码 \n key: 属性编码 \n value: 属性值 \n ts: 数据时间 \n stTs: 基于当前时间计算获取的开始时间 \n enTs: 基于当前时间计算获取的结束时间;
|
|
if ((ts - inter) == stTs \n 当前时间可用于统计) then (yes)
|
|
: 查询stTs~enTs在每个inter之间的最小值 \n => rowList;
|
|
switch(rowList.size)
|
|
case (多条)
|
|
:计算连续数据的差值\n作为单个am数据值;
|
|
:收集am到amList;
|
|
case (1条)
|
|
:向ts之前查询第一条数据;
|
|
if (存在) then (yes)
|
|
:与当前数据value计算差值\n作为单个am数据值;
|
|
:收集am到amList;
|
|
else (false)
|
|
:设置am值为0并收集;
|
|
:log error;
|
|
endif
|
|
if (当前时间 > enTs)
|
|
:查询ts之后的第一条数据;
|
|
:与之前查询出的1条计算差值\n收集到amList;
|
|
endif
|
|
endswitch
|
|
: todo;
|
|
else (false)
|
|
:将stTs向左移动一个inter的时间\n然后查询新的开始时间~ts之间的数据\n => rowList;
|
|
switch(rowList.size)
|
|
case (多条)
|
|
:计算连续数据的差值\n作为单个am数据值;
|
|
:收集am到amList;
|
|
case (1条)
|
|
:向stTs之前查询第一条数据;
|
|
if (存在) then (yes)
|
|
:与当前数据value计算差值\n作为单个am数据值;
|
|
:收集am到amList;
|
|
else (false)
|
|
:设置am值为0并收集;
|
|
:log error;
|
|
endif
|
|
if (当前时间 > enTs)
|
|
:查询enTs之后的第一条数据;
|
|
:与之前查询出的1条计算差值\n收集到amList;
|
|
endif
|
|
endswitch
|
|
endif
|
|
repeat while(hasNext?)
|
|
|
|
if (amList非空) then (yes)
|
|
: 存储聚合好的amList数据;
|
|
: 将amList推送到数据消费事件中(v1/tskv/latest);
|
|
endif
|
|
stop
|
|
|
|
@enduml
|