Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
nengyuanzhang committed May 5, 2024
2 parents 0a16390 + d62fb6e commit 18ea150
Show file tree
Hide file tree
Showing 3 changed files with 161 additions and 108 deletions.
208 changes: 145 additions & 63 deletions myems-api/reports/microgriddashboard.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,13 @@ def on_options(req, resp):
# PROCEDURES
# Step 1: valid parameters
# Step 2: query the microgrid list
# Step 3: query charge data
# Step 4: query discharge data
# Step 5: query revenue data
# Step 6: query efficiency data
# Step 7: construct the report
# Step 3: query charge energy data
# Step 4: query discharge energy data
# Step 5: query charge billing data
# Step 6: query discharge billing data
# Step 7: query charge carbon data
# Step 8: query discharge carbon data
# Step 9: construct the report
####################################################################################################################
@staticmethod
def on_get(req, resp):
Expand Down Expand Up @@ -138,10 +140,8 @@ def on_get(req, resp):
################################################################################################################
# Step 2: query the microgrid list
################################################################################################################

cnx_user = mysql.connector.connect(**config.myems_user_db)
cursor_user = cnx_user.cursor()

cursor_user.execute(" SELECT id, is_admin, privilege_id "
" FROM tbl_users "
" WHERE uuid = %s ", (user_uuid,))
Expand All @@ -151,7 +151,6 @@ def on_get(req, resp):
cursor_user.close()
if cnx_user:
cnx_user.close()

raise falcon.HTTPError(status=falcon.HTTP_404, title='API.NOT_FOUND',
description='API.USER_NOT_FOUND')

Expand Down Expand Up @@ -201,54 +200,133 @@ def on_get(req, resp):
"description": row[10],
"status": 'online' if is_online else 'offline'}
microgrid_list.append(meta_result)
charge_ranking = list()
if rows_microgrids is not None and len(rows_microgrids) > 0:
for row in rows_microgrids:
meta_result = {"id": row[0],
"name": row[1],
"uuid": row[2],
"value": Decimal(10.0)}
charge_ranking.append(meta_result)

discharge_ranking = list()
if rows_microgrids is not None and len(rows_microgrids) > 0:
for row in rows_microgrids:
meta_result = {"id": row[0],
"name": row[1],
"uuid": row[2],
"value": Decimal(10.0)}
discharge_ranking.append(meta_result)

revenue_ranking = list()
if rows_microgrids is not None and len(rows_microgrids) > 0:
for row in rows_microgrids:
meta_result = {"id": row[0],
"name": row[1],
"uuid": row[2],
"value": Decimal(10.0)}
revenue_ranking.append(meta_result)

################################################################################################################
# Step 3: query charge data
# Step 3: query charge energy data
################################################################################################################
cnx_energy = mysql.connector.connect(**config.myems_energy_db)
cursor_energy = cnx_energy.cursor()

cnx_billing = mysql.connector.connect(**config.myems_billing_db)
cursor_billing = cnx_billing.cursor()

cnx_energy_db = mysql.connector.connect(**config.myems_energy_db)
cursor_energy_db = cnx_energy_db.cursor()

cnx_billing_db = mysql.connector.connect(**config.myems_billing_db)
cursor_billing_db = cnx_billing_db.cursor()

cnx_carbon_db = mysql.connector.connect(**config.myems_billing_db)
cursor_carbon_db = cnx_carbon_db.cursor()

query = (" SELECT microgrid_id, SUM(actual_value) "
" FROM tbl_microgrid_charge_hourly "
" GROUP BY microgrid_id ")
cursor_energy_db.execute(query, )
rows_microgrids_subtotal_charge_energy = cursor_energy_db.fetchall()

new_microgrid_list = list()
total_charge_energy = Decimal(0.0)
for microgrid in microgrid_list:
microgrid['subtotal_charge_energy'] = Decimal(0.0)
for row in rows_microgrids_subtotal_charge_energy:
if row[0] == microgrid['id']:
microgrid['subtotal_charge_energy'] = row[1]
total_charge_energy += microgrid['subtotal_charge_energy']
break
new_microgrid_list.append(microgrid)
microgrid_list = new_microgrid_list
################################################################################################################
# Step 4: query discharge data
# Step 4: query discharge energy data
################################################################################################################

query = (" SELECT microgrid_id, SUM(actual_value) "
" FROM tbl_microgrid_discharge_hourly "
" GROUP BY microgrid_id ")
cursor_energy_db.execute(query, )
rows_microgrids_subtotal_discharge_energy = cursor_energy_db.fetchall()

new_microgrid_list = list()
total_discharge_energy = Decimal(0.0)
for microgrid in microgrid_list:
microgrid['subtotal_discharge_energy'] = Decimal(0.0)
for row in rows_microgrids_subtotal_discharge_energy:
if row[0] == microgrid['id']:
microgrid['subtotal_discharge_energy'] = row[1]
total_discharge_energy += microgrid['subtotal_discharge_energy']
break
new_microgrid_list.append(microgrid)
microgrid_list = new_microgrid_list
################################################################################################################
# Step 5: query revenue data
# Step 5: query charge billing data
################################################################################################################

query = (" SELECT microgrid_id, SUM(actual_value) "
" FROM tbl_microgrid_charge_hourly "
" GROUP BY microgrid_id ")
cursor_billing_db.execute(query, )
rows_microgrids_subtotal_charge_billing = cursor_billing_db.fetchall()

new_microgrid_list = list()
total_charge_billing = Decimal(0.0)
for microgrid in microgrid_list:
microgrid['subtotal_charge_billing'] = Decimal(0.0)
for row in rows_microgrids_subtotal_charge_billing:
if row[0] == microgrid['id']:
microgrid['subtotal_charge_billing'] = row[1]
total_charge_billing += microgrid['subtotal_charge_billing']
break
new_microgrid_list.append(microgrid)
microgrid_list = new_microgrid_list
################################################################################################################
# Step 6: query efficiency data
# Step 6: query discharge billing data
################################################################################################################

query = (" SELECT microgrid_id, SUM(actual_value) "
" FROM tbl_microgrid_discharge_hourly "
" GROUP BY microgrid_id ")
cursor_billing_db.execute(query, )
rows_microgrids_subtotal_discharge_billing = cursor_billing_db.fetchall()

new_microgrid_list = list()
total_discharge_billing = Decimal(0.0)
for microgrid in microgrid_list:
microgrid['subtotal_discharge_billing'] = Decimal(0.0)
for row in rows_microgrids_subtotal_discharge_billing:
if row[0] == microgrid['id']:
microgrid['subtotal_discharge_billing'] = row[1]
total_discharge_billing += microgrid['subtotal_discharge_billing']
break
new_microgrid_list.append(microgrid)
microgrid_list = new_microgrid_list
################################################################################################################
# Step 7: query charge carbon data
################################################################################################################
query = (" SELECT microgrid_id, SUM(actual_value) "
" FROM tbl_microgrid_charge_hourly "
" GROUP BY microgrid_id ")
cursor_carbon_db.execute(query, )
rows_microgrids_subtotal_charge_carbon = cursor_carbon_db.fetchall()
new_microgrid_list = list()
total_charge_carbon = Decimal(0.0)
for microgrid in microgrid_list:
microgrid['subtotal_charge_carbon'] = Decimal(0.0)
for row in rows_microgrids_subtotal_charge_carbon:
if row[0] == microgrid['id']:
microgrid['subtotal_charge_carbon'] = row[1]
total_charge_carbon += microgrid['subtotal_charge_carbon']
break
new_microgrid_list.append(microgrid)
microgrid_list = new_microgrid_list
################################################################################################################
# Step 8: query discharge carbon data
################################################################################################################
query = (" SELECT microgrid_id, SUM(actual_value) "
" FROM tbl_microgrid_discharge_hourly "
" GROUP BY microgrid_id ")
cursor_carbon_db.execute(query, )
rows_microgrids_subtotal_discharge_carbon = cursor_carbon_db.fetchall()
new_microgrid_list = list()
total_discharge_carbon = Decimal(0.0)
for microgrid in microgrid_list:
microgrid['subtotal_discharge_carbon'] = Decimal(0.0)
for row in rows_microgrids_subtotal_discharge_carbon:
if row[0] == microgrid['id']:
microgrid['subtotal_discharge_carbon'] = row[1]
total_discharge_carbon += microgrid['subtotal_discharge_carbon']
break
new_microgrid_list.append(microgrid)
microgrid_list = new_microgrid_list
################################################################################################################
# Step 7: construct the report
################################################################################################################
Expand All @@ -257,23 +335,27 @@ def on_get(req, resp):
if cnx_system_db:
cnx_system_db.close()

if cursor_energy:
cursor_energy.close()
if cnx_energy:
cnx_energy.close()
if cursor_energy_db:
cursor_energy_db.close()
if cnx_energy_db:
cnx_energy_db.close()

if cursor_billing:
cursor_billing.close()
if cnx_billing:
cnx_billing.close()
if cursor_billing_db:
cursor_billing_db.close()
if cnx_billing_db:
cnx_billing_db.close()

result = dict()
if cursor_carbon_db:
cursor_carbon_db.close()
if cnx_carbon_db:
cnx_carbon_db.close()

result = dict()
result['microgrids'] = microgrid_list
result['charge_ranking'] = charge_ranking
result['total_charge'] = Decimal(30.0)
result['discharge_ranking'] = discharge_ranking
result['total_discharge'] = Decimal(30.0)
result['revenue_ranking'] = revenue_ranking
result['total_revenue'] = Decimal(30.0)
result['total_charge_energy'] = total_charge_energy
result['total_discharge_energy'] = total_discharge_energy
result['total_charge_billing'] = total_charge_billing
result['total_discharge_billing'] = total_discharge_billing
result['total_charge_carbon'] = total_charge_carbon
result['total_discharge_carbon'] = total_discharge_carbon
resp.text = json.dumps(result)
39 changes: 3 additions & 36 deletions myems-web/src/components/MyEMS/Microgrid/Dashboard.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,8 @@ const Dashboard = ({ setRedirect, setRedirectUrl, t }) => {
const [microgridList, setMicrogridList] = useState([]);
const [totalRatedCapacity, setTotalRatedCapacity] = useState({});
const [totalRatedPower, setTotalRatedPower] = useState({});
const [chargeRankingList, setChargeRankingList] = useState([]);
const [totalCharge, setTotalCharge] = useState({});
const [dischargeRankingList, setDischargeRankingList] = useState([]);
const [totalDischarge, setTotalDischarge] = useState({});
const [revenueRankingList, setRevenueRankingList] = useState([]);
const [totalRevenue, setTotalRevenue] = useState({});

const [chargeData, setChargeData] = useState({});
Expand Down Expand Up @@ -129,9 +126,6 @@ const Dashboard = ({ setRedirect, setRedirectUrl, t }) => {
setSpinnerHidden(true);

let microgridList = [];
let chargeRankingList = [];
let dischargeRankingList = [];
let revenueList = [];
let totalRatedCapacity = 0;
let totalRatedPower = 0;

Expand Down Expand Up @@ -169,38 +163,11 @@ const Dashboard = ({ setRedirect, setRedirectUrl, t }) => {
geojson['features'] = geojsonData;
setGeojson(geojson);

json['charge_ranking'].forEach((currentValue, index) => {
// display at most 8 items
if (index < 9) {
let microgridItem = json['charge_ranking'][index];
microgridItem['unit'] = 'kWh';
chargeRankingList.push(microgridItem);
}
});
setChargeRankingList(chargeRankingList);
setTotalCharge(json['totalCharge']);
setTotalCharge(json['total_charge_energy']);

json['discharge_ranking'].forEach((currentValue, index) => {
// display at most 8 items
if (index < 9) {
let microgridItem = json['discharge_ranking'][index];
microgridItem['unit'] = 'kWh';
dischargeRankingList.push(microgridItem);
}
});
setDischargeRankingList(dischargeRankingList);
setTotalDischarge(json['totalDischarge']);
setTotalDischarge(json['total_discharge_energy']);

json['revenue_ranking'].forEach((currentValue, index) => {
// display at most 8 items
if (index < 9) {
let microgridItem = json['revenue_ranking'][index];
microgridItem['unit'] = currency;
revenueList.push(microgridItem);
}
});
setRevenueRankingList(revenueList);
setTotalRevenue(json['totalRevenue']);
setTotalRevenue(json['total_charge_billing']);

setChargeData({
"energy_category_names": [
Expand Down
22 changes: 13 additions & 9 deletions myems-web/src/components/MyEMS/Microgrid/MicrogridTable.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import React, { Fragment, createRef } from 'react';
import React, { Fragment, createRef, useContext } from 'react';
import paginationFactory, { PaginationProvider } from 'react-bootstrap-table2-paginator';
import BootstrapTable from 'react-bootstrap-table-next';
import Badge from 'reactstrap/es/Badge';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { Button, Col, Row } from 'reactstrap';
import ButtonIcon from '../../common/ButtonIcon';
import { Link } from 'react-router-dom';
import AppContext from '../../../context/Context';
import { withTranslation } from 'react-i18next';

const CustomTotal = ({ sizePerPage, totalSize, page, lastIndex }) => (
Expand All @@ -21,11 +22,6 @@ const nameFormatter = (nameuuid) => (
);


const energyFormatter = amount => <Fragment>{amount} kWh</Fragment>;
const capacityFormatter = amount => <Fragment>{amount} kWh</Fragment>;
const powerFormatter = amount => <Fragment>{amount} kW</Fragment>;
const currencyFormatter = amount => <Fragment>{amount} </Fragment>;


const SelectRowInput = ({ indeterminate, rowIndex, ...rest }) => (
<div className="custom-control custom-checkbox">
Expand Down Expand Up @@ -54,6 +50,14 @@ const selectRow = onSelect => ({


const MicrogridTable = ({ setIsSelected, microgridList, t }) => {

const energyFormatter = amount => <Fragment>{amount} kWh</Fragment>;
const capacityFormatter = amount => <Fragment>{amount} kWh</Fragment>;
const powerFormatter = amount => <Fragment>{amount} kW</Fragment>;

const { currency } = useContext(AppContext);
const currencyFormatter = amount => <Fragment>{amount} {currency}</Fragment>;

let table = createRef();
const handleNextPage = ({ page, onPageChange }) => () => {
onPageChange(page + 1);
Expand Down Expand Up @@ -140,23 +144,23 @@ const MicrogridTable = ({ setIsSelected, microgridList, t }) => {
sort: true
},
{
dataField: 'total_charge',
dataField: 'subtotal_charge_energy',
text: t('Total Charge'),
formatter: energyFormatter,
classes: 'border-0 align-middle',
headerClasses: 'border-0',
sort: true,
},
{
dataField: 'total_discharge',
dataField: 'subtotal_discharge_energy',
text: t('Total Discharge'),
formatter: energyFormatter,
classes: 'border-0 align-middle',
headerClasses: 'border-0',
sort: true,
},
{
dataField: 'total_revenue',
dataField: 'subtotal_discharge_billing',
text: t('Total Revenue'),
formatter: currencyFormatter,
classes: 'border-0 align-middle',
Expand Down

0 comments on commit 18ea150

Please sign in to comment.