Added the interface of carbon emission analysis report of meter 2

pull/118/head
tianlinzhong 2022-01-23 19:24:01 +08:00
parent 0d9b67f93c
commit 6e93bbd791
1 changed files with 10 additions and 25 deletions

View File

@ -6,7 +6,7 @@ import config
from datetime import datetime, timedelta, timezone from datetime import datetime, timedelta, timezone
from core import utilities from core import utilities
from decimal import Decimal from decimal import Decimal
import excelexporters.metercost import excelexporters.metercarbon
class Reporting: class Reporting:
@ -24,10 +24,10 @@ class Reporting:
# Step 1: valid parameters # Step 1: valid parameters
# Step 2: query the meter and carbon # Step 2: query the meter and carbon
# Step 3: query associated points # Step 3: query associated points
# Step 4: query base period carbon consumption # Step 4: query base period energy consumption
# Step 5: query base period carbon Emission # Step 5: query base period carbon Emission
# Step 6: query reporting period energy consumption # Step 6: query reporting period energy consumption
# Step 7: query reporting period energy cost # Step 7: query reporting period carbon emission
# Step 8: query tariff data # Step 8: query tariff data
# Step 9: query associated points data # Step 9: query associated points data
# Step 10: construct the report # Step 10: construct the report
@ -140,9 +140,6 @@ class Reporting:
cnx_carbon = mysql.connector.connect(**config.myems_carbon_db) cnx_carbon = mysql.connector.connect(**config.myems_carbon_db)
cursor_carbon = cnx_carbon.cursor() cursor_carbon = cnx_carbon.cursor()
cnx_billing = mysql.connector.connect(**config.myems_billing_db)
cursor_billing = cnx_billing.cursor()
cnx_historical = mysql.connector.connect(**config.myems_historical_db) cnx_historical = mysql.connector.connect(**config.myems_historical_db)
cursor_historical = cnx_historical.cursor() cursor_historical = cnx_historical.cursor()
if meter_id is not None: if meter_id is not None:
@ -167,12 +164,6 @@ class Reporting:
cursor_carbon.close() cursor_carbon.close()
if cnx_carbon: if cnx_carbon:
cnx_carbon.disconnect() cnx_carbon.disconnect()
if cursor_billing:
cursor_billing.close()
if cnx_billing:
cnx_billing.disconnect()
if cursor_historical: if cursor_historical:
cursor_historical.close() cursor_historical.close()
if cnx_historical: if cnx_historical:
@ -204,7 +195,7 @@ class Reporting:
point_list.append({"id": row[0], "name": row[1], "units": row[2], "object_type": row[3]}) point_list.append({"id": row[0], "name": row[1], "units": row[2], "object_type": row[3]})
################################################################################################################ ################################################################################################################
# Step 4: query base period carbon consumption # Step 4: query base period energy consumption
################################################################################################################ ################################################################################################################
query = (" SELECT start_datetime_utc, actual_value " query = (" SELECT start_datetime_utc, actual_value "
" FROM tbl_meter_hourly " " FROM tbl_meter_hourly "
@ -255,8 +246,8 @@ class Reporting:
" AND start_datetime_utc >= %s " " AND start_datetime_utc >= %s "
" AND start_datetime_utc < %s " " AND start_datetime_utc < %s "
" ORDER BY start_datetime_utc ") " ORDER BY start_datetime_utc ")
cursor_billing.execute(query, (meter['id'], base_start_datetime_utc, base_end_datetime_utc)) cursor_carbon.execute(query, (meter['id'], base_start_datetime_utc, base_end_datetime_utc))
rows_meter_hourly = cursor_billing.fetchall() rows_meter_hourly = cursor_carbon.fetchall()
rows_meter_periodically = utilities.aggregate_hourly_data_by_period(rows_meter_hourly, rows_meter_periodically = utilities.aggregate_hourly_data_by_period(rows_meter_hourly,
base_start_datetime_utc, base_start_datetime_utc,
@ -317,7 +308,7 @@ class Reporting:
reporting['total_in_kgco2e'] += actual_value * meter['kgco2e'] reporting['total_in_kgco2e'] += actual_value * meter['kgco2e']
################################################################################################################ ################################################################################################################
# Step 7: query reporting period carbon cost # Step 7: query reporting period carbon emission
################################################################################################################ ################################################################################################################
query = (" SELECT start_datetime_utc, actual_value " query = (" SELECT start_datetime_utc, actual_value "
" FROM tbl_meter_hourly " " FROM tbl_meter_hourly "
@ -325,8 +316,8 @@ class Reporting:
" AND start_datetime_utc >= %s " " AND start_datetime_utc >= %s "
" AND start_datetime_utc < %s " " AND start_datetime_utc < %s "
" ORDER BY start_datetime_utc ") " ORDER BY start_datetime_utc ")
cursor_billing.execute(query, (meter['id'], reporting_start_datetime_utc, reporting_end_datetime_utc)) cursor_carbon.execute(query, (meter['id'], reporting_start_datetime_utc, reporting_end_datetime_utc))
rows_meter_hourly = cursor_billing.fetchall() rows_meter_hourly = cursor_carbon.fetchall()
rows_meter_periodically = utilities.aggregate_hourly_data_by_period(rows_meter_hourly, rows_meter_periodically = utilities.aggregate_hourly_data_by_period(rows_meter_hourly,
reporting_start_datetime_utc, reporting_start_datetime_utc,
@ -442,12 +433,6 @@ class Reporting:
cursor_carbon.close() cursor_carbon.close()
if cnx_carbon: if cnx_carbon:
cnx_carbon.disconnect() cnx_carbon.disconnect()
if cursor_billing:
cursor_billing.close()
if cnx_billing:
cnx_billing.disconnect()
if cursor_historical: if cursor_historical:
cursor_historical.close() cursor_historical.close()
if cnx_historical: if cnx_historical:
@ -486,7 +471,7 @@ class Reporting:
} }
# export result to Excel file and then encode the file to base64 string # export result to Excel file and then encode the file to base64 string
result['excel_bytes_base64'] = \ result['excel_bytes_base64'] = \
excelexporters.metercost.export(result, excelexporters.metercarbon.export(result,
meter['name'], meter['name'],
reporting_period_start_datetime_local, reporting_period_start_datetime_local,
reporting_period_end_datetime_local, reporting_period_end_datetime_local,