diff --git a/admin/app/controllers/fdd/rule/rule.controller.js b/admin/app/controllers/fdd/rule/rule.controller.js index 527c9b36..b5278d4a 100644 --- a/admin/app/controllers/fdd/rule/rule.controller.js +++ b/admin/app/controllers/fdd/rule/rule.controller.js @@ -3,12 +3,10 @@ app.controller('RuleController', function($scope, $common, $uibModal, $translate, RuleService, toaster, SweetAlert) { $scope.initExpression = [{ - "spaceid": 1, + "sample_object_id": 1, "limit": 1000.000, "recipients": [{ "user_id": "1" - }, { - "user_id": "2" }] }]; diff --git a/admin/app/translations.js b/admin/app/translations.js index 9b78a045..93afe6ec 100644 --- a/admin/app/translations.js +++ b/admin/app/translations.js @@ -100,9 +100,11 @@ function config($translateProvider) { PRIORITY: 'Priority', CHANNEL: 'Channel', IS_ENABLED: 'Is Enabled', + LAST_RUN_DATETIME: 'Last Run Datetime', + NEXT_RUN_DATETIME: 'Next Run Datetime', EXPRESSION: 'Expression', MESSAGE_TEMPLATE: 'Message Template', - DES_EXPRESSION: 'Click "Edit" for details', + CLICK_EDIT_FOR_DETAILS: 'Click "Edit" for details', SMS_ALARM_LIST: 'SMS Alarm List', RECIPIENT_NAME: 'Recipient Name', @@ -1151,9 +1153,11 @@ function config($translateProvider) { PRIORITY: '报警优先级', CHANNEL: '报警通道', IS_ENABLED: '报警开关', + LAST_RUN_DATETIME: '上次运行时间', + NEXT_RUN_DATETIME: '下次运行时间', EXPRESSION: '表达式', MESSAGE_TEMPLATE: '消息模板', - DES_EXPRESSION: '点击"修改"查看详情', + CLICK_EDIT_FOR_DETAILS: '点击"修改"查看详情', SMS_ALARM_LIST: '短信报警列表', RECIPIENT_NAME: '接收人', @@ -2199,9 +2203,11 @@ function config($translateProvider) { PRIORITY: 'Alarmpriorität', CHANNEL: 'Alarmkanal', IS_ENABLED: 'Alarmschalter', + LAST_RUN_DATETIME: 'Letzter Lauf Datetime', + NEXT_RUN_DATETIME: 'Nächster Lauf Datetime', EXPRESSION: 'Ausdruck', MESSAGE_TEMPLATE: 'Nachrichtenvorlage', - DES_EXPRESSION: 'Klicken Sie auf "Bearbeiten"', + CLICK_EDIT_FOR_DETAILS: 'Klicken Sie auf "Bearbeiten"', SMS_ALARM_LIST: 'SMS-Alarmliste', RECIPIENT_NAME: 'Empfänger', diff --git a/admin/views/fdd/rule.html b/admin/views/fdd/rule.html index fc6b8db0..5f01acb2 100644 --- a/admin/views/fdd/rule.html +++ b/admin/views/fdd/rule.html @@ -11,11 +11,13 @@ {{'SETTING.ID' | translate}} {{'SETTING.NAME' | translate}} - {{'FDD.FDD_CODE' | translate}} {{'FDD.CATEGORY' | translate}} + {{'FDD.FDD_CODE' | translate}} {{'FDD.PRIORITY' | translate}} {{'FDD.CHANNEL' | translate}} {{'FDD.IS_ENABLED' | translate}} + {{'FDD.LAST_RUN_DATETIME' | translate}} + {{'FDD.NEXT_RUN_DATETIME' | translate}} {{'FDD.EXPRESSION' | translate}} {{'FDD.MESSAGE_TEMPLATE' | translate}} {{'SETTING.ACTION' | translate}} @@ -26,13 +28,15 @@ {{ rule.id }} {{ rule.name }} - {{ rule.fdd_code }} {{ rule.category }} + {{ rule.fdd_code }} {{ rule.priority }} {{ rule.channel }} {{ rule.is_enabled==true?'SETTING.ON':'SETTING.OFF' | translate}} - {{'FDD.DES_EXPRESSION' | translate}} - {{ rule.message_template }} + {{ rule.last_run_datetime | date:'yyyy-MM-ddTHH:mm:ss'}} + {{ rule.next_run_datetime | date:'yyyy-MM-ddTHH:mm:ss'}} + {{'FDD.CLICK_EDIT_FOR_DETAILS' | translate}} + {{'FDD.CLICK_EDIT_FOR_DETAILS' | translate}} {{'SETTING.EDIT' | translate}} {{'SETTING.DELETE' | translate}} diff --git a/admin/views/fdd/rule.model.html b/admin/views/fdd/rule.model.html index 578f9758..e34da038 100644 --- a/admin/views/fdd/rule.model.html +++ b/admin/views/fdd/rule.model.html @@ -6,42 +6,18 @@
-
+
{{'SETTING.INPUT_NAME' | translate}}
-
-
- -
- - -
-
-
-
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ - +
+
+
-
+
diff --git a/database/myems_system_db.sql b/database/myems_system_db.sql index 10629e9e..85903178 100644 --- a/database/myems_system_db.sql +++ b/database/myems_system_db.sql @@ -792,7 +792,7 @@ CREATE INDEX `tbl_meters_index_3` ON `myems_system_db`.`tbl_meters` (`energy_ -- USE `myems_system_db`; -- INSERT INTO `myems_system_db`.`tbl_meters` --- (`id`, `name`, `uuid`, `energy_category_id`, `is_counted`, `max_hourly_value`, `cost_center_id`, `energy_item_id`, `master_meter_id`, `description`) +-- (`id`, `name`, `uuid`, `energy_category_id`, `is_counted`, `hourly_low_limit`, `hourly_high_limit`, `cost_center_id`, `energy_item_id`, `master_meter_id`, `description`) -- VALUES -- (1, '示例表1', '5ca47bc5-22c2-47fc-b906-33222191ea40', 1, true, 0.000, 999.999, 1, 1, null, 'meter1'), -- (2, '示例表2', '5ca47bc5-22c2-47fc-b906-33222191ea40', 1, true, 0.000, 999.999, 1, 1, 1, 'meter2'), diff --git a/myems-api/core/rule.py b/myems-api/core/rule.py index e1c64102..0667cf10 100644 --- a/myems-api/core/rule.py +++ b/myems-api/core/rule.py @@ -143,13 +143,13 @@ class RuleCollection: description='API.RULE_NAME_IS_ALREADY_IN_USE') add_row = (" INSERT INTO tbl_rules " - " (name, uuid, fdd_code, category, priority, " + " (name, uuid, category, fdd_code, priority, " " channel, expression, message_template, is_enabled) " " VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s) ") cursor.execute(add_row, (name, str(uuid.uuid4()), - fdd_code, category, + fdd_code, priority, channel, expression, @@ -183,7 +183,7 @@ class RuleItem: cursor = cnx.cursor(dictionary=True) query = (" SELECT id, name, uuid, " - " fdd_code, category, priority, " + " category, fdd_code, priority, " " channel, expression, message_template, " " is_enabled, last_run_datetime_utc, next_run_datetime_utc " " FROM tbl_rules " @@ -204,7 +204,7 @@ class RuleItem: next_run_datetime = row['next_run_datetime_utc'].replace(tzinfo=timezone.utc).timestamp() * 1000 result = {"id": row['id'], "name": row['name'], "uuid": row['uuid'], - "fdd_code": row['fdd_code'], "category": row['category'], "priority": row['priority'], + "category": row['category'], "fdd_code": row['fdd_code'], "priority": row['priority'], "channel": row['channel'], "expression": row['expression'], "message_template": row['message_template'].replace("
", ""), "is_enabled": bool(row['is_enabled']), @@ -342,13 +342,13 @@ class RuleItem: description='API.RULE_NAME_IS_ALREADY_IN_USE') update_row = (" UPDATE tbl_rules " - " SET name = %s, fdd_code = %s, category = %s, priority = %s, " + " SET name = %s, category = %s, fdd_code = %s, priority = %s, " " channel = %s, expression = %s, message_template = %s, " " is_enabled = %s " " WHERE id = %s ") cursor.execute(update_row, (name, - fdd_code, category, + fdd_code, priority, channel, expression, diff --git a/myems-api/excelexporters/spaceload.py b/myems-api/excelexporters/spaceload.py index dfaf9e1d..07233d69 100644 --- a/myems-api/excelexporters/spaceload.py +++ b/myems-api/excelexporters/spaceload.py @@ -204,7 +204,8 @@ def generate_excel(report, name, reporting_start_datetime_local, reporting_end_d ws[col + str(current_row_number)].font = name_font ws[col + str(current_row_number)].alignment = c_c_alignment ws[col + str(current_row_number)].border = f_border - ws[col + str(current_row_number)] = round(reporting_period_data['averages'][i], 2) + ws[col + str(current_row_number)] = round(reporting_period_data['averages'][i], 2) \ + if reporting_period_data['averages'][i] is not None else 'N/A' current_row_number += 1 @@ -218,7 +219,8 @@ def generate_excel(report, name, reporting_start_datetime_local, reporting_end_d ws[col + str(current_row_number)].font = name_font ws[col + str(current_row_number)].alignment = c_c_alignment ws[col + str(current_row_number)].border = f_border - ws[col + str(current_row_number)] = round(reporting_period_data['averages_per_unit_area'][i], 2) + ws[col + str(current_row_number)] = round(reporting_period_data['averages_per_unit_area'][i], 2) \ + if reporting_period_data['averages_per_unit_area'][i] is not None else 'N/A' current_row_number += 1 @@ -267,7 +269,8 @@ def generate_excel(report, name, reporting_start_datetime_local, reporting_end_d ws[col + str(current_row_number)].font = name_font ws[col + str(current_row_number)].alignment = c_c_alignment ws[col + str(current_row_number)].border = f_border - ws[col + str(current_row_number)] = round(reporting_period_data['maximums'][i], 2) + ws[col + str(current_row_number)] = round(reporting_period_data['maximums'][i], 2) \ + if reporting_period_data['maximums'][i] is not None else 'N/A' current_row_number += 1 @@ -281,7 +284,8 @@ def generate_excel(report, name, reporting_start_datetime_local, reporting_end_d ws[col + str(current_row_number)].font = name_font ws[col + str(current_row_number)].alignment = c_c_alignment ws[col + str(current_row_number)].border = f_border - ws[col + str(current_row_number)] = round(reporting_period_data['maximums_per_unit_area'][i], 2) + ws[col + str(current_row_number)] = round(reporting_period_data['maximums_per_unit_area'][i], 2) \ + if reporting_period_data['maximums_per_unit_area'][i] is not None else 'N/A' current_row_number += 1 diff --git a/myems-api/excelexporters/tenantload.py b/myems-api/excelexporters/tenantload.py index 6969079e..0118835d 100644 --- a/myems-api/excelexporters/tenantload.py +++ b/myems-api/excelexporters/tenantload.py @@ -205,7 +205,8 @@ def generate_excel(report, name, reporting_start_datetime_local, reporting_end_d ws[col + str(current_row_number)].font = name_font ws[col + str(current_row_number)].alignment = c_c_alignment ws[col + str(current_row_number)].border = f_border - ws[col + str(current_row_number)] = round(reporting_period_data['averages'][i], 2) + ws[col + str(current_row_number)] = round(reporting_period_data['averages'][i], 2) \ + if reporting_period_data['averages'][i] is not None else 'N/A' current_row_number += 1 @@ -219,7 +220,8 @@ def generate_excel(report, name, reporting_start_datetime_local, reporting_end_d ws[col + str(current_row_number)].font = name_font ws[col + str(current_row_number)].alignment = c_c_alignment ws[col + str(current_row_number)].border = f_border - ws[col + str(current_row_number)] = round(reporting_period_data['averages_per_unit_area'][i], 2) + ws[col + str(current_row_number)] = round(reporting_period_data['averages_per_unit_area'][i], 2) \ + if reporting_period_data['averages_per_unit_area'][i] is not None else 'N/A' current_row_number += 1 @@ -268,7 +270,8 @@ def generate_excel(report, name, reporting_start_datetime_local, reporting_end_d ws[col + str(current_row_number)].font = name_font ws[col + str(current_row_number)].alignment = c_c_alignment ws[col + str(current_row_number)].border = f_border - ws[col + str(current_row_number)] = round(reporting_period_data['maximums'][i], 2) + ws[col + str(current_row_number)] = round(reporting_period_data['maximums'][i], 2) \ + if reporting_period_data['maximums'][i] is not None else 'N/A' current_row_number += 1 @@ -282,7 +285,8 @@ def generate_excel(report, name, reporting_start_datetime_local, reporting_end_d ws[col + str(current_row_number)].font = name_font ws[col + str(current_row_number)].alignment = c_c_alignment ws[col + str(current_row_number)].border = f_border - ws[col + str(current_row_number)] = round(reporting_period_data['maximums_per_unit_area'][i], 2) + ws[col + str(current_row_number)] = round(reporting_period_data['maximums_per_unit_area'][i], 2) \ + if reporting_period_data['maximums_per_unit_area'][i] is not None else 'N/A' current_row_number += 1 diff --git a/myems-api/reports/combinedequipmentload.py b/myems-api/reports/combinedequipmentload.py index 0751dc6e..58be6f08 100644 --- a/myems-api/reports/combinedequipmentload.py +++ b/myems-api/reports/combinedequipmentload.py @@ -507,19 +507,22 @@ class Reporting: result['reporting_period']['averages'].append(reporting[energy_category_id]['average']) result['reporting_period']['averages_increment_rate'].append( (reporting[energy_category_id]['average'] - base[energy_category_id]['average']) / - base[energy_category_id]['average'] if (base[energy_category_id]['average'] is not None and + base[energy_category_id]['average'] if (reporting[energy_category_id]['average'] is not None and + base[energy_category_id]['average'] is not None and base[energy_category_id]['average'] > Decimal(0.0)) else None) result['reporting_period']['maximums'].append(reporting[energy_category_id]['maximum']) result['reporting_period']['maximums_increment_rate'].append( (reporting[energy_category_id]['maximum'] - base[energy_category_id]['maximum']) / - base[energy_category_id]['maximum'] if (base[energy_category_id]['maximum'] is not None and + base[energy_category_id]['maximum'] if (reporting[energy_category_id]['maximum'] is not None and + base[energy_category_id]['maximum'] is not None and base[energy_category_id]['maximum'] > Decimal(0.0)) else None) result['reporting_period']['factors'].append(reporting[energy_category_id]['factor']) result['reporting_period']['factors_increment_rate'].append( (reporting[energy_category_id]['factor'] - base[energy_category_id]['factor']) / - base[energy_category_id]['factor'] if (base[energy_category_id]['factor'] is not None and + base[energy_category_id]['factor'] if (reporting[energy_category_id]['factor'] is not None and + base[energy_category_id]['factor'] is not None and base[energy_category_id]['factor'] > Decimal(0.0)) else None) diff --git a/myems-api/reports/equipmentload.py b/myems-api/reports/equipmentload.py index 71091a23..1674e4c3 100644 --- a/myems-api/reports/equipmentload.py +++ b/myems-api/reports/equipmentload.py @@ -500,19 +500,22 @@ class Reporting: result['reporting_period']['averages'].append(reporting[energy_category_id]['average']) result['reporting_period']['averages_increment_rate'].append( (reporting[energy_category_id]['average'] - base[energy_category_id]['average']) / - base[energy_category_id]['average'] if (base[energy_category_id]['average'] is not None and + base[energy_category_id]['average'] if (reporting[energy_category_id]['average'] is not None and + base[energy_category_id]['average'] is not None and base[energy_category_id]['average'] > Decimal(0.0)) else None) result['reporting_period']['maximums'].append(reporting[energy_category_id]['maximum']) result['reporting_period']['maximums_increment_rate'].append( (reporting[energy_category_id]['maximum'] - base[energy_category_id]['maximum']) / - base[energy_category_id]['maximum'] if (base[energy_category_id]['maximum'] is not None and + base[energy_category_id]['maximum'] if (reporting[energy_category_id]['maximum'] is not None and + base[energy_category_id]['maximum'] is not None and base[energy_category_id]['maximum'] > Decimal(0.0)) else None) result['reporting_period']['factors'].append(reporting[energy_category_id]['factor']) result['reporting_period']['factors_increment_rate'].append( (reporting[energy_category_id]['factor'] - base[energy_category_id]['factor']) / - base[energy_category_id]['factor'] if (base[energy_category_id]['factor'] is not None and + base[energy_category_id]['factor'] if (reporting[energy_category_id]['factor'] is not None and + base[energy_category_id]['factor'] is not None and base[energy_category_id]['factor'] > Decimal(0.0)) else None) diff --git a/myems-api/reports/spaceefficiency.py b/myems-api/reports/spaceefficiency.py index b39314e6..afdd3e2f 100644 --- a/myems-api/reports/spaceefficiency.py +++ b/myems-api/reports/spaceefficiency.py @@ -652,7 +652,7 @@ class Reporting: (reporting_input[energy_category_id]['subtotal'] - base_input[energy_category_id]['subtotal']) / base_input[energy_category_id]['subtotal'] - if base_input[energy_category_id]['subtotal'] > 0.0 else None) + if base_input[energy_category_id]['subtotal'] > Decimal(0.0) else None) result['reporting_period_output'] = dict() result['reporting_period_output']['names'] = list() @@ -717,7 +717,10 @@ class Reporting: result['reporting_period_efficiency']['cumulations'].append(reporting_cumulation) result['reporting_period_efficiency']['increment_rates'].append( - ((reporting_cumulation - base_cumulation) / base_cumulation if (base_cumulation > Decimal(0.0)) + ((reporting_cumulation - base_cumulation) / base_cumulation + if (reporting_cumulation is not None and + base_cumulation is not None and + base_cumulation > Decimal(0.0)) else None) ) diff --git a/myems-api/reports/spaceload.py b/myems-api/reports/spaceload.py index 96bf3851..77837326 100644 --- a/myems-api/reports/spaceload.py +++ b/myems-api/reports/spaceload.py @@ -524,13 +524,15 @@ class Reporting: else None) result['reporting_period']['averages_increment_rate'].append( (reporting[energy_category_id]['average'] - base[energy_category_id]['average']) / - base[energy_category_id]['average'] if (base[energy_category_id]['average'] is not None and + base[energy_category_id]['average'] if (reporting[energy_category_id]['average'] is not None and + base[energy_category_id]['average'] is not None and base[energy_category_id]['average'] > Decimal(0.0)) else None) result['reporting_period']['maximums'].append(reporting[energy_category_id]['maximum']) result['reporting_period']['maximums_increment_rate'].append( (reporting[energy_category_id]['maximum'] - base[energy_category_id]['maximum']) / - base[energy_category_id]['maximum'] if (base[energy_category_id]['maximum'] is not None and + base[energy_category_id]['maximum'] if (reporting[energy_category_id]['maximum'] is not None and + base[energy_category_id]['maximum'] is not None and base[energy_category_id]['maximum'] > Decimal(0.0)) else None) result['reporting_period']['maximums_per_unit_area'].append( @@ -542,7 +544,8 @@ class Reporting: result['reporting_period']['factors'].append(reporting[energy_category_id]['factor']) result['reporting_period']['factors_increment_rate'].append( (reporting[energy_category_id]['factor'] - base[energy_category_id]['factor']) / - base[energy_category_id]['factor'] if (base[energy_category_id]['factor'] is not None and + base[energy_category_id]['factor'] if (reporting[energy_category_id]['factor'] is not None and + base[energy_category_id]['factor'] is not None and base[energy_category_id]['factor'] > Decimal(0.0)) else None) diff --git a/myems-api/reports/storeload.py b/myems-api/reports/storeload.py index 7bc04fc3..6ab5c27a 100644 --- a/myems-api/reports/storeload.py +++ b/myems-api/reports/storeload.py @@ -524,13 +524,15 @@ class Reporting: else None) result['reporting_period']['averages_increment_rate'].append( (reporting[energy_category_id]['average'] - base[energy_category_id]['average']) / - base[energy_category_id]['average'] if (base[energy_category_id]['average'] is not None and + base[energy_category_id]['average'] if (reporting[energy_category_id]['average'] is not None and + base[energy_category_id]['average'] is not None and base[energy_category_id]['average'] > Decimal(0.0)) else None) result['reporting_period']['maximums'].append(reporting[energy_category_id]['maximum']) result['reporting_period']['maximums_increment_rate'].append( (reporting[energy_category_id]['maximum'] - base[energy_category_id]['maximum']) / - base[energy_category_id]['maximum'] if (base[energy_category_id]['maximum'] is not None and + base[energy_category_id]['maximum'] if (reporting[energy_category_id]['maximum'] is not None and + base[energy_category_id]['maximum'] is not None and base[energy_category_id]['maximum'] > Decimal(0.0)) else None) result['reporting_period']['maximums_per_unit_area'].append( @@ -542,7 +544,8 @@ class Reporting: result['reporting_period']['factors'].append(reporting[energy_category_id]['factor']) result['reporting_period']['factors_increment_rate'].append( (reporting[energy_category_id]['factor'] - base[energy_category_id]['factor']) / - base[energy_category_id]['factor'] if (base[energy_category_id]['factor'] is not None and + base[energy_category_id]['factor'] if (reporting[energy_category_id]['factor'] is not None and + base[energy_category_id]['factor'] is not None and base[energy_category_id]['factor'] > Decimal(0.0)) else None)