added maximum load data

pull/67/head
Caozhenhui 2021-10-12 14:27:37 +08:00
parent 8bde969c4e
commit 2d91cecec9
3 changed files with 53 additions and 24 deletions

View File

@ -1,8 +1,11 @@
import base64 import base64
import uuid import uuid
import os import os
from openpyxl.styles import PatternFill, Border, Side, Alignment, Font from openpyxl.styles import PatternFill, Border, Side, Alignment, Font
from openpyxl.drawing.image import Image from openpyxl.drawing.image import Image
from openpyxl.utils import column_index_from_string, get_column_letter
from openpyxl import Workbook from openpyxl import Workbook
@ -129,30 +132,38 @@ def generate_excel(report, space_name, reporting_start_datetime_local, reporting
ws['C5'] = reporting_end_datetime_local ws['C5'] = reporting_end_datetime_local
# Title # Title
ws['B6'].border = f_border ws['B7'].border = f_border
ws['B6'].font = name_font ws['B7'].font = name_font
ws['B6'].alignment = c_c_alignment ws['B7'].alignment = c_c_alignment
ws['B6'].fill = table_fill ws['B7'].fill = table_fill
ws['B6'] = 'Name' ws['B7'] = 'Name'
ws['C6'].border = f_border ws['C7'].border = f_border
ws['C6'].alignment = c_c_alignment ws['C7'].alignment = c_c_alignment
ws['C6'].font = name_font ws['C7'].font = name_font
ws['C6'].fill = table_fill ws['C7'].fill = table_fill
ws['C6'] = 'Space' ws['C7'] = 'Space'
ca_len = len(report['energycategories']) ca_len = len(report['energycategories'])
for i in range(0, ca_len): for i in range(0, ca_len):
col = chr(ord('D') + i) col = get_column_letter(column_index_from_string('D') + i * 2)
ws[col + '6'].fill = table_fill ws[col + '7'].fill = table_fill
ws[col + '6'].font = name_font ws[col + '7'].font = name_font
ws[col + '6'].alignment = c_c_alignment ws[col + '7'].alignment = c_c_alignment
ws[col + '6'] = report['energycategories'][i]['name'] + \ ws[col + '7'] = report['energycategories'][i]['name'] + \
" (" + report['energycategories'][i]['unit_of_measure'] + ")" " (" + report['energycategories'][i]['unit_of_measure'] + ")"
ws[col + '6'].border = f_border ws[col + '7'].border = f_border
current_row_number = 7 col = get_column_letter(column_index_from_string(col) + 1)
ws[col + '7'].fill = table_fill
ws[col + '7'].font = name_font
ws[col + '7'].alignment = c_c_alignment
ws[col + '7'] = report['energycategories'][i]['name'] + \
" Maximum Load (" + report['energycategories'][i]['unit_of_measure'] + ")"
ws[col + '7'].border = f_border
current_row_number = 8
for i in range(0, len(report['tenants'])): for i in range(0, len(report['tenants'])):
ws['B' + str(current_row_number)].font = title_font ws['B' + str(current_row_number)].font = title_font
@ -167,12 +178,17 @@ def generate_excel(report, space_name, reporting_start_datetime_local, reporting
ca_len = len(report['tenants'][i]['values']) ca_len = len(report['tenants'][i]['values'])
for j in range(0, ca_len): for j in range(0, ca_len):
col = chr(ord('D') + j) col = get_column_letter(column_index_from_string('D') + j * 2)
ws[col + str(current_row_number)].font = data_font ws[col + str(current_row_number)].font = title_font
ws[col + str(current_row_number)].border = f_border ws[col + str(current_row_number)].border = f_border
ws[col + str(current_row_number)].alignment = c_c_alignment ws[col + str(current_row_number)].alignment = c_c_alignment
ws[col + str(current_row_number)] = report['tenants'][i]['values'][j] ws[col + str(current_row_number)] = report['tenants'][i]['values'][j]
col = get_column_letter(column_index_from_string(col) + 1)
ws[col + str(current_row_number)].font = title_font
ws[col + str(current_row_number)].border = f_border
ws[col + str(current_row_number)].alignment = c_c_alignment
ws[col + str(current_row_number)] = report['tenants'][i]['maximum'][j]
current_row_number += 1 current_row_number += 1
filename = str(uuid.uuid4()) + '.xlsx' filename = str(uuid.uuid4()) + '.xlsx'

View File

@ -137,7 +137,8 @@ class Reporting:
"space_name": row['space_name'], "space_name": row['space_name'],
"cost_center_name": row['cost_center_name'], "cost_center_name": row['cost_center_name'],
"description": row['description'], "description": row['description'],
"values": list()} "values": list(),
"maximum": list()}
################################################################################################################ ################################################################################################################
# Step 4: query energy categories # Step 4: query energy categories
@ -187,7 +188,7 @@ class Reporting:
################################################################################################################ ################################################################################################################
for tenant_id in tenant_dict: for tenant_id in tenant_dict:
cursor_energy_db.execute(" SELECT energy_category_id, SUM(actual_value) " cursor_energy_db.execute(" SELECT energy_category_id, SUM(actual_value), max(actual_value)"
" FROM tbl_tenant_input_category_hourly " " FROM tbl_tenant_input_category_hourly "
" WHERE tenant_id = %s " " WHERE tenant_id = %s "
" AND start_datetime_utc >= %s " " AND start_datetime_utc >= %s "
@ -199,11 +200,14 @@ class Reporting:
rows_tenant_energy = cursor_energy_db.fetchall() rows_tenant_energy = cursor_energy_db.fetchall()
for energy_category in energy_category_list: for energy_category in energy_category_list:
subtotal = Decimal(0.0) subtotal = Decimal(0.0)
maximum = Decimal(0.0)
for row_tenant_energy in rows_tenant_energy: for row_tenant_energy in rows_tenant_energy:
if energy_category['id'] == row_tenant_energy[0]: if energy_category['id'] == row_tenant_energy[0]:
subtotal = row_tenant_energy[1] subtotal = row_tenant_energy[1]
maximum = row_tenant_energy[2]
break break
tenant_dict[tenant_id]['values'].append(subtotal) tenant_dict[tenant_id]['values'].append(subtotal)
tenant_dict[tenant_id]['maximum'].append(maximum)
if cursor_system_db: if cursor_system_db:
cursor_system_db.close() cursor_system_db.close()
@ -227,6 +231,7 @@ class Reporting:
"cost_center_name": tenant['cost_center_name'], "cost_center_name": tenant['cost_center_name'],
"description": tenant['description'], "description": tenant['description'],
"values": tenant['values'], "values": tenant['values'],
"maximum": tenant['maximum'],
}) })
result = {'tenants': tenant_list, result = {'tenants': tenant_list,

View File

@ -179,7 +179,10 @@ const TenantBatch = ({ setRedirect, setRedirectUrl, t }) => {
detailed_value['space'] = currentTenant['space_name']; detailed_value['space'] = currentTenant['space_name'];
detailed_value['costcenter'] = currentTenant['cost_center_name']; detailed_value['costcenter'] = currentTenant['cost_center_name'];
currentTenant['values'].forEach((currentValue, energyCategoryIndex) => { currentTenant['values'].forEach((currentValue, energyCategoryIndex) => {
detailed_value['a' + energyCategoryIndex] = currentValue.toFixed(2); detailed_value['a' + 2 * energyCategoryIndex] = currentValue.toFixed(2);
});
currentTenant['maximum'].forEach((currentValue, energyCategoryIndex) => {
detailed_value['a' + (2 * energyCategoryIndex + 1)] = currentValue.toFixed(2);
}); });
tenants.push(detailed_value); tenants.push(detailed_value);
}); });
@ -200,13 +203,18 @@ const TenantBatch = ({ setRedirect, setRedirectUrl, t }) => {
}); });
json['energycategories'].forEach((currentValue, index) => { json['energycategories'].forEach((currentValue, index) => {
detailed_column_list.push({ detailed_column_list.push({
dataField: 'a' + index, dataField: 'a' + 2 * index,
text: currentValue['name'] + ' (' + currentValue['unit_of_measure'] + ')', text: currentValue['name'] + ' (' + currentValue['unit_of_measure'] + ')',
sort: true sort: true
},{
dataField: 'a' + (2 * index + 1),
text: currentValue['name'] + ' ' + t('Maximum Load') + ' (' + currentValue['unit_of_measure'] + ')',
sort: true
}) })
}); });
setDetailedDataTableColumns(detailed_column_list);
setDetailedDataTableColumns(detailed_column_list);
console.log(detailed_column_list);
setExcelBytesBase64(json['excel_bytes_base64']); setExcelBytesBase64(json['excel_bytes_base64']);
// enable submit button // enable submit button