mirror of
https://github.com/SyncrowIOT/backend.git
synced 2025-11-26 17:54:54 +00:00
Merge pull request #345 from SyncrowIOT/DATA-add-parameter
DATA-added-parameter-to-energy-consumed
This commit is contained in:
@ -0,0 +1,9 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { ClientEntity } from './entities';
|
||||
|
||||
@Module({
|
||||
imports: [TypeOrmModule.forFeature([ClientEntity])],
|
||||
exports: [TypeOrmModule],
|
||||
})
|
||||
export class ClientRepositoryModule {}
|
||||
20
libs/common/src/modules/client/dtos/client.dto 2.ts
Normal file
20
libs/common/src/modules/client/dtos/client.dto 2.ts
Normal file
@ -0,0 +1,20 @@
|
||||
import { IsArray, IsNotEmpty, IsString } from 'class-validator';
|
||||
|
||||
export class ClientDto {
|
||||
@IsString()
|
||||
@IsNotEmpty()
|
||||
public uuid: string;
|
||||
|
||||
@IsString()
|
||||
@IsNotEmpty()
|
||||
public clientId: string;
|
||||
@IsString()
|
||||
@IsNotEmpty()
|
||||
public clientSecret: string;
|
||||
@IsString()
|
||||
@IsNotEmpty()
|
||||
public redirectUri: string;
|
||||
@IsArray()
|
||||
@IsNotEmpty()
|
||||
public scopes: string[];
|
||||
}
|
||||
@ -1,25 +1,15 @@
|
||||
WITH params AS (
|
||||
SELECT
|
||||
NULL::uuid AS device_id, -- filter: specific device (or NULL for all)
|
||||
NULL::date AS input_date, -- filter: start date (or NULL for open range) -- filter: end date (or NULL for open range)
|
||||
NULL::int AS hour, -- filter: hour of day (or NULL for all hours)
|
||||
NULL::int AS min_kw -- filter: min kW consumed (or NULL for no filter)
|
||||
),
|
||||
|
||||
total_energy AS (
|
||||
WITH total_energy AS (
|
||||
SELECT
|
||||
log.device_id,
|
||||
log.event_time::date AS date,
|
||||
EXTRACT(HOUR FROM log.event_time) AS hour,
|
||||
TO_CHAR(log.event_time, 'MM-YYYY') AS event_month,
|
||||
EXTRACT(YEAR FROM log.event_time)::int AS event_year,
|
||||
MIN(log.value)::integer AS min_value,
|
||||
MAX(log.value)::integer AS max_value
|
||||
FROM "device-status-log" log, params
|
||||
FROM "device-status-log" log
|
||||
WHERE log.code = 'EnergyConsumed'
|
||||
AND (params.device_id IS NULL OR log.device_id = params.device_id)
|
||||
AND (params.input_date IS NULL OR log.event_time::date >= params.input_date)
|
||||
AND (params.input_date IS NULL OR log.event_time::date <= params.input_date)
|
||||
AND (params.hour IS NULL OR EXTRACT(HOUR FROM log.event_time) = params.hour)
|
||||
GROUP BY log.device_id, log.event_time::date, EXTRACT(HOUR FROM log.event_time)
|
||||
GROUP BY 1,2,3,4,5
|
||||
),
|
||||
|
||||
energy_phase_A AS (
|
||||
@ -27,15 +17,13 @@ energy_phase_A AS (
|
||||
log.device_id,
|
||||
log.event_time::date AS date,
|
||||
EXTRACT(HOUR FROM log.event_time) AS hour,
|
||||
TO_CHAR(log.event_time, 'MM-YYYY') AS event_month,
|
||||
EXTRACT(YEAR FROM log.event_time)::int AS event_year,
|
||||
MIN(log.value)::integer AS min_value,
|
||||
MAX(log.value)::integer AS max_value
|
||||
FROM "device-status-log" log, params
|
||||
FROM "device-status-log" log
|
||||
WHERE log.code = 'EnergyConsumedA'
|
||||
AND (params.device_id IS NULL OR log.device_id = params.device_id)
|
||||
AND (params.input_date IS NULL OR log.event_time::date >= params.input_date)
|
||||
AND (params.input_date IS NULL OR log.event_time::date <= params.input_date)
|
||||
AND (params.hour IS NULL OR EXTRACT(HOUR FROM log.event_time) = params.hour)
|
||||
GROUP BY log.device_id, log.event_time::date, EXTRACT(HOUR FROM log.event_time)
|
||||
GROUP BY 1,2,3,4,5
|
||||
),
|
||||
|
||||
energy_phase_B AS (
|
||||
@ -43,15 +31,13 @@ energy_phase_B AS (
|
||||
log.device_id,
|
||||
log.event_time::date AS date,
|
||||
EXTRACT(HOUR FROM log.event_time) AS hour,
|
||||
TO_CHAR(log.event_time, 'MM-YYYY') AS event_month,
|
||||
EXTRACT(YEAR FROM log.event_time)::int AS event_year,
|
||||
MIN(log.value)::integer AS min_value,
|
||||
MAX(log.value)::integer AS max_value
|
||||
FROM "device-status-log" log, params
|
||||
FROM "device-status-log" log
|
||||
WHERE log.code = 'EnergyConsumedB'
|
||||
AND (params.device_id IS NULL OR log.device_id = params.device_id)
|
||||
AND (params.input_date IS NULL OR log.event_time::date >= params.input_date)
|
||||
AND (params.input_date IS NULL OR log.event_time::date <= params.input_date)
|
||||
AND (params.hour IS NULL OR EXTRACT(HOUR FROM log.event_time) = params.hour)
|
||||
GROUP BY log.device_id, log.event_time::date, EXTRACT(HOUR FROM log.event_time)
|
||||
GROUP BY 1,2,3,4,5
|
||||
),
|
||||
|
||||
energy_phase_C AS (
|
||||
@ -59,20 +45,20 @@ energy_phase_C AS (
|
||||
log.device_id,
|
||||
log.event_time::date AS date,
|
||||
EXTRACT(HOUR FROM log.event_time) AS hour,
|
||||
TO_CHAR(log.event_time, 'MM-YYYY') AS event_month,
|
||||
EXTRACT(YEAR FROM log.event_time)::int AS event_year,
|
||||
MIN(log.value)::integer AS min_value,
|
||||
MAX(log.value)::integer AS max_value
|
||||
FROM "device-status-log" log, params
|
||||
FROM "device-status-log" log
|
||||
WHERE log.code = 'EnergyConsumedC'
|
||||
AND (params.device_id IS NULL OR log.device_id = params.device_id)
|
||||
AND (params.input_date IS NULL OR log.event_time::date >= params.input_date)
|
||||
AND (params.input_date IS NULL OR log.event_time::date <= params.input_date)
|
||||
AND (params.hour IS NULL OR EXTRACT(HOUR FROM log.event_time) = params.hour)
|
||||
GROUP BY log.device_id, log.event_time::date, EXTRACT(HOUR FROM log.event_time)
|
||||
GROUP BY 1,2,3,4,5
|
||||
)
|
||||
|
||||
SELECT
|
||||
t.device_id,
|
||||
t.date,
|
||||
t.event_year::text,
|
||||
t.event_month,
|
||||
t.hour,
|
||||
(t.max_value - t.min_value) AS energy_consumed_kW,
|
||||
(a.max_value - a.min_value) AS energy_consumed_A,
|
||||
@ -82,6 +68,4 @@ FROM total_energy t
|
||||
JOIN energy_phase_A a ON t.device_id = a.device_id AND t.date = a.date AND t.hour = a.hour
|
||||
JOIN energy_phase_B b ON t.device_id = b.device_id AND t.date = b.date AND t.hour = b.hour
|
||||
JOIN energy_phase_C c ON t.device_id = c.device_id AND t.date = c.date AND t.hour = c.hour
|
||||
JOIN params p ON TRUE
|
||||
WHERE (p.min_kw IS NULL OR (t.max_value - t.min_value) >= p.min_kw)
|
||||
ORDER BY t.device_id, t.date, t.hour;
|
||||
ORDER BY 1,2;
|
||||
9
libs/common/src/type/express/index.d 2.ts
Normal file
9
libs/common/src/type/express/index.d 2.ts
Normal file
@ -0,0 +1,9 @@
|
||||
import { File } from 'multer';
|
||||
|
||||
declare global {
|
||||
namespace Express {
|
||||
interface Request {
|
||||
file?: File;
|
||||
}
|
||||
}
|
||||
}
|
||||
7
src/space/dtos/space.parents.dto 2.ts
Normal file
7
src/space/dtos/space.parents.dto 2.ts
Normal file
@ -0,0 +1,7 @@
|
||||
import { SpaceEntity } from '@app/common/modules/space/entities/space.entity';
|
||||
import { Expose } from 'class-transformer';
|
||||
|
||||
export class SpaceWithParentsDto extends SpaceEntity {
|
||||
@Expose()
|
||||
lastThreeParents: string;
|
||||
}
|
||||
Reference in New Issue
Block a user