1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
from pot_libs.logger import log
from unify_api.constants import REDUCE_CO2
from unify_api.utils.common_utils import round_2
def env_benefit_ca(conversion_year, energy_standard, total_area):
"""环境效益逻辑"""
# 1. 若折算年 < 能耗标准,环境效益的文字显示为“相比能耗标准,
# 节约用电XX万kWh,减少排放XX万kg二氧化碳,相当于多种XX棵树”;
# 2. 若折算年 > 能耗标准,环境效益的文字显示为“超出能耗标准,请注意控制节能降耗”;
# 3. 若折算年 = 能耗标准,环境效益的文字显示为“符合能耗标准,请继续保持”。
if not all([conversion_year, energy_standard, total_area]):
log.warning("能耗标准,折算年, 存在空值")
return ""
if conversion_year == energy_standard:
return "符合能耗标准,请继续保持"
elif conversion_year > energy_standard:
return "超出能耗标准,请注意控制节能降耗"
else:
# 1. 节约用电, (能耗标准 - 折算年) * 总面积
diff_kwh = (energy_standard - conversion_year)*total_area # 节约用电int
if diff_kwh > 10000:
diff_kwh_str = str(round_2(diff_kwh / 10000)) + "万"
else:
diff_kwh_str = round_2(diff_kwh)
# 2. 减少二氧化碳排放
# 当用户节约1kWh电量时,减少碳排放0.2047kg;减少二氧化碳排放0.751kg
reduce_c02 = round(diff_kwh * REDUCE_CO2) # 减少二氧化碳排放
if reduce_c02 > 10000:
reduce_c02_str = str(round_2(reduce_c02 / 10000)) + "万"
else:
reduce_c02_str = round_2(reduce_c02)
# 3. 植树折算
"""
折算效益时,时间粒度为年则取18.3kg;
时间粒度为月则取1.525kg;
时间粒度为天则取0.05kg。
测算时段内的二氧化碳排放量除以上述系数得到相当于种多少棵树
"""
add_tree = round(reduce_c02 / 1.525) # 多种XX棵树int
# 多种数
return f"低于能耗标准用电{diff_kwh_str}kWh," \
f"减少排放{reduce_c02_str}kg二氧化碳," \
f"相当于多种{add_tree}棵树"