Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
U
unify_api2
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
chaonan
unify_api2
Commits
2864cf8a
Commit
2864cf8a
authored
Jun 14, 2023
by
ZZH
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix homepage2023-6-14
parent
7413f4dc
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
51 additions
and
61 deletions
+51
-61
count_info_dao.py
unify_api/modules/home_page/dao/count_info_dao.py
+45
-2
count_info_pds.py
unify_api/modules/home_page/procedures/count_info_pds.py
+6
-59
No files found.
unify_api/modules/home_page/dao/count_info_dao.py
View file @
2864cf8a
import
pendulum
from
datetime
import
timedelta
import
math
from
pot_libs.es_util.es_utils
import
EsUtil
from
pot_libs.logger
import
log
from
unify_api.constants
import
POINT_1MIN_EVENT
from
unify_api.utils.time_format
import
convert_es_str
from
unify_api.utils.time_format
import
convert_es_str
,
CST
from
pot_libs.mysql_util.mysql_util
import
MysqlUtil
index
=
POINT_1MIN_EVENT
...
...
@@ -112,7 +115,47 @@ async def get_md_space(inline_ids, last_month_str):
async
def
get_tc_runtime
(
inline_ids
):
sql
=
"SELECT inlid, name, tc_runtime FROM `inline` where inlid in
%
s;"
async
with
MysqlUtil
()
as
conn
:
tc_runtimes
=
await
conn
.
fetchall
(
sql
,
args
=
(
inline_ids
,
))
tc_runtimes
=
await
conn
.
fetchall
(
sql
,
args
=
(
inline_ids
,))
return
tc_runtimes
async
def
compy_real_pf
(
cid
):
sql
=
"select pid, inlid from point where cid=
%
s and add_to_company=1"
async
with
MysqlUtil
()
as
conn
:
pids
=
[
r
[
"pid"
]
for
r
in
await
conn
.
fetchall
(
sql
,
(
cid
,))]
if
not
pids
:
return
""
dt
=
pendulum
.
now
(
tz
=
CST
)
tstamp
=
dt
.
int_timestamp
//
(
15
*
60
)
*
(
15
*
60
)
dt
=
pendulum
.
from_timestamp
(
tstamp
,
tz
=
CST
)
end_dt
=
(
dt
-
timedelta
(
minutes
=
15
))
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
str_dt
=
dt
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
sql
=
f
"SELECT pid, create_time, pttl_mean, qttl_mean FROM "
\
f
"`point_15min_electric` where create_time in "
\
f
"('{str_dt}', '{end_dt}') and pid in
%
s;"
total_pttl
,
total_qttl
=
0
,
0
for
r
in
await
conn
.
fetchall
(
sql
,
(
tuple
(
pids
),)):
total_pttl
+=
r
[
"pttl_mean"
]
total_qttl
+=
r
[
"qttl_mean"
]
std_cos
=
math
.
sqrt
(
total_pttl
*
total_pttl
+
total_qttl
*
total_qttl
)
return
round
(
total_pttl
/
std_cos
,
2
)
if
std_cos
else
""
async
def
compy_lst_month_pf
(
cid
):
sql
=
"SELECT inlid FROM inline WHERE cid=
%
s;"
async
with
MysqlUtil
()
as
conn
:
inlids
=
[
r
[
"inlid"
]
for
r
in
await
conn
.
fetchall
(
sql
,
(
cid
,))]
if
not
inlids
:
return
""
now_dt
=
pendulum
.
now
(
tz
=
CST
)
cal_month
=
now_dt
.
subtract
(
months
=
1
)
.
format
(
"YYYY-MM-DD"
)
sql
=
"SELECT cos FROM algo_power_factor_result "
\
"WHERE inlid in
%
s and month=
%
s"
cos_lst
=
[
r
[
"cos"
]
for
r
in
await
conn
.
fetchall
(
sql
,
(
inlids
,
cal_month
))]
return
min
(
cos_lst
)
if
cos_lst
else
""
unify_api/modules/home_page/procedures/count_info_pds.py
View file @
2864cf8a
import
json
import
time
from
datetime
import
datetime
,
timedelta
from
math
import
sqrt
import
pendulum
from
pot_libs.settings
import
SETTING
...
...
@@ -28,7 +27,7 @@ from unify_api.modules.home_page.components.count_info_cps import (
from
unify_api.utils.time_format
import
last30_day_range
from
unify_api.modules.home_page.dao.count_info_dao
import
(
get_inline_by_cid
,
get_power_factor_kpi
,
get_pcvf_kpi
,
get_economic_kpi
,
get_md_space
,
get_tc_runtime
get_md_space
,
get_tc_runtime
,
compy_real_pf
,
compy_lst_month_pf
)
from
unify_api.modules.electric_optimization.dao.power_index
import
(
price_policy_by_cid
...
...
@@ -330,63 +329,11 @@ async def power_charge_price(cid):
async
def
cal_power_factor
(
cid
):
"""首页获取实时功率因数, 上月功率因数"""
point_sql
=
"select pid,inlid from point where cid=
%
s and add_to_company=1"
async
with
MysqlUtil
()
as
conn
:
points
=
await
conn
.
fetchall
(
point_sql
,
args
=
(
cid
,))
point_ids
=
[
i
[
"pid"
]
for
i
in
points
]
now
=
datetime
.
now
()
if
now
.
month
==
1
:
last_month_dt
=
datetime
(
year
=
now
.
year
-
1
,
month
=
12
,
day
=
1
)
else
:
last_month_dt
=
datetime
(
year
=
now
.
year
,
month
=
now
.
month
-
1
,
day
=
1
)
# 首页功率因数取所有进线中最小的
inline_sql
=
"SELECT inlid, `name` FROM inline WHERE cid=
%
s"
async
with
MysqlUtil
()
as
conn
:
inlines
=
await
conn
.
fetchall
(
inline_sql
,
args
=
(
cid
,))
inline_ids
=
[
inline
[
"inlid"
]
for
inline
in
inlines
]
power_factor_results
=
[]
sql
=
"SELECT inlid, save_charge pf_cost, `kpi_x`, `save_charge` "
\
"FROM algo_power_factor_result WHERE inlid in
%
s and month=
%
s"
if
inline_ids
:
power_factor_results
=
await
conn
.
fetchall
(
sql
,
args
=
(
inline_ids
,
last_month_dt
))
pf_kpi_x_list
=
[
i
[
"kpi_x"
]
for
i
in
power_factor_results
if
type
(
i
[
"kpi_x"
])
in
[
int
,
float
]
]
last_month_cos
=
min
(
pf_kpi_x_list
)
if
len
(
pf_kpi_x_list
)
else
""
dt
=
pendulum
.
now
(
tz
=
"Asia/Shanghai"
)
tstamp
=
dt
.
int_timestamp
//
(
15
*
60
)
*
(
15
*
60
)
dt
=
pendulum
.
from_timestamp
(
tstamp
,
tz
=
"Asia/Shanghai"
)
end_dt
=
(
dt
-
timedelta
(
minutes
=
15
))
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
str_dt
=
dt
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
electric_sql
=
f
"SELECT pid,create_time,pttl_mean,qttl_mean FROM "
\
f
"`point_15min_electric` where create_time in "
\
f
"('{str_dt}', '{end_dt}') and pid in
%
s"
results
=
await
conn
.
fetchall
(
electric_sql
,
args
=
(
tuple
(
point_ids
),))
point_map
=
{}
for
res
in
results
:
point_map
.
setdefault
(
res
[
"pid"
],
[])
.
append
(
{
"quarter_time"
:
str
(
res
[
"create_time"
]),
"pttl_mean"
:
res
[
"pttl_mean"
],
"qttl_mean"
:
res
[
"qttl_mean"
],
}
)
total_pttl
,
total_qttl
=
0
,
0
for
point_id
,
records
in
point_map
.
items
():
total_pttl
+=
records
[
0
][
"pttl_mean"
]
total_qttl
+=
records
[
0
][
"qttl_mean"
]
# 计算实时功率的公式
cos_ttl
=
""
l
=
sqrt
(
total_pttl
*
total_pttl
+
total_qttl
*
total_qttl
)
if
l
:
cos_ttl
=
round
(
total_pttl
/
l
,
2
)
if
type
(
last_month_cos
)
in
[
int
,
float
]:
last_month_cos
=
round
(
last_month_cos
,
2
)
return
cos_ttl
,
last_month_cos
real_cos
=
await
compy_real_pf
(
cid
)
lst_month_cos
=
await
compy_lst_month_pf
(
cid
)
if
lst_month_cos
:
lst_month_cos
=
round
(
lst_month_cos
,
2
)
return
real_cos
,
lst_month_cos
async
def
optimization_count_info
(
company_id
:
int
):
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment