Merge pull request #356 from SyncrowIOT/DATA-energy-consummed-space=procedure

DATA-space_energy_consumed_procedure
This commit is contained in:
faljawhary
2025-05-02 01:59:03 +03:00
committed by GitHub
8 changed files with 45 additions and 14 deletions

View File

@ -22,21 +22,20 @@ export class PowerClampService {
})
.replace('/', '-'); // MM-YYYY
await this.executeProcedure('fact_hourly_energy_consumed_procedure', [
deviceUuid,
dateStr,
hour,
]);
await this.executeProcedure(
'fact_hourly_device_energy_consumed_procedure',
[deviceUuid, dateStr, hour],
);
await this.executeProcedure('fact_daily_energy_consumed_procedure', [
deviceUuid,
dateStr,
]);
await this.executeProcedure(
'fact_daily_device_energy_consumed_procedure',
[deviceUuid, dateStr],
);
await this.executeProcedure('fact_monthly_energy_consumed_procedure', [
deviceUuid,
monthYear,
]);
await this.executeProcedure(
'fact_monthly_device_energy_consumed_procedure',
[deviceUuid, monthYear],
);
} catch (err) {
console.error('Failed to insert or update energy data:', err);
throw err;
@ -49,11 +48,12 @@ export class PowerClampService {
): Promise<void> {
const query = this.loadQuery(procedureFileName);
await this.dataSource.query(query, params);
console.log(`Procedure ${procedureFileName} executed successfully.`);
}
private loadQuery(fileName: string): string {
return this.sqlLoader.loadQuery(
'fact_energy_consumed',
'fact_device_energy_consumed',
fileName,
SQL_PROCEDURES_PATH,
);

View File

@ -0,0 +1,20 @@
WITH params AS (
SELECT
TO_DATE(NULLIF($2, ''), 'DD-MM-YYYY') AS start_date,
TO_DATE(NULLIF($3, ''), 'DD-MM-YYYY') AS end_date,
string_to_array(NULLIF($4, ''), ',') AS device_ids
)
SELECT TO_CHAR(A.date, 'MM-YYYY') AS month,
SUM(A.energy_consumed_kW::numeric) AS total_energy_consumed_KW,
SUM(A.energy_consumed_A::numeric) AS total_energy_consumed_A,
SUM(A.energy_consumed_B::numeric) AS total_energy_consumed_B,
SUM(A.energy_consumed_C::numeric) AS total_energy_consumed_C
FROM public."power-clamp-energy-consumed-daily" AS A
JOIN public.device AS B
ON A.device_uuid::TEXT = B."uuid"::TEXT
JOIN params P ON TRUE
WHERE B."uuid"::TEXT = ANY(P.device_ids)
AND (P.start_date IS NULL OR A.date >= P.start_date)
AND (P.end_date IS NULL OR A.date <= P.end_date)
GROUP BY 1;

View File

@ -0,0 +1,11 @@
SELECT
B.space_device_uuid AS space_id,
A."date",
SUM(A.energy_consumed_kW::numeric) AS total_energy_consumed_KW,
SUM(A.energy_consumed_A::numeric) AS total_energy_consumed_A,
SUM(A.energy_consumed_B::numeric) AS total_energy_consumed_B,
SUM(A.energy_consumed_C::numeric) AS total_energy_consumed_C
FROM public."power-clamp-energy-consumed-daily" AS A -- I want to change the source table in the future.
JOIN public.device AS B
ON A.device_uuid::TEXT = B."uuid"::TEXT
GROUP BY 1, 2;