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
fb18f2f4
Commit
fb18f2f4
authored
Apr 21, 2023
by
lcn
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修复Bug
parent
80208422
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
256 additions
and
181 deletions
+256
-181
elec_charge_pds.py
unify_api/modules/elec_charge/procedures/elec_charge_pds.py
+6
-4
elec_charge_service.py
unify_api/modules/elec_charge/service/elec_charge_service.py
+14
-3
elec_charge.py
unify_api/modules/elec_charge/views/elec_charge.py
+40
-9
electric_dao.py
unify_api/modules/electric/dao/electric_dao.py
+11
-5
count_info_pds.py
unify_api/modules/home_page/procedures/count_info_pds.py
+160
-145
time_format.py
unify_api/utils/time_format.py
+25
-15
No files found.
unify_api/modules/elec_charge/procedures/elec_charge_pds.py
View file @
fb18f2f4
...
@@ -217,7 +217,7 @@ async def power_aggs_cid_proxy(start, end, cid_list, date_type):
...
@@ -217,7 +217,7 @@ async def power_aggs_cid_proxy(start, end, cid_list, date_type):
for
info
in
es_re_this
:
for
info
in
es_re_this
:
cid
=
info
.
get
(
"key"
)
cid
=
info
.
get
(
"key"
)
cid_name
=
com_dic
[
cid
][
"shortname"
]
cid_name
=
com_dic
[
cid
][
"shortname"
]
kwh
=
round_2
(
info
.
get
(
"kwh"
)[
"value"
])
kwh
=
round_2
(
info
.
get
(
"kwh"
)[
"value"
])
if
kwh
==
0
:
if
kwh
==
0
:
continue
continue
...
@@ -229,9 +229,10 @@ async def power_aggs_cid_proxy(start, end, cid_list, date_type):
...
@@ -229,9 +229,10 @@ async def power_aggs_cid_proxy(start, end, cid_list, date_type):
continue
continue
except
Exception
as
e
:
except
Exception
as
e
:
log
.
error
(
e
)
log
.
error
(
e
)
log
.
info
(
f
"本次有电量数据, 上周期没有电量数据, cid:{cid}, start:{start}, end:{end}"
)
log
.
info
(
f
"本次有电量数据, 上周期没有电量数据, cid:{cid}, start:{start}, end:{end}"
)
continue
continue
charge
=
round_2
(
info
.
get
(
"charge"
)[
"value"
])
charge
=
round_2
(
info
.
get
(
"charge"
)[
"value"
])
try
:
try
:
charge_last
=
es_re_last_dic
[
cid
][
"charge"
][
"value"
]
charge_last
=
es_re_last_dic
[
cid
][
"charge"
][
"value"
]
...
@@ -241,7 +242,8 @@ async def power_aggs_cid_proxy(start, end, cid_list, date_type):
...
@@ -241,7 +242,8 @@ async def power_aggs_cid_proxy(start, end, cid_list, date_type):
except
Exception
as
e
:
except
Exception
as
e
:
log
.
error
(
e
)
log
.
error
(
e
)
log
.
info
(
"本次有数据, 上周期没有数据"
)
log
.
info
(
"本次有数据, 上周期没有数据"
)
log
.
info
(
f
"本次有电费数据, 上周期没有电费数据, cid:{cid}, start:{start}, end:{end}"
)
log
.
info
(
f
"本次有电费数据, 上周期没有电费数据, cid:{cid}, start:{start}, end:{end}"
)
continue
continue
price
=
round_2
(
charge
/
kwh
)
price
=
round_2
(
charge
/
kwh
)
price_last
=
round_2
(
charge_last
/
kwh_last
)
price_last
=
round_2
(
charge_last
/
kwh_last
)
...
...
unify_api/modules/elec_charge/service/elec_charge_service.py
View file @
fb18f2f4
import
pendulum
from
unify_api.constants
import
POINT_LEVEL_MAP
from
unify_api.constants
import
POINT_LEVEL_MAP
from
unify_api.modules.common.components.common_cps
import
LevelResp
from
unify_api.modules.common.components.common_cps
import
LevelResp
from
unify_api.modules.common.procedures.points
import
points_by_storeys
from
unify_api.modules.common.procedures.points
import
points_by_storeys
...
@@ -6,6 +8,8 @@ from unify_api.modules.elec_charge.dao.elec_charge_dao import \
...
@@ -6,6 +8,8 @@ from unify_api.modules.elec_charge.dao.elec_charge_dao import \
query_charge_aggs_points
,
query_charge_aggs_points_new15
query_charge_aggs_points
,
query_charge_aggs_points_new15
from
unify_api.modules.electric.dao.electric_dao
import
\
from
unify_api.modules.electric.dao.electric_dao
import
\
monitor_point_join_by_points
monitor_point_join_by_points
from
unify_api.modules.home_page.procedures.count_info_pds
import
current_load
,
\
current_load_new15
from
unify_api.utils.common_utils
import
round_2
,
division_two
from
unify_api.utils.common_utils
import
round_2
,
division_two
...
@@ -86,11 +90,11 @@ async def kwh_card_level_service(cid, point_list, start, end):
...
@@ -86,11 +90,11 @@ async def kwh_card_level_service(cid, point_list, start, end):
kwh
=
round_2
(
es_res
[
point_id
][
"kwh"
])
kwh
=
round_2
(
es_res
[
point_id
][
"kwh"
])
charge
=
round_2
(
es_res
[
point_id
][
"charge"
])
charge
=
round_2
(
es_res
[
point_id
][
"charge"
])
price
=
round_2
(
division_two
(
charge
,
kwh
))
price
=
round_2
(
division_two
(
charge
,
kwh
))
res_dic
[
"kwh"
]
=
kwh
res_dic
[
"kwh"
]
=
kwh
res_dic
[
"charge"
]
=
charge
res_dic
[
"charge"
]
=
charge
res_dic
[
"price"
]
=
price
res_dic
[
"price"
]
=
price
ret_data
[
m_type
]
.
append
(
res_dic
)
ret_data
[
m_type
]
.
append
(
res_dic
)
return
LevelResp
(
return
LevelResp
(
inline
=
ret_data
[
"inline"
],
inline
=
ret_data
[
"inline"
],
...
@@ -101,4 +105,11 @@ async def kwh_card_level_service(cid, point_list, start, end):
...
@@ -101,4 +105,11 @@ async def kwh_card_level_service(cid, point_list, start, end):
)
)
async
def
load_info_service
(
cid_list
):
# 实时负荷
cur_load
=
await
current_load_new15
(
cid_list
)
yesterday_dt
=
pendulum
.
now
(
tz
=
"Asia/Shanghai"
)
.
subtract
(
days
=
1
)
yes_load
=
await
current_load_new15
(
cid_list
,
yesterday_dt
)
load_percent
=
round
((
cur_load
-
yes_load
)
/
yes_load
,
2
)
if
cur_load
and
yes_load
else
""
return
cur_load
,
yes_load
,
load_percent
unify_api/modules/elec_charge/views/elec_charge.py
View file @
fb18f2f4
...
@@ -16,14 +16,16 @@ from unify_api.modules.elec_charge.components.elec_charge_cps import \
...
@@ -16,14 +16,16 @@ from unify_api.modules.elec_charge.components.elec_charge_cps import \
power_overview_example
,
PricePolicyReq
,
PricePolicyResp
,
\
power_overview_example
,
PricePolicyReq
,
PricePolicyResp
,
\
PricePolicy
,
AverPriceReq
,
PowerViewRes
,
Spvf
,
AverPriceResp
,
ChargeKwh
,
\
PricePolicy
,
AverPriceReq
,
PowerViewRes
,
Spvf
,
AverPriceResp
,
ChargeKwh
,
\
IndexChargeReq
,
IndexChargeResp
,
PopReq
,
PopResp
,
MtpResp
,
PspResp
,
\
IndexChargeReq
,
IndexChargeResp
,
PopReq
,
PopResp
,
MtpResp
,
PspResp
,
\
IpspResp
,
KpReq
,
KpResp
,
KclReq
,
ProductProxyReq
IpspResp
,
KpReq
,
KpResp
,
KclReq
,
ProductProxyReq
,
LoadInfoReq
,
LoadInfoResp
from
unify_api.modules.elec_charge.dao.elec_charge_dao
import
\
from
unify_api.modules.elec_charge.dao.elec_charge_dao
import
\
query_charge_aggs_points
,
get_kwh_charge
,
query_charge_aggs_points_new15
query_charge_aggs_points
,
get_kwh_charge
,
query_charge_aggs_points_new15
from
unify_api.modules.elec_charge.procedures.elec_charge_pds
import
\
from
unify_api.modules.elec_charge.procedures.elec_charge_pds
import
\
quarters_trans
,
power_overview_proxy
,
total_value
,
power_aggs_cid_proxy_new15
,
\
quarters_trans
,
power_overview_proxy
,
total_value
,
\
power_aggs_cid_proxy_new15
,
\
power_index_cid_proxy_new15
,
power_overview_proxy15
power_index_cid_proxy_new15
,
power_overview_proxy15
from
unify_api.modules.elec_charge.service.elec_charge_service
import
\
from
unify_api.modules.elec_charge.service.elec_charge_service
import
\
kwh_points_service
,
kwh_card_level_service
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.common_utils
import
round_2
,
round_4
,
NumListHelper
from
unify_api.utils.es_query_body
import
agg_statistics
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.request_util
import
filed_value_from_list
...
@@ -289,7 +291,7 @@ async def post_power_overview_proxy(req, body: PopReq) -> PopResp:
...
@@ -289,7 +291,7 @@ async def post_power_overview_proxy(req, body: PopReq) -> PopResp:
proxy_id
=
body
.
proxy_id
proxy_id
=
body
.
proxy_id
host
=
req
.
host
host
=
req
.
host
product
=
PRODUCT
.
get
(
host
)
product
=
PRODUCT
.
get
(
host
)
user_id
=
req
.
ctx
.
user_id
user_id
=
jwt_user
(
req
)
# 全部工厂
# 全部工厂
if
not
cid_list
:
if
not
cid_list
:
log
.
info
(
f
"power_overview_proxy根据用户userId:{user_id} "
log
.
info
(
f
"power_overview_proxy根据用户userId:{user_id} "
...
@@ -314,13 +316,14 @@ async def post_power_overview_proxy(req, body: PopReq) -> PopResp:
...
@@ -314,13 +316,14 @@ async def post_power_overview_proxy(req, body: PopReq) -> PopResp:
# 获取上一周期开始结束时间
# 获取上一周期开始结束时间
start_last
,
end_last
=
last_time_str
(
start
,
end
,
date_type
)
start_last
,
end_last
=
last_time_str
(
start
,
end
,
date_type
)
power
,
charge
=
await
power_overview_proxy15
(
start
,
end
,
cid_list
)
power
,
charge
=
await
power_overview_proxy15
(
start
,
end
,
cid_list
)
power_last
,
charge_last
=
await
power_overview_proxy15
(
start_last
,
end_last
,
power_last
,
charge_last
=
await
power_overview_proxy15
(
start_last
,
cid_list
)
end_last
,
cid_list
)
if
not
all
([
power
,
charge
,
power_last
,
charge_last
]):
if
not
all
([
power
,
charge
,
power_last
,
charge_last
]):
return
PopResp
(
power
=
Spvf
(),
charge
=
Spvf
())
return
PopResp
(
power
=
Spvf
(),
charge
=
Spvf
())
total_power
=
total_value
(
power
)
total_power
=
total_value
(
power
)
total_charge
=
total_value
(
charge
)
total_charge
=
total_value
(
charge
)
total_power_last
=
total_value
(
power_last
)
total_power_last
=
total_value
(
power_last
)
total_charge_last
=
total_value
(
charge_last
)
total_charge_last
=
total_value
(
charge_last
)
# 增长率
# 增长率
...
@@ -351,7 +354,7 @@ async def post_month_today_proxy(req, body: ProductProxyReq) -> MtpResp:
...
@@ -351,7 +354,7 @@ async def post_month_today_proxy(req, body: ProductProxyReq) -> MtpResp:
# 1. 获取参数
# 1. 获取参数
host
=
req
.
host
host
=
req
.
host
product
=
PRODUCT
.
get
(
host
)
product
=
PRODUCT
.
get
(
host
)
user_id
=
req
.
ctx
.
user_id
user_id
=
jwt_user
(
req
)
# cid_list = await get_cids(user_id, product)
# cid_list = await get_cids(user_id, product)
proxy_id
=
body
.
proxy_id
proxy_id
=
body
.
proxy_id
cid_list
=
await
get_proxy_cids
(
user_id
,
product
,
proxy_id
)
\
cid_list
=
await
get_proxy_cids
(
user_id
,
product
,
proxy_id
)
\
...
@@ -364,7 +367,7 @@ async def post_month_today_proxy(req, body: ProductProxyReq) -> MtpResp:
...
@@ -364,7 +367,7 @@ async def post_month_today_proxy(req, body: ProductProxyReq) -> MtpResp:
today_start
,
today_end
,
month_start
,
month_end
=
today_month_date
()
today_start
,
today_end
,
month_start
,
month_end
=
today_month_date
()
# 2. 本月/上月数据
# 2. 本月/上月数据
last_month_start
,
last_month_end
=
last_time_str
(
month_start
,
month_end
,
last_month_start
,
last_month_end
=
last_time_str
(
month_start
,
month_end
,
"month"
)
"month"
,
True
)
this_month_p
,
this_month_charge
=
await
power_overview_proxy15
(
this_month_p
,
this_month_charge
=
await
power_overview_proxy15
(
month_start
,
month_end
,
cid_list
)
month_start
,
month_end
,
cid_list
)
last_month_p
,
last_month_charge
=
await
power_overview_proxy15
(
last_month_p
,
last_month_charge
=
await
power_overview_proxy15
(
...
@@ -541,3 +544,31 @@ async def post_kwh_card_level(req, body: KclReq) -> LevelResp:
...
@@ -541,3 +544,31 @@ async def post_kwh_card_level(req, body: KclReq) -> LevelResp:
start
=
body
.
start
start
=
body
.
start
end
=
body
.
end
end
=
body
.
end
return
await
kwh_card_level_service
(
cid
,
point_list
,
start
,
end
)
return
await
kwh_card_level_service
(
cid
,
point_list
,
start
,
end
)
@
summary
(
"获取知电管理版首页负荷信息"
)
async
def
post_load_info
(
request
,
body
:
LoadInfoReq
)
->
LoadInfoResp
:
# 1. 获取company_id
# 1. 获取参数
product
=
PRODUCT
.
get
(
request
.
host
)
user_id
=
jwt_user
(
request
)
proxy_id
=
body
.
proxy_id
cid_list
=
await
get_proxy_cids
(
user_id
,
product
,
proxy_id
)
\
if
proxy_id
else
None
# 全部工厂
if
not
cid_list
:
log
.
info
(
f
"未查询到工厂, userId:{user_id} product:{product}"
)
return
LoadInfoResp
()
try
:
# 实时负荷,昨日同时负荷,对比昨日
current_load
,
yesterday_load
,
load_percent
=
await
load_info_service
(
cid_list
)
except
Exception
as
e
:
log
.
exception
(
e
)
return
LoadInfoResp
()
.
server_error
()
return
LoadInfoResp
(
current_load
=
current_load
,
yesterday_load
=
yesterday_load
,
load_percent
=
load_percent
)
unify_api/modules/electric/dao/electric_dao.py
View file @
fb18f2f4
...
@@ -5,7 +5,7 @@ async def monitor_point_join_by_points(points):
...
@@ -5,7 +5,7 @@ async def monitor_point_join_by_points(points):
"""monitor和point关联"""
"""monitor和point关联"""
sql
=
"SELECT m.mtid,p.ctnum,m.name, m.m_type, p.pid,p.cid "
\
sql
=
"SELECT m.mtid,p.ctnum,m.name, m.m_type, p.pid,p.cid "
\
"FROM monitor m inner join point p on m.mtid = p.mtid "
\
"FROM monitor m inner join point p on m.mtid = p.mtid "
\
"WHERE p.pid in
%
s and m.demolished = 0 order by field(p.pid,{})"
.
\
"WHERE p.pid in
%
s and m.demolished = 0 order by field(p.pid,{})"
.
\
format
(
str
(
points
)
.
replace
(
"["
,
""
)
.
replace
(
"]"
,
""
))
format
(
str
(
points
)
.
replace
(
"["
,
""
)
.
replace
(
"]"
,
""
))
async
with
MysqlUtil
()
as
conn
:
async
with
MysqlUtil
()
as
conn
:
monitor_point_list
=
await
conn
.
fetchall
(
sql
,
args
=
(
tuple
(
points
),))
monitor_point_list
=
await
conn
.
fetchall
(
sql
,
args
=
(
tuple
(
points
),))
...
@@ -26,7 +26,7 @@ async def get_electric_datas_dao(table_name, pid, start, end):
...
@@ -26,7 +26,7 @@ async def get_electric_datas_dao(table_name, pid, start, end):
sql
=
f
"SELECT * FROM {table_name} where pid=
%
s and create_time "
\
sql
=
f
"SELECT * FROM {table_name} where pid=
%
s and create_time "
\
f
"BETWEEN '{start}' and '{end}' ORDER BY create_time desc"
f
"BETWEEN '{start}' and '{end}' ORDER BY create_time desc"
async
with
MysqlUtil
()
as
conn
:
async
with
MysqlUtil
()
as
conn
:
electric_datas
=
await
conn
.
fetchall
(
sql
,
args
=
(
pid
,
))
electric_datas
=
await
conn
.
fetchall
(
sql
,
args
=
(
pid
,))
return
electric_datas
return
electric_datas
...
@@ -35,7 +35,7 @@ async def get_qual_history_dao(table_name, pid, start, end, date_format):
...
@@ -35,7 +35,7 @@ async def get_qual_history_dao(table_name, pid, start, end, date_format):
f
"p.* FROM {table_name} p where p.pid=
%
s and p.create_time "
\
f
"p.* FROM {table_name} p where p.pid=
%
s and p.create_time "
\
f
"BETWEEN '{start}' and '{end}' order by p.create_time"
f
"BETWEEN '{start}' and '{end}' order by p.create_time"
async
with
MysqlUtil
()
as
conn
:
async
with
MysqlUtil
()
as
conn
:
datas
=
await
conn
.
fetchall
(
sql
,
args
=
(
pid
,
))
datas
=
await
conn
.
fetchall
(
sql
,
args
=
(
pid
,))
return
datas
return
datas
...
@@ -51,6 +51,12 @@ async def get_elec_history_dao(table_name, pid, start, end, date_format):
...
@@ -51,6 +51,12 @@ async def get_elec_history_dao(table_name, pid, start, end, date_format):
async
def
get_elec_mtid_sid_by_cid
(
cid
):
async
def
get_elec_mtid_sid_by_cid
(
cid
):
if
isinstance
(
cid
,
tuple
):
cid_tuple
=
cid
elif
isinstance
(
cid
,
list
):
cid_tuple
=
tuple
(
cid
)
else
:
cid_tuple
=
(
cid
,)
sql
=
(
sql
=
(
f
"""
f
"""
SELECT
SELECT
...
@@ -59,9 +65,9 @@ async def get_elec_mtid_sid_by_cid(cid):
...
@@ -59,9 +65,9 @@ async def get_elec_mtid_sid_by_cid(cid):
FROM
FROM
monitor
monitor
WHERE
WHERE
cid
= {cid}
;
cid
in
%
s
;
"""
"""
)
)
async
with
MysqlUtil
()
as
conn
:
async
with
MysqlUtil
()
as
conn
:
datas
=
await
conn
.
fetchall
(
sql
)
datas
=
await
conn
.
fetchall
(
sql
,
args
=
(
cid_tuple
,)
)
return
datas
if
datas
else
[]
return
datas
if
datas
else
[]
unify_api/modules/home_page/procedures/count_info_pds.py
View file @
fb18f2f4
This diff is collapsed.
Click to expand it.
unify_api/utils/time_format.py
View file @
fb18f2f4
...
@@ -115,6 +115,7 @@ def proxy_power_slots(start, end, date_format="MM-DD", is_duration=False):
...
@@ -115,6 +115,7 @@ def proxy_power_slots(start, end, date_format="MM-DD", is_duration=False):
slots
.
append
(
dt
)
slots
.
append
(
dt
)
return
slots
return
slots
def
day_of_month
(
start
):
def
day_of_month
(
start
):
"""这个月有几天"""
"""这个月有几天"""
start_f
=
my_pendulum
.
from_format
(
start
,
'YYYY-MM-DD HH:mm:ss'
)
start_f
=
my_pendulum
.
from_format
(
start
,
'YYYY-MM-DD HH:mm:ss'
)
...
@@ -311,7 +312,7 @@ def convert_to_es_str(str1, format="YYYY-MM-DD HH:mm:ss"):
...
@@ -311,7 +312,7 @@ def convert_to_es_str(str1, format="YYYY-MM-DD HH:mm:ss"):
return
str
(
es_date
)
return
str
(
es_date
)
def
last_time_str
(
start
,
end
,
date_type
):
def
last_time_str
(
start
,
end
,
date_type
,
date_end
=
False
):
"""年月日, 获取上一周期时间"""
"""年月日, 获取上一周期时间"""
if
date_type
not
in
(
"day"
,
"month"
,
"year"
):
if
date_type
not
in
(
"day"
,
"month"
,
"year"
):
return
None
return
None
...
@@ -319,13 +320,22 @@ def last_time_str(start, end, date_type):
...
@@ -319,13 +320,22 @@ def last_time_str(start, end, date_type):
end_f
=
my_pendulum
.
from_format
(
end
,
'YYYY-MM-DD HH:mm:ss'
)
end_f
=
my_pendulum
.
from_format
(
end
,
'YYYY-MM-DD HH:mm:ss'
)
if
date_type
==
"day"
:
if
date_type
==
"day"
:
start_last
=
start_f
.
subtract
(
days
=
1
)
start_last
=
start_f
.
subtract
(
days
=
1
)
end_last
=
end_f
.
subtract
(
days
=
1
)
if
date_end
:
end_last
=
start_last
.
end_of
(
unit
=
date_type
)
else
:
end_last
=
end_f
.
subtract
(
days
=
1
)
elif
date_type
==
"month"
:
elif
date_type
==
"month"
:
start_last
=
start_f
.
subtract
(
months
=
1
)
start_last
=
start_f
.
subtract
(
months
=
1
)
end_last
=
end_f
.
subtract
(
months
=
1
)
if
date_end
:
end_last
=
start_last
.
end_of
(
unit
=
date_type
)
else
:
end_last
=
end_f
.
subtract
(
months
=
1
)
else
:
else
:
start_last
=
start_f
.
subtract
(
years
=
1
)
start_last
=
start_f
.
subtract
(
years
=
1
)
end_last
=
end_f
.
subtract
(
years
=
1
)
if
date_end
:
end_last
=
start_last
.
end_of
(
unit
=
date_type
)
else
:
end_last
=
end_f
.
subtract
(
years
=
1
)
return
start_last
.
format
(
"YYYY-MM-DD HH:mm:ss"
),
end_last
.
format
(
return
start_last
.
format
(
"YYYY-MM-DD HH:mm:ss"
),
end_last
.
format
(
"YYYY-MM-DD HH:mm:ss"
)
"YYYY-MM-DD HH:mm:ss"
)
...
@@ -356,7 +366,7 @@ def get_datetime_str(timestamp):
...
@@ -356,7 +366,7 @@ def get_datetime_str(timestamp):
'''
'''
if
not
timestamp
:
if
not
timestamp
:
timestamp
=
time
.
time
()
timestamp
=
time
.
time
()
time_array
=
time
.
localtime
(
timestamp
)
time_array
=
time
.
localtime
(
timestamp
)
return
time
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
,
time_array
)
return
time
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
,
time_array
)
...
@@ -671,7 +681,7 @@ def get_last_3month_start_end(date=None):
...
@@ -671,7 +681,7 @@ def get_last_3month_start_end(date=None):
:param dt: datetime obj
:param dt: datetime obj
:return:
:return:
"""
"""
if
not
date
:
if
not
date
:
dt
=
get_current_date_time
()
dt
=
get_current_date_time
()
else
:
else
:
...
@@ -733,7 +743,7 @@ def get_this_year_start_end(date=None):
...
@@ -733,7 +743,7 @@ def get_this_year_start_end(date=None):
:param dt: datetime obj
:param dt: datetime obj
:return:
:return:
"""
"""
if
not
date
:
if
not
date
:
dt
=
get_current_date_time
()
dt
=
get_current_date_time
()
else
:
else
:
...
@@ -749,7 +759,7 @@ def get_last_year_start_end(date=None):
...
@@ -749,7 +759,7 @@ def get_last_year_start_end(date=None):
:param dt: datetime obj
:param dt: datetime obj
:return:
:return:
"""
"""
if
not
date
:
if
not
date
:
dt
=
get_current_date_time
()
dt
=
get_current_date_time
()
else
:
else
:
...
@@ -765,7 +775,7 @@ def get_last_month_start_end(date=None):
...
@@ -765,7 +775,7 @@ def get_last_month_start_end(date=None):
:param dt: datetime obj
:param dt: datetime obj
:return:
:return:
"""
"""
if
not
date
:
if
not
date
:
dt
=
get_current_date_time
()
dt
=
get_current_date_time
()
else
:
else
:
...
@@ -873,7 +883,7 @@ def get_current_start_n_end_dt(date_type, include_end_day=False):
...
@@ -873,7 +883,7 @@ def get_current_start_n_end_dt(date_type, include_end_day=False):
start_year
+=
1
start_year
+=
1
start_month
=
start_month
-
12
start_month
=
start_month
-
12
start
=
datetime
.
datetime
(
start_year
,
start_month
,
1
)
start
=
datetime
.
datetime
(
start_year
,
start_month
,
1
)
elif
date_type
==
"season"
:
elif
date_type
==
"season"
:
season_number
=
int
((
current_dt
.
month
-
1
)
/
3
)
season_number
=
int
((
current_dt
.
month
-
1
)
/
3
)
start
=
datetime
.
datetime
(
current_dt
.
year
,
season_number
*
3
+
1
,
1
)
start
=
datetime
.
datetime
(
current_dt
.
year
,
season_number
*
3
+
1
,
1
)
...
@@ -984,7 +994,7 @@ def get_previous_slot(slots, date_type, compare_type=None):
...
@@ -984,7 +994,7 @@ def get_previous_slot(slots, date_type, compare_type=None):
return
get_slots_between_date
(
return
get_slots_between_date
(
start
-
datetime
.
timedelta
(
days
=
days
),
start
-
datetime
.
timedelta
(
days
=
days
),
end
-
datetime
.
timedelta
(
days
=
days
),
date_type
)
end
-
datetime
.
timedelta
(
days
=
days
),
date_type
)
elif
date_type
==
"hour"
:
elif
date_type
==
"hour"
:
hours
=
int
((
end
-
start
)
.
total_seconds
()
/
3600
)
+
1
hours
=
int
((
end
-
start
)
.
total_seconds
()
/
3600
)
+
1
return
get_slots_between_date
(
start
-
datetime
.
timedelta
(
hours
=
hours
),
return
get_slots_between_date
(
start
-
datetime
.
timedelta
(
hours
=
hours
),
...
@@ -1032,8 +1042,8 @@ def get_slots_between_date(start, end, interval_type, growth_type=None):
...
@@ -1032,8 +1042,8 @@ def get_slots_between_date(start, end, interval_type, growth_type=None):
while
start
<=
end
:
while
start
<=
end
:
date_dts
.
append
([
start
,
start
+
datetime
.
timedelta
(
days
=
1
)])
date_dts
.
append
([
start
,
start
+
datetime
.
timedelta
(
days
=
1
)])
start
+=
datetime
.
timedelta
(
days
=
1
)
start
+=
datetime
.
timedelta
(
days
=
1
)
elif
interval_type
==
"month"
:
elif
interval_type
==
"month"
:
start_months
=
start
.
year
*
12
+
start
.
month
start_months
=
start
.
year
*
12
+
start
.
month
end_months
=
end
.
year
*
12
+
end
.
month
end_months
=
end
.
year
*
12
+
end
.
month
...
@@ -1145,7 +1155,7 @@ def deco_convert_date_to_dt(f):
...
@@ -1145,7 +1155,7 @@ def deco_convert_date_to_dt(f):
if
kwarg
in
kwargs
and
kwargs
[
kwarg
]:
if
kwarg
in
kwargs
and
kwargs
[
kwarg
]:
kwargs
[
kwarg
]
=
convert_to_dt
(
kwargs
[
kwarg
])
kwargs
[
kwarg
]
=
convert_to_dt
(
kwargs
[
kwarg
])
return
f
(
*
args
,
**
kwargs
)
return
f
(
*
args
,
**
kwargs
)
return
deco
return
deco
...
@@ -1432,7 +1442,7 @@ def get_time_duration_by_str(duration_str):
...
@@ -1432,7 +1442,7 @@ def get_time_duration_by_str(duration_str):
days
=
int
(
duration_str
/
(
60
*
60
*
24
))
days
=
int
(
duration_str
/
(
60
*
60
*
24
))
if
days
>
0
:
if
days
>
0
:
return_str
+=
"
%
s天"
%
str
(
days
)
return_str
+=
"
%
s天"
%
str
(
days
)
hours
=
int
(
duration_str
%
(
60
*
60
*
24
)
/
(
60
*
60
))
hours
=
int
(
duration_str
%
(
60
*
60
*
24
)
/
(
60
*
60
))
if
hours
>
0
:
if
hours
>
0
:
return_str
+=
"
%
s时"
%
str
(
hours
)
return_str
+=
"
%
s时"
%
str
(
hours
)
...
...
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