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
15ba9fa7
Commit
15ba9fa7
authored
Jun 02, 2023
by
ZZH
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
remove es 2023-6-2
parent
4af81566
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
44 additions
and
353 deletions
+44
-353
elec_charge.py
unify_api/modules/elec_charge/views/elec_charge.py
+23
-108
load_forecast_service.py
...pi/modules/load_analysis/service/load_forecast_service.py
+18
-239
load_forecast.py
unify_api/modules/load_analysis/views/load_forecast.py
+3
-6
No files found.
unify_api/modules/elec_charge/views/elec_charge.py
View file @
15ba9fa7
import
json
import
pendulum
from
pot_libs.common.components.query
import
PageRequest
,
Filter
,
Equal
,
Range
from
pot_libs.es_util.es_query
import
EsQuery
from
pot_libs.
es_util.es_utils
import
EsUtil
import
io
import
pandas
as
pd
from
pot_libs.
common.components.query
import
PageRequest
from
pot_libs.logger
import
log
from
pot_libs.mysql_util.mysql_util
import
MysqlUtil
from
pot_libs.sanic_api
import
summary
,
examples
from
pot_libs.utils.exc_util
import
ParamException
from
unify_api.constants
import
COMPANY_15MIN_POWER
,
POINT_15MIN_POWER
,
PRODUCT
from
unify_api.constants
import
PRODUCT
from
unify_api.modules.common.components.common_cps
import
LevelResp
from
unify_api.modules.common.dao.common_dao
import
company_by_cids
from
unify_api.modules.common.procedures.cids
import
get_
cids
,
get_
proxy_cids
from
unify_api.modules.common.procedures.cids
import
get_proxy_cids
from
unify_api.modules.common.procedures.points
import
points_by_storeys
from
unify_api.modules.elec_charge.components.elec_charge_cps
import
\
power_overview_example
,
PricePolicyReq
,
PricePolicyResp
,
\
...
...
@@ -26,15 +26,12 @@ from unify_api.modules.elec_charge.service.elec_charge_service import \
kwh_points_service
,
kwh_card_level_service
,
load_info_service
from
unify_api.modules.users.procedures.jwt_user
import
jwt_user
from
unify_api.utils.common_utils
import
round_2
,
round_4
,
NumListHelper
from
unify_api.utils.es_query_body
import
agg_statistics
from
unify_api.utils.request_util
import
filed_value_from_list
from
unify_api.utils.time_format
import
convert_es_str
,
last_time_str
,
\
today_month_date
,
srv_time
import
io
import
pandas
as
pd
from
unify_api.utils.time_format
import
last_time_str
,
today_month_date
,
\
srv_time
async
def
power_overview
_new15
(
start
,
end
,
point_id
,
cid
):
async
def
power_overview
(
start
,
end
,
point_id
,
cid
):
if
point_id
==
-
1
:
# 选的全部
sql
=
f
"SELECT spfv, sum(p), sum(kwh), sum(charge) "
\
f
"FROM company_15min_power where create_time "
\
...
...
@@ -68,51 +65,6 @@ async def power_overview_new15(start, end, point_id, cid):
return
pv1
,
pv2
async
def
power_overview
(
date_start
,
date_end
,
point_id
,
cid
):
"""抽离电量电费信息,供调用"""
start_es
=
convert_es_str
(
date_start
)
end_es
=
convert_es_str
(
date_end
)
# 2. 获取query_body # es时间查询字段:quarter_time
query_range
=
Range
(
field
=
"quarter_time"
,
start
=
start_es
,
end
=
end_es
)
if
point_id
==
-
1
:
# 选的全部
equal
=
Equal
(
field
=
"cid"
,
value
=
cid
)
index
=
COMPANY_15MIN_POWER
else
:
equal
=
Equal
(
field
=
"pid"
,
value
=
point_id
)
index
=
POINT_15MIN_POWER
query_filter
=
Filter
(
equals
=
[
equal
],
ranges
=
[
query_range
],
in_groups
=
[],
keywords
=
[])
page_request
=
PageRequest
(
page_size
=
10
,
page_num
=
1
,
filter
=
query_filter
,
sort
=
None
)
query_body
=
EsQuery
.
agg_group_by
(
page_request
,
"spfv.keyword"
,
"sum"
,
(
"kwh"
,
"charge"
,
"p"
))
log
.
info
(
query_body
)
# 3. 查询es
async
with
EsUtil
()
as
es
:
es_re
=
await
es
.
search_origin
(
body
=
query_body
,
index
=
index
)
if
not
es_re
:
return
PowerViewRes
(
charge
=
Spvf
(),
power
=
Spvf
())
es_re
=
es_re
[
"aggregations"
][
"spfvs"
][
"buckets"
]
# 4. 构造返回
pv1
=
Spvf
()
# 电量对象
pv2
=
Spvf
()
# 电费对象
for
info
in
es_re
:
if
info
.
get
(
"key"
)
==
"s"
:
pv1
.
s
=
info
.
get
(
"kwh"
)[
"value"
]
pv2
.
s
=
info
.
get
(
"charge"
)[
"value"
]
elif
info
.
get
(
"key"
)
==
"p"
:
pv1
.
p
=
info
.
get
(
"kwh"
)[
"value"
]
pv2
.
p
=
info
.
get
(
"charge"
)[
"value"
]
elif
info
.
get
(
"key"
)
==
"f"
:
pv1
.
f
=
info
.
get
(
"kwh"
)[
"value"
]
pv2
.
f
=
info
.
get
(
"charge"
)[
"value"
]
elif
info
.
get
(
"key"
)
==
"v"
:
pv1
.
v
=
info
.
get
(
"kwh"
)[
"value"
]
pv2
.
v
=
info
.
get
(
"charge"
)[
"value"
]
return
pv1
,
pv2
@
summary
(
'电量电费信息'
)
@
examples
(
power_overview_example
)
async
def
post_power_overview
(
req
,
body
:
PageRequest
)
->
PowerViewRes
:
...
...
@@ -125,8 +77,8 @@ async def post_power_overview(req, body: PageRequest) -> PowerViewRes:
date_end
=
body
.
filter
.
ranges
[
0
]
.
end
if
date_start
==
date_end
:
return
PowerViewRes
(
power
=
Spvf
(),
charge
=
Spvf
())
pv1
,
pv2
=
await
power_overview_new15
(
start
=
date_start
,
end
=
date_end
,
point_id
=
point_id
,
cid
=
cid
)
pv1
,
pv2
=
await
power_overview
(
date_start
,
date_end
,
point_id
,
cid
)
return
PowerViewRes
(
power
=
pv1
,
charge
=
pv2
)
...
...
@@ -173,7 +125,7 @@ async def post_price_policy(req, body: PricePolicyReq) -> PricePolicyResp:
return
PricePolicyResp
(
price_info
=
res_list
)
async
def
av
er_elec_price_new15
(
start
,
end
,
point_id
,
cid
,
date_type
):
async
def
av
g_ele_price
(
start
,
end
,
point_id
,
cid
,
date_type
):
if
point_id
==
-
1
:
# 选的全部
table_name
=
"company_15min_power"
name
=
"cid"
...
...
@@ -203,43 +155,6 @@ async def aver_elec_price_new15(start, end, point_id, cid, date_type):
return
this_ck
,
last_ck
async
def
aver_elec_price
(
start
,
end
,
point_id
,
cid
,
date_type
):
"""平均电价和增长率, 抽离功能"""
if
point_id
==
-
1
:
# 选的全部
matchs
=
{
"cid"
:
cid
}
index
=
COMPANY_15MIN_POWER
else
:
matchs
=
{
"pid"
:
point_id
}
index
=
POINT_15MIN_POWER
# 2.构造query_body
query_this
=
agg_statistics
(
matchs
=
matchs
,
aggs_key
=
[
"kwh"
,
"charge"
],
start
=
start
,
end
=
end
,
date_key
=
"quarter_time"
)
# 3.返回数据
async
with
EsUtil
()
as
es
:
this_re
=
await
es
.
search_origin
(
body
=
query_this
,
index
=
index
)
# 本周期电量电费
this_ck
=
ChargeKwh
()
this_ck
.
charge
=
this_re
[
"aggregations"
][
"charge"
][
"value"
]
this_ck
.
kwh
=
this_re
[
"aggregations"
][
"kwh"
][
"value"
]
if
date_type
==
"range"
:
return
this_ck
,
None
# 上周期电量电费
start_last
,
end_last
=
last_time_str
(
start
,
end
,
date_type
)
query_last
=
agg_statistics
(
matchs
=
matchs
,
aggs_key
=
[
"kwh"
,
"charge"
],
start
=
start_last
,
end
=
end_last
,
date_key
=
"quarter_time"
)
async
with
EsUtil
()
as
es
:
last_re
=
await
es
.
search_origin
(
body
=
query_last
,
index
=
index
)
last_ck
=
ChargeKwh
()
last_ck
.
charge
=
last_re
[
"aggregations"
][
"charge"
][
"value"
]
last_ck
.
kwh
=
last_re
[
"aggregations"
][
"kwh"
][
"value"
]
return
this_ck
,
last_ck
@
summary
(
'平均电价和增长率'
)
async
def
post_aver_elec_price
(
req
,
body
:
AverPriceReq
)
->
AverPriceResp
:
"""平均电价, 增长率"""
...
...
@@ -251,7 +166,7 @@ async def post_aver_elec_price(req, body: AverPriceReq) -> AverPriceResp:
date_type
=
body
.
date_type
if
start
==
end
:
return
AverPriceResp
(
this_power
=
ChargeKwh
(),
last_power
=
ChargeKwh
())
this_ck
,
last_ck
=
await
av
er_elec_price_new15
(
start
,
end
,
point_id
,
cid
,
this_ck
,
last_ck
=
await
av
g_ele_price
(
start
,
end
,
point_id
,
cid
,
date_type
)
return
AverPriceResp
(
this_power
=
this_ck
,
last_power
=
last_ck
)
...
...
@@ -262,20 +177,20 @@ async def post_index_charge(req, body: IndexChargeReq) -> IndexChargeResp:
point_id
=
body
.
point_id
today_start
,
today_end
,
month_start
,
month_end
=
today_month_date
()
# 1. 今日电量电费spvf
kwh_t
,
charge_t
=
await
power_overview
_new15
(
today_start
,
today_en
d
,
point_id
,
cid
)
kwh_t
,
charge_t
=
await
power_overview
(
today_start
,
today_end
,
point_i
d
,
cid
)
today_spvf
=
PowerViewRes
(
power
=
kwh_t
,
charge
=
charge_t
)
# 2. 本月电量电费spvf
kwh_m
,
charge_m
=
await
power_overview
_new15
(
month_start
,
month_en
d
,
point_id
,
cid
)
kwh_m
,
charge_m
=
await
power_overview
(
month_start
,
month_end
,
point_i
d
,
cid
)
month_spvf
=
PowerViewRes
(
power
=
kwh_m
,
charge
=
charge_m
)
# 3. 今日平均电价和增长率
this_ck_t
,
last_ck_t
=
await
av
er_elec_price_new15
(
today_start
,
today_end
,
this_ck_t
,
last_ck_t
=
await
av
g_ele_price
(
today_start
,
today_end
,
point_id
,
cid
,
date_type
=
"day"
)
today_power
=
AverPriceResp
(
this_power
=
this_ck_t
,
last_power
=
last_ck_t
)
# 4. 本月平均电价和增长率
this_ck_m
,
last_ck_m
=
await
av
er_elec_price_new15
(
month_start
,
month_end
,
this_ck_m
,
last_ck_m
=
await
av
g_ele_price
(
month_start
,
month_end
,
point_id
,
cid
,
date_type
=
"month"
)
month_power
=
AverPriceResp
(
this_power
=
this_ck_m
,
last_power
=
last_ck_m
)
...
...
unify_api/modules/load_analysis/service/load_forecast_service.py
View file @
15ba9fa7
This diff is collapsed.
Click to expand it.
unify_api/modules/load_analysis/views/load_forecast.py
View file @
15ba9fa7
from
pot_libs.sanic_api
import
summary
from
unify_api.modules.load_analysis.components.load_forecast_cps
import
(
ForecastReq
,
ForecastResp
,
ForecastReq
,
ForecastResp
,
)
from
unify_api.modules.load_analysis.service.load_forecast_service
import
\
load_forecast_s
ervice
,
load_forecast_service_new15
load_forecast_s
rv
from
unify_api.utils.time_format
import
time_pick_transf_new
...
...
@@ -17,9 +16,7 @@ async def post_load_forecast(req, body: ForecastReq) -> ForecastResp:
end
=
body
.
end
# 管理版本多个工厂的情况, 兼容能力最强的参数cids, 保留旧有的cid:
cids
=
body
.
cids
# return await load_forecast_service(cid, cids, start, end)
terms
=
cids
if
cids
else
[
cid
]
# 获取时间差
interval
,
slots
=
time_pick_transf_new
(
start
,
end
)
return
await
load_forecast_service_new15
(
terms
,
start
,
end
,
interval
,
slots
)
return
await
load_forecast_srv
(
terms
,
start
,
end
,
interval
,
slots
)
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