6 changed files with 132 additions and 1 deletions
-
8README.md
-
BINhelp/doc/物管理项目结构树.jpg
-
BINhelp/doc/物计算.png
-
BINhelp/doc/过滤引擎.png
-
64help/file/TskvEvent.puml
-
59help/file/tskvAgg-amSumV1.puml
|
After Width: 1123 | Height: 3175 | Size: 461 KiB |
|
After Width: 4812 | Height: 2127 | Size: 847 KiB |
|
After Width: 3487 | Height: 2212 | Size: 776 KiB |
@ -0,0 +1,64 @@ |
|||
@startuml |
|||
'https://plantuml.com/sequence-diagram |
|||
|
|||
participant Events as event |
|||
participant DataTransferListener as entrance |
|||
participant TsKvEventServiceImpl as eventSvc |
|||
participant TsKvService as tskvSvc |
|||
participant 其他服务或监听器 as os |
|||
|
|||
== 事件统一入口 == |
|||
event -> entrance: push事件 |
|||
|
|||
== 根据主题处理不同事件 == |
|||
entrance -> eventSvc: push【latest】或【history】事件 |
|||
note over eventSvc: 处理topic包含v1/tskv的事件 |
|||
note over eventSvc: 【latest】或【history】事件处理 |
|||
alt #LightBlue latest 事件 |
|||
eventSvc -> tskvSvc: 【async】saveProtoLatest:将推送来的数据去重、新增最新数据 |
|||
||| |
|||
else #Lavender history 事件 |
|||
eventSvc -> tskvSvc: saveProtoTsKv:存储所有推送来的数据 |
|||
eventSvc -> tskvSvc: 【async】saveProtoLatest:将推送来的数据去重、新增最新数据 |
|||
||| |
|||
end |
|||
||| |
|||
eventSvc -> os: 执行物计算(push CalcLogSaveEvent) |
|||
eventSvc -> os: 执行过滤引擎(push FilterLogSaveEvent) |
|||
||| |
|||
eventSvc -> eventSvc: 读application.yml配置中的属性列表:keys |
|||
eventSvc -> eventSvc: 将keys中的每个基础属性添加am后缀,形成新的属性列表amKeys |
|||
||| |
|||
loop dataProtoList |
|||
alt #LightBlue 如果是基础属性,且>0 |
|||
eventSvc -> eventSvc: 将dataProto添加到dataProtos |
|||
||| |
|||
else #Lavender 如果是am属性 |
|||
eventSvc -> eventSvc: 将dataProto添加到amList |
|||
||| |
|||
else #Gray 其他 |
|||
eventSvc -> eventSvc: 丢弃 |
|||
end |
|||
end |
|||
||| |
|||
alt #LightBlue dataProtos非空 |
|||
eventSvc -> tskvSvc: 【async】amSumProtos(dataProtos); |
|||
||| |
|||
else #Lavender amList非空 |
|||
eventSvc -> tskvSvc: hhDdMmYySum(amList); |
|||
||| |
|||
eventSvc -> os: 峰平谷尖计算(push PeakEvent) |
|||
||| |
|||
end |
|||
||| |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
@enduml |
|||
@ -0,0 +1,59 @@ |
|||
@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 |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue