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

View File

@ -1,8 +1,13 @@
import base64
import calendar
import io
from datetime import datetime, timedelta
import mysql.connector
import collections
from decimal import Decimal
import qrcode.image.svg
import qrcode
import config
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 "
" FROM tbl_tariffs_timeofuses "
" 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, )
rows_timeofuse_tariffs = cursor.fetchall()
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 "
" FROM tbl_tariffs_timeofuses "
" 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, )
rows_timeofuse_tariffs = cursor.fetchall()
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)
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())