FP calculation logic correction in Med5minRepository for improved accuracy

This commit is contained in:
Giuliano Paschoalino 2025-12-04 16:26:32 -03:00
parent a9c140e953
commit 17bbf8d0e6
2 changed files with 17 additions and 10 deletions

View File

@ -1,3 +1,3 @@
# API
## Requerimentos
## Requerimento

View File

@ -245,15 +245,22 @@ class Med5minRepository extends AbstractRepository implements Med5minContractInt
$field =
[
DB::raw("
(
SUM(med_5min.ativa_consumo)
/
CASE WHEN SQRT(SUM(med_5min.reativa_consumo+med_5min.reativa_geracao)^2) <> 0
THEN SQRT(SUM(med_5min.reativa_consumo+med_5min.reativa_geracao)^2)
CASE
WHEN (SUM(med_5min.ativa_consumo - med_5min.ativa_geracao) = 0 AND SUM(med_5min.reativa_consumo - med_5min.reativa_geracao) = 0) THEN NULL
WHEN SUM(med_5min.reativa_consumo - med_5min.reativa_geracao) > 0 THEN
ABS(SUM(med_5min.ativa_consumo - med_5min.ativa_geracao)) /
SQRT(POWER(SUM(med_5min.ativa_consumo - med_5min.ativa_geracao), 2) + POWER(SUM(med_5min.reativa_consumo - med_5min.reativa_geracao), 2))
ELSE NULL
END
) as FP"),
DB::raw("0.92 as F_ref")
END as fp_indutivo"),
DB::raw("
CASE
WHEN (SUM(med_5min.ativa_consumo - med_5min.ativa_geracao) = 0 AND SUM(med_5min.reativa_consumo - med_5min.reativa_geracao) = 0) THEN NULL
WHEN SUM(med_5min.reativa_consumo - med_5min.reativa_geracao) < 0 THEN
ABS(SUM(med_5min.ativa_consumo - med_5min.ativa_geracao)) /
SQRT(POWER(SUM(med_5min.ativa_consumo - med_5min.ativa_geracao), 2) + POWER(SUM(med_5min.reativa_consumo - med_5min.reativa_geracao), 2))
ELSE NULL
END as fp_capacitivo"),
DB::raw("0.92 as f_ref")
];
return $collection->merge($field);