mirror of
https://github.com/SyncrowIOT/backend.git
synced 2025-07-15 10:25:23 +00:00
Merge branch 'dev' of https://github.com/SyncrowIOT/backend into feat/commission-device
This commit is contained in:
@ -345,6 +345,9 @@ export class ControllerRoute {
|
||||
static PRODUCT = class {
|
||||
public static readonly ROUTE = 'products';
|
||||
static ACTIONS = class {
|
||||
public static readonly CREATE_PRODUCT_SUMMARY = 'Create a new product';
|
||||
public static readonly CREATE_PRODUCT_DESCRIPTION =
|
||||
'This endpoint allows you to create a new product in the system.';
|
||||
public static readonly LIST_PRODUCT_SUMMARY = 'Retrieve all products';
|
||||
public static readonly LIST_PRODUCT_DESCRIPTION =
|
||||
'Fetches a list of all products along with their associated device details';
|
||||
|
@ -55,6 +55,7 @@ export const RolePermissions = {
|
||||
'USER_ADD',
|
||||
'SPACE_MEMBER_ADD',
|
||||
'COMMISSION_DEVICE',
|
||||
'PRODUCT_ADD',
|
||||
],
|
||||
[RoleType.ADMIN]: [
|
||||
'DEVICE_SINGLE_CONTROL',
|
||||
@ -110,6 +111,7 @@ export const RolePermissions = {
|
||||
'USER_ADD',
|
||||
'SPACE_MEMBER_ADD',
|
||||
'COMMISSION_DEVICE',
|
||||
'PRODUCT_ADD',
|
||||
],
|
||||
[RoleType.SPACE_MEMBER]: [
|
||||
'DEVICE_SINGLE_CONTROL',
|
||||
|
@ -61,5 +61,8 @@ JOIN energy_phase_B
|
||||
and total_energy.date=energy_phase_B.date
|
||||
JOIN energy_phase_C
|
||||
ON total_energy.device_id=energy_phase_C.device_id
|
||||
and total_energy.date=energy_phase_C.date
|
||||
and total_energy.date=energy_phase_C.date;
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -0,0 +1,65 @@
|
||||
-- model shows the energy consumed per day per device
|
||||
|
||||
WITH total_energy AS (
|
||||
SELECT
|
||||
device_id,
|
||||
event_time::date AS date,
|
||||
MIN(value)::integer AS min_value,
|
||||
MAX(value)::integer AS max_value
|
||||
FROM "device-status-log"
|
||||
where code='ActivePower'
|
||||
GROUP BY device_id, date
|
||||
)
|
||||
|
||||
, energy_phase_A AS (
|
||||
SELECT
|
||||
device_id,
|
||||
event_time::date AS date,
|
||||
MIN(value)::integer AS min_value,
|
||||
MAX(value)::integer AS max_value
|
||||
FROM "device-status-log"
|
||||
where code='ActivePowerA'
|
||||
GROUP BY device_id, date
|
||||
)
|
||||
|
||||
, energy_phase_B AS (
|
||||
SELECT
|
||||
device_id,
|
||||
event_time::date AS date,
|
||||
MIN(value)::integer AS min_value,
|
||||
MAX(value)::integer AS max_value
|
||||
FROM "device-status-log"
|
||||
where code='ActivePowerB'
|
||||
GROUP BY device_id, date
|
||||
)
|
||||
|
||||
, energy_phase_C AS (
|
||||
SELECT
|
||||
device_id,
|
||||
event_time::date AS date,
|
||||
MIN(value)::integer AS min_value,
|
||||
MAX(value)::integer AS max_value
|
||||
FROM "device-status-log"
|
||||
where code='ActivePowerC'
|
||||
GROUP BY device_id, date
|
||||
)
|
||||
|
||||
|
||||
SELECT
|
||||
total_energy.device_id,
|
||||
total_energy.date,
|
||||
(total_energy.max_value-total_energy.min_value) as energy_consumed_kW,
|
||||
(energy_phase_A.max_value-energy_phase_A.min_value) as energy_consumed_A,
|
||||
(energy_phase_B.max_value-energy_phase_B.min_value) as energy_consumed_B,
|
||||
(energy_phase_C.max_value-energy_phase_C.min_value) as energy_consumed_C
|
||||
FROM total_energy
|
||||
JOIN energy_phase_A
|
||||
ON total_energy.device_id=energy_phase_A.device_id
|
||||
and total_energy.date=energy_phase_A.date
|
||||
JOIN energy_phase_B
|
||||
ON total_energy.device_id=energy_phase_B.device_id
|
||||
and total_energy.date=energy_phase_B.date
|
||||
JOIN energy_phase_C
|
||||
ON total_energy.device_id=energy_phase_C.device_id
|
||||
and total_energy.date=energy_phase_C.date;
|
||||
|
@ -0,0 +1,71 @@
|
||||
WITH total_energy AS (
|
||||
SELECT
|
||||
device_id,
|
||||
event_time::date AS date,
|
||||
EXTRACT(HOUR FROM event_time) AS hour,
|
||||
MIN(value)::integer AS min_value,
|
||||
MAX(value)::integer AS max_value
|
||||
FROM "device-status-log"
|
||||
WHERE code = 'EnergyConsumed'
|
||||
GROUP BY device_id, date, hour
|
||||
),
|
||||
|
||||
energy_phase_A AS (
|
||||
SELECT
|
||||
device_id,
|
||||
event_time::date AS date,
|
||||
EXTRACT(HOUR FROM event_time) AS hour,
|
||||
MIN(value)::integer AS min_value,
|
||||
MAX(value)::integer AS max_value
|
||||
FROM "device-status-log"
|
||||
WHERE code = 'EnergyConsumedA'
|
||||
GROUP BY device_id, date, hour
|
||||
),
|
||||
|
||||
energy_phase_B AS (
|
||||
SELECT
|
||||
device_id,
|
||||
event_time::date AS date,
|
||||
EXTRACT(HOUR FROM event_time) AS hour,
|
||||
MIN(value)::integer AS min_value,
|
||||
MAX(value)::integer AS max_value
|
||||
FROM "device-status-log"
|
||||
WHERE code = 'EnergyConsumedB'
|
||||
GROUP BY device_id, date, hour
|
||||
),
|
||||
|
||||
energy_phase_C AS (
|
||||
SELECT
|
||||
device_id,
|
||||
event_time::date AS date,
|
||||
EXTRACT(HOUR FROM event_time) AS hour,
|
||||
MIN(value)::integer AS min_value,
|
||||
MAX(value)::integer AS max_value
|
||||
FROM "device-status-log"
|
||||
WHERE code = 'EnergyConsumedC'
|
||||
GROUP BY device_id, date, hour
|
||||
)
|
||||
|
||||
SELECT
|
||||
total_energy.device_id,
|
||||
total_energy.date,
|
||||
total_energy.hour,
|
||||
(total_energy.max_value - total_energy.min_value) AS energy_consumed_kW,
|
||||
(energy_phase_A.max_value - energy_phase_A.min_value) AS energy_consumed_A,
|
||||
(energy_phase_B.max_value - energy_phase_B.min_value) AS energy_consumed_B,
|
||||
(energy_phase_C.max_value - energy_phase_C.min_value) AS energy_consumed_C
|
||||
FROM total_energy
|
||||
JOIN energy_phase_A
|
||||
ON total_energy.device_id = energy_phase_A.device_id
|
||||
AND total_energy.date = energy_phase_A.date
|
||||
AND total_energy.hour = energy_phase_A.hour
|
||||
JOIN energy_phase_B
|
||||
ON total_energy.device_id = energy_phase_B.device_id
|
||||
AND total_energy.date = energy_phase_B.date
|
||||
AND total_energy.hour = energy_phase_B.hour
|
||||
JOIN energy_phase_C
|
||||
ON total_energy.device_id = energy_phase_C.device_id
|
||||
AND total_energy.date = energy_phase_C.date
|
||||
AND total_energy.hour = energy_phase_C.hour
|
||||
ORDER BY total_energy.device_id, total_energy.date, total_energy.hour;
|
||||
|
Reference in New Issue
Block a user