Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MyEMS
MyEMS能源管理系统
提交
172a857f
M
MyEMS能源管理系统
项目概览
MyEMS
/
MyEMS能源管理系统
通知
46
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
MyEMS能源管理系统
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
172a857f
编写于
4月 26, 2024
作者:
nengyuangzhang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
added latest value to points of data source in myems-api
上级
515b548e
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
53 addition
and
44 deletion
+53
-44
myems-api/core/datasource.py
myems-api/core/datasource.py
+53
-44
未找到文件。
myems-api/core/datasource.py
浏览文件 @
172a857f
...
...
@@ -438,15 +438,15 @@ class DataSourcePointCollection:
raise
falcon
.
HTTPError
(
status
=
falcon
.
HTTP_400
,
title
=
'API.BAD_REQUEST'
,
description
=
'API.INVALID_DATA_SOURCE_ID'
)
cnx
=
mysql
.
connector
.
connect
(
**
config
.
myems_system_db
)
cursor
=
cnx
.
cursor
()
cursor
.
execute
(
" SELECT name "
" FROM tbl_data_sources "
" WHERE id = %s "
,
(
id_
,))
if
cursor
.
fetchone
()
is
None
:
cursor
.
close
()
cnx
.
close
()
cnx
_system_db
=
mysql
.
connector
.
connect
(
**
config
.
myems_system_db
)
cursor
_system_db
=
cnx_system_db
.
cursor
()
cursor
_system_db
.
execute
(
" SELECT name "
" FROM tbl_data_sources "
" WHERE id = %s "
,
(
id_
,))
if
cursor
_system_db
.
fetchone
()
is
None
:
cursor
_system_db
.
close
()
cnx
_system_db
.
close
()
raise
falcon
.
HTTPError
(
status
=
falcon
.
HTTP_404
,
title
=
'API.NOT_FOUND'
,
description
=
'API.DATA_SOURCE_NOT_FOUND'
)
...
...
@@ -459,28 +459,46 @@ class DataSourcePointCollection:
" FROM tbl_points "
" WHERE data_source_id = %s "
" ORDER BY id "
)
cursor
.
execute
(
query_point
,
(
id_
,))
rows_point
=
cursor
.
fetchall
()
cnx_history
=
mysql
.
connector
.
connect
(
**
config
.
myems_historical_db
)
history
=
cnx_history
.
cursor
()
history
.
execute
(
" SELECT point_id, utc_date_time, actual_value "
" FROM tbl_analog_value_latest "
" WHERE utc_date_time >= DATE_SUB(UTC_TIMESTAMP(), INTERVAL 10 MINUTE)"
)
analog
=
history
.
fetchall
()
history
.
execute
(
" SELECT point_id, utc_date_time, actual_value "
" FROM tbl_digital_value_latest "
" WHERE utc_date_time >= DATE_SUB(UTC_TIMESTAMP(), INTERVAL 10 MINUTE)"
)
digital
=
history
.
fetchall
()
history
.
execute
(
" SELECT point_id, utc_date_time, actual_value "
" FROM tbl_energy_value_latest "
" WHERE utc_date_time >= DATE_SUB(UTC_TIMESTAMP(), INTERVAL 10 MINUTE)"
)
energy
=
history
.
fetchall
()
cursor_system_db
.
execute
(
query_point
,
(
id_
,))
rows_point
=
cursor_system_db
.
fetchall
()
cnx_historical_db
=
mysql
.
connector
.
connect
(
**
config
.
myems_historical_db
)
cursor_historical_db
=
cnx_historical_db
.
cursor
()
cursor_historical_db
.
execute
(
" SELECT point_id, actual_value "
" FROM tbl_analog_value_latest "
" WHERE utc_date_time >= DATE_SUB(UTC_TIMESTAMP(), INTERVAL 10 MINUTE)"
)
analog_values
=
cursor_historical_db
.
fetchall
()
analog_value_dict
=
dict
()
for
v
in
analog_values
:
analog_value_dict
[
v
[
0
]]
=
v
[
1
]
cursor_historical_db
.
execute
(
" SELECT point_id, actual_value "
" FROM tbl_digital_value_latest "
" WHERE utc_date_time >= DATE_SUB(UTC_TIMESTAMP(), INTERVAL 10 MINUTE)"
)
digital_values
=
cursor_historical_db
.
fetchall
()
digital_value_dict
=
dict
()
for
v
in
digital_values
:
digital_value_dict
[
v
[
0
]]
=
v
[
1
]
cursor_historical_db
.
execute
(
" SELECT point_id, actual_value "
" FROM tbl_energy_value_latest "
" WHERE utc_date_time >= DATE_SUB(UTC_TIMESTAMP(), INTERVAL 10 MINUTE)"
)
energy_values
=
cursor_historical_db
.
fetchall
()
energy_value_dict
=
dict
()
for
v
in
energy_values
:
energy_value_dict
[
v
[
0
]]
=
v
[
1
]
if
rows_point
is
not
None
and
len
(
rows_point
)
>
0
:
for
row
in
rows_point
:
if
row
[
2
]
==
'ANALOG_VALUE'
:
latest_value
=
analog_value_dict
.
get
(
row
[
0
],
None
)
latest_value
=
int
(
latest_value
)
if
latest_value
is
not
None
else
None
elif
row
[
2
]
==
'DIGITAL_VALUE'
:
latest_value
=
analog_value_dict
.
get
(
row
[
0
],
None
)
latest_value
=
Decimal
(
latest_value
)
if
latest_value
is
not
None
else
None
elif
row
[
2
]
==
'ENERGY_VALUE'
:
latest_value
=
energy_value_dict
.
get
(
row
[
0
],
None
)
latest_value
=
Decimal
(
latest_value
)
if
latest_value
is
not
None
else
None
meta_result
=
{
"id"
:
row
[
0
],
"name"
:
row
[
1
],
"object_type"
:
row
[
2
],
...
...
@@ -494,24 +512,15 @@ class DataSourcePointCollection:
"is_virtual"
:
bool
(
row
[
10
]),
"address"
:
row
[
11
],
"description"
:
row
[
12
],
"analog_value"
:
None
,
"digital_value"
:
None
,
"energy_value"
:
None
}
for
point
in
analog
:
if
point
[
0
]
==
meta_result
[
'id'
]
and
isinstance
(
point
[
1
],
datetime
):
meta_result
[
'analog_value'
]
=
point
[
2
]
for
point
in
digital
:
if
point
[
0
]
==
meta_result
[
'id'
]
and
isinstance
(
point
[
1
],
datetime
):
meta_result
[
'digital_value'
]
=
point
[
2
]
for
point
in
energy
:
if
point
[
0
]
==
meta_result
[
'id'
]
and
isinstance
(
point
[
1
],
datetime
):
meta_result
[
'energy_value'
]
=
point
[
2
]
"latest_value"
:
latest_value
,
}
result
.
append
(
meta_result
)
cursor
.
close
()
cnx
.
close
()
history
.
close
()
cnx_histor
y
.
close
()
cursor
_system_db
.
close
()
cnx
_system_db
.
close
()
cursor_historical_db
.
close
()
cnx_histor
ical_db
.
close
()
resp
.
text
=
json
.
dumps
(
result
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录