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 # API
## Requerimentos ## Requerimento

View File

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