Merge branch 'PR' into develop

pull/113/MERGE
13621160019@163.com 2022-01-11 14:40:38 +08:00
commit 397b54b79c
2 changed files with 35 additions and 4 deletions

View File

@ -3,7 +3,9 @@ import simplejson as json
import mysql.connector import mysql.connector
import config import config
import uuid import uuid
from core.useractivity import user_logger, access_control from core.useractivity import user_logger, access_control
from core.utilities import qrcode_to_base64
class MeterCollection: class MeterCollection:
@ -80,6 +82,7 @@ class MeterCollection:
result = list() result = list()
if rows_meters is not None and len(rows_meters) > 0: if rows_meters is not None and len(rows_meters) > 0:
for row in rows_meters: for row in rows_meters:
meter_qrcode = qrcode_to_base64(data="meter" + row['uuid'])
energy_category = energy_category_dict.get(row['energy_category_id'], None) energy_category = energy_category_dict.get(row['energy_category_id'], None)
cost_center = cost_center_dict.get(row['cost_center_id'], None) cost_center = cost_center_dict.get(row['cost_center_id'], None)
energy_item = energy_item_dict.get(row['energy_item_id'], None) energy_item = energy_item_dict.get(row['energy_item_id'], None)
@ -94,7 +97,8 @@ class MeterCollection:
"cost_center": cost_center, "cost_center": cost_center,
"energy_item": energy_item, "energy_item": energy_item,
"master_meter": master_meter, "master_meter": master_meter,
"description": row['description']} "description": row['description'],
"qrcode": meter_qrcode}
result.append(meta_result) result.append(meta_result)
cursor.close() cursor.close()
@ -353,6 +357,7 @@ class MeterItem:
raise falcon.HTTPError(falcon.HTTP_404, title='API.NOT_FOUND', raise falcon.HTTPError(falcon.HTTP_404, title='API.NOT_FOUND',
description='API.METER_NOT_FOUND') description='API.METER_NOT_FOUND')
else: else:
meter_qrcode = qrcode_to_base64(data="meter"+row['uuid'])
energy_category = energy_category_dict.get(row['energy_category_id'], None) energy_category = energy_category_dict.get(row['energy_category_id'], None)
cost_center = cost_center_dict.get(row['cost_center_id'], None) cost_center = cost_center_dict.get(row['cost_center_id'], None)
energy_item = energy_item_dict.get(row['energy_item_id'], None) energy_item = energy_item_dict.get(row['energy_item_id'], None)
@ -367,7 +372,8 @@ class MeterItem:
"cost_center": cost_center, "cost_center": cost_center,
"energy_item": energy_item, "energy_item": energy_item,
"master_meter": master_meter, "master_meter": master_meter,
"description": row['description']} "description": row['description'],
"qrcode": meter_qrcode}
resp.text = json.dumps(meta_result) resp.text = json.dumps(meta_result)

View File

@ -1,8 +1,13 @@
import base64
import calendar import calendar
import io
from datetime import datetime, timedelta from datetime import datetime, timedelta
import mysql.connector import mysql.connector
import collections import collections
from decimal import Decimal from decimal import Decimal
import qrcode.image.svg
import qrcode
import config import config
import statistics import statistics
@ -248,7 +253,7 @@ def get_energy_category_tariffs(cost_center_id, energy_category_id, start_dateti
query_timeofuse_tariffs = (" SELECT tariff_id, start_time_of_day, end_time_of_day, price " query_timeofuse_tariffs = (" SELECT tariff_id, start_time_of_day, end_time_of_day, price "
" FROM tbl_tariffs_timeofuses " " FROM tbl_tariffs_timeofuses "
" WHERE tariff_id IN ( " + ', '.join(map(str, tariff_dict.keys())) + ")" " WHERE tariff_id IN ( " + ', '.join(map(str, tariff_dict.keys())) + ")"
" ORDER BY tariff_id, start_time_of_day ") " ORDER BY tariff_id, start_time_of_day ")
cursor.execute(query_timeofuse_tariffs, ) cursor.execute(query_timeofuse_tariffs, )
rows_timeofuse_tariffs = cursor.fetchall() rows_timeofuse_tariffs = cursor.fetchall()
except Exception as e: except Exception as e:
@ -352,7 +357,7 @@ def get_energy_category_peak_types(cost_center_id, energy_category_id, start_dat
query_timeofuse_tariffs = (" SELECT tariff_id, start_time_of_day, end_time_of_day, peak_type " query_timeofuse_tariffs = (" SELECT tariff_id, start_time_of_day, end_time_of_day, peak_type "
" FROM tbl_tariffs_timeofuses " " FROM tbl_tariffs_timeofuses "
" WHERE tariff_id IN ( " + ', '.join(map(str, tariff_dict.keys())) + ")" " WHERE tariff_id IN ( " + ', '.join(map(str, tariff_dict.keys())) + ")"
" ORDER BY tariff_id, start_time_of_day ") " ORDER BY tariff_id, start_time_of_day ")
cursor.execute(query_timeofuse_tariffs, ) cursor.execute(query_timeofuse_tariffs, )
rows_timeofuse_tariffs = cursor.fetchall() rows_timeofuse_tariffs = cursor.fetchall()
except Exception as e: except Exception as e:
@ -1001,3 +1006,23 @@ def statistics_hourly_data_by_period(rows_hourly, start_datetime_utc, end_dateti
variance = statistics.variance(sample_data) variance = statistics.variance(sample_data)
return result_rows_yearly, mean, median, minimum, maximum, stdev, variance return result_rows_yearly, mean, median, minimum, maximum, stdev, variance
def qrcode_to_base64(version=1, error_correction=qrcode.ERROR_CORRECT_L, box_size=10, border=4,
factory=qrcode.image.svg.SvgImage, data=None):
if version < 1 or version > 40 or \
box_size < 0 or border < 0 or \
error_correction not in \
(qrcode.ERROR_CORRECT_L, qrcode.ERROR_CORRECT_M, qrcode.ERROR_CORRECT_H, qrcode.ERROR_CORRECT_Q):
return " "
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.ERROR_CORRECT_L,
box_size=10,
border=4,
)
qr.add_data(data)
img = qr.make_image(image_factory=factory)
f = io.BytesIO()
img.save(f)
return base64.b64encode(f.getvalue())