Browse Source

补充备注说明

thing_master
xiachao 1 year ago
parent
commit
3c75a1cbc6
  1. 8
      README.md
  2. BIN
      help/doc/物管理项目结构树.jpg
  3. BIN
      help/doc/物计算.png
  4. BIN
      help/doc/过滤引擎.png
  5. 64
      help/file/TskvEvent.puml
  6. 59
      help/file/tskvAgg-amSumV1.puml

8
README.md

@ -8,3 +8,11 @@
.移除[changshu]模块 .移除[changshu]模块
.移除 老旧的[gateway]模块 .移除 老旧的[gateway]模块
.[publicorg]模块 有涉及设备管理相关代码,暂时保留 .[publicorg]模块 有涉及设备管理相关代码,暂时保留
help 文件夹说明
.doc: 一些业务流程以及项目结构的介绍
.file: 一些其他格式的参考帮助文件
.sql: [ddl]为建表语句,[dml]为数据初始化语句,格式为 ddl_1.0.0,dml_1.0.0
后续有 增改,请勿在之前的文件上操作,初始化可以直接执行的sql,增加,***_1.0.*的文件,来维护

BIN
help/doc/物管理项目结构树.jpg

After

Width: 1123  |  Height: 3175  |  Size: 461 KiB

BIN
help/doc/物计算.png

After

Width: 4812  |  Height: 2127  |  Size: 847 KiB

BIN
help/doc/过滤引擎.png

After

Width: 3487  |  Height: 2212  |  Size: 776 KiB

64
help/file/TskvEvent.puml

@ -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

59
help/file/tskvAgg-amSumV1.puml

@ -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
Loading…
Cancel
Save