diff --git a/README.md b/README.md index 35ac3f3..1ed46dd 100644 --- a/README.md +++ b/README.md @@ -7,4 +7,12 @@ .本地队列驱动优化 .移除[changshu]模块 .移除 老旧的[gateway]模块 - .[publicorg]模块 有涉及设备管理相关代码,暂时保留 \ No newline at end of file + .[publicorg]模块 有涉及设备管理相关代码,暂时保留 + +help 文件夹说明 + + .doc: 一些业务流程以及项目结构的介绍 + .file: 一些其他格式的参考帮助文件 + + .sql: [ddl]为建表语句,[dml]为数据初始化语句,格式为 ddl_1.0.0,dml_1.0.0 + 后续有 增改,请勿在之前的文件上操作,初始化可以直接执行的sql,增加,***_1.0.*的文件,来维护 \ No newline at end of file diff --git a/help/doc/物管理项目结构树.jpg b/help/doc/物管理项目结构树.jpg new file mode 100644 index 0000000..50aa7ad Binary files /dev/null and b/help/doc/物管理项目结构树.jpg differ diff --git a/help/doc/物计算.png b/help/doc/物计算.png new file mode 100644 index 0000000..e51802a Binary files /dev/null and b/help/doc/物计算.png differ diff --git a/help/doc/过滤引擎.png b/help/doc/过滤引擎.png new file mode 100644 index 0000000..40d32c6 Binary files /dev/null and b/help/doc/过滤引擎.png differ diff --git a/help/file/TskvEvent.puml b/help/file/TskvEvent.puml new file mode 100644 index 0000000..22e9a89 --- /dev/null +++ b/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 \ No newline at end of file diff --git a/help/file/tskvAgg-amSumV1.puml b/help/file/tskvAgg-amSumV1.puml new file mode 100644 index 0000000..9e13478 --- /dev/null +++ b/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