Acrescentar discretização de um mês.

This commit is contained in:
Djonathan 2022-06-30 20:47:40 -03:00
parent 362f7bb385
commit 450ade996b
2 changed files with 41 additions and 7 deletions

View File

@ -12,6 +12,7 @@ interface Med5minContractInterface extends ContractInterface
public function getDiscretized15min($params);
public function getDiscretizedOneHour($params);
public function getDiscretizedOneDay($params);
public function getDiscretizedOneMonth($params);
public function getPowerFactor($params);
public function getDemand($params);
public function getDiscretization($params);

View File

@ -64,7 +64,7 @@ class Med5minRepository extends AbstractRepository implements Med5minContractInt
DB::raw("(med_5min.minuto/60) AS hora"),
DB::raw("SUM(med_5min.ativa_consumo) AS dem_reg"),
DB::raw("(CASE WHEN ((med_5min.minuto/60) >= 18 AND (med_5min.minuto/60) <= 21) THEN dados_cadastrais.demanda_p ELSE dados_cadastrais.demanda_fp END) as dem_cont")
];
];
$params = static::filterRow($params);
@ -83,8 +83,8 @@ class Med5minRepository extends AbstractRepository implements Med5minContractInt
public function getDiscretization($params)
{
if (empty( $params['type'])){
return abort(404, 'Error! The type field needs to be filled in.');
if (empty($params['type'])) {
return abort(404, 'Error! The type field needs to be filled in.');
}
$type = $params['type'];
@ -92,10 +92,11 @@ class Med5minRepository extends AbstractRepository implements Med5minContractInt
$params = static::filterRow($params);
return match ($type) {
'5_min' => $this->getDiscretized5min($params),
'15_min' => $this->getDiscretized15min($params),
'1_hora' => $this->getDiscretizedOneHour($params),
'1_dia' => $this->getDiscretizedOneDay($params)
'5_min' => $this->getDiscretized5min($params),
'15_min' => $this->getDiscretized15min($params),
'1_hora' => $this->getDiscretizedOneHour($params),
'1_dia' => $this->getDiscretizedOneDay($params),
'1_mes' => $this->getDiscretizedOneMonth($params)
};
}
@ -173,6 +174,38 @@ class Med5minRepository extends AbstractRepository implements Med5minContractInt
->get();
}
public function getDiscretizedOneMonth($params): Collection|array
{
$fields =
[
'med_5min.ponto',
DB::raw("(
med_5min.dia_num::INTEGER - extract(day from (
(date('1899-12-30') + interval '1' day * med_5min.dia_num)
-
to_date(
concat(
extract( YEAR from date '1899-12-31' + cast (med_5min.dia_num as integer)),
'/',
extract( month from date '1899-12-31' + cast (med_5min.dia_num as integer))
),
'YYYY/MM'
)
))
) as dia_data"),
DB::raw("1 as hora"),
DB::raw("1 as minuto"),
DB::raw("SUM(med_5min.ativa_consumo) As consumo"),
DB::raw("SUM(med_5min.reativa_consumo+med_5min.reativa_geracao) As reativa")
];
return $this->execute($fields, $params)
->groupBy(["med_5min.dia_num", "med_5min.ponto"])
->orderBy(DB::raw("med_5min.dia_num, med_5min.ponto"))
->get();
}
public static function filterRow($params, $field = 'dia_num'): array
{
$arr['filters'] = collect($params['filters'])