Implement telemetry endpoints.
This commit is contained in:
parent
6e58cf08fe
commit
b5297229b6
@ -49,19 +49,18 @@ class TelemetryController extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
public function discretized15min($params)
|
||||
public function discretization(Request $request)
|
||||
{
|
||||
|
||||
try {
|
||||
$response = $this->med5minContract->getDiscretization($request->all());
|
||||
return (new TelemetryResource($response))
|
||||
->response()
|
||||
->setStatusCode(Response::HTTP_OK);
|
||||
} catch (\Exception $ex) {
|
||||
return $this->errorResponse(false, $ex->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
public function discretizedOneHour($params)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public function discretizedOneDay($params)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -6,10 +6,12 @@ use App\Repositories\ContractInterface;
|
||||
|
||||
interface Med5minContractInterface extends ContractInterface
|
||||
{
|
||||
public function getDiscretized5min($params);
|
||||
public function getDiscretized15min($params);
|
||||
public function getDiscretizedOneHour($params);
|
||||
public function getDiscretizedOneDay($params);
|
||||
public function getPowerFactor($params);
|
||||
public function getDemand($params);
|
||||
public function getDiscretization($params);
|
||||
|
||||
}
|
||||
@ -81,6 +81,99 @@ class Med5minRepository extends AbstractRepository implements Med5minContractInt
|
||||
->get();
|
||||
}
|
||||
|
||||
|
||||
public function getDiscretization($params)
|
||||
{
|
||||
if (empty( $params['type'])){
|
||||
return abort(404, 'Error! The type field needs to be filled in.');
|
||||
}
|
||||
|
||||
$type = $params['type'];
|
||||
|
||||
$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)
|
||||
};
|
||||
}
|
||||
|
||||
public function getDiscretized5min($params)
|
||||
{
|
||||
$fields =
|
||||
[
|
||||
'med_5min.ponto',
|
||||
'med_5min.dia_num',
|
||||
DB::raw("TO_CHAR((date('1899-12-30') + interval '1' day * med_5min.dia_num), 'DD/MM/YYYY') as day_formatted"),
|
||||
DB::raw("(med_5min.minuto/60) AS hora"),
|
||||
DB::raw("MOD(med_5min.minuto,60) AS minut"),
|
||||
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.ponto", "med_5min.dia_num", "day_formatted", 'hora', 'minut'])
|
||||
->distinct()
|
||||
->get();
|
||||
|
||||
}
|
||||
|
||||
public function getDiscretized15min($params)
|
||||
{
|
||||
$fields =
|
||||
[
|
||||
'med_5min.ponto',
|
||||
'med_5min.dia_num',
|
||||
DB::raw("TO_CHAR((date('1899-12-30') + interval '1' day * med_5min.dia_num), 'DD/MM/YYYY') as day_formatted"),
|
||||
DB::raw("(med_5min.minuto/60) AS hora"),
|
||||
DB::raw("((MOD(med_5min.minuto,60)/15)+1)*15 AS minut"),
|
||||
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.ponto", "med_5min.dia_num", "day_formatted", 'hora', 'minut'])
|
||||
->distinct()
|
||||
->get();
|
||||
}
|
||||
|
||||
public function getDiscretizedOneHour($params)
|
||||
{
|
||||
$fields =
|
||||
[
|
||||
'med_5min.ponto',
|
||||
'med_5min.dia_num',
|
||||
DB::raw("TO_CHAR((date('1899-12-30') + interval '1' day * med_5min.dia_num), 'DD/MM/YYYY') as day_formatted"),
|
||||
DB::raw("(med_5min.minuto/60) AS hora"),
|
||||
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.ponto", "med_5min.dia_num", "day_formatted", 'hora'])
|
||||
->distinct()
|
||||
->get();
|
||||
}
|
||||
|
||||
public function getDiscretizedOneDay($params)
|
||||
{
|
||||
$fields =
|
||||
[
|
||||
'med_5min.ponto',
|
||||
'med_5min.dia_num',
|
||||
DB::raw("TO_CHAR((date('1899-12-30') + interval '1' day * med_5min.dia_num), 'DD/MM/YYYY') as day_formatted"),
|
||||
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.ponto", "med_5min.dia_num", "day_formatted"])
|
||||
->distinct()
|
||||
->get();
|
||||
}
|
||||
|
||||
public static function filterRow($params, $field = 'dia_num'): array
|
||||
{
|
||||
$arr['filters'] = collect($params['filters'])
|
||||
@ -94,47 +187,4 @@ class Med5minRepository extends AbstractRepository implements Med5minContractInt
|
||||
return $arr;
|
||||
}
|
||||
|
||||
public function getDiscretized15min($params)
|
||||
{
|
||||
$fields =
|
||||
[
|
||||
'med_5min.ponto',
|
||||
'med_5min.dia_num',
|
||||
DB::raw("(med_5min.minuto/60) AS hora"),
|
||||
DB::raw("((MOD(med_5min.minuto,60)/15)+1)*15 AS minut"),
|
||||
DB::raw("SUM(med_5min.ativa_consumo) AS consumo"),
|
||||
DB::raw("UM(med_5min.reativa_consumo+med_5min.reativa_geracao) AS reativa")
|
||||
];
|
||||
|
||||
return $this->execute($fields, $params);
|
||||
}
|
||||
|
||||
public function getDiscretizedOneHour($params)
|
||||
{
|
||||
$fields =
|
||||
[
|
||||
'med_5min.ponto',
|
||||
'med_5min.dia_num',
|
||||
DB::raw("(med_5min.minuto/60) AS hora"),
|
||||
DB::raw("SUM(med_5min.ativa_consumo) AS consumo"),
|
||||
DB::raw("UM(med_5min.reativa_consumo+med_5min.reativa_geracao) AS reativa")
|
||||
];;
|
||||
|
||||
return $this->execute($fields, $params);
|
||||
}
|
||||
|
||||
public function getDiscretizedOneDay($params)
|
||||
{
|
||||
$fields =
|
||||
[
|
||||
'med_5min.ponto',
|
||||
'med_5min.dia_num',
|
||||
DB::raw("(med_5min.minuto/60) AS hora"),
|
||||
DB::raw("SUM(med_5min.ativa_consumo) AS consumo"),
|
||||
DB::raw("UM(med_5min.reativa_consumo+med_5min.reativa_geracao) AS reativa")
|
||||
];
|
||||
|
||||
return $this->execute($fields, $params);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -61,6 +61,7 @@ Route::middleware(['auth:sanctum', 'ability:Client'])->group(function () {
|
||||
// Route::post('telemetry', [\App\Http\Controllers\TelemetryController::class, 'index']);
|
||||
Route::post('telemetry/powerFactor', [\App\Http\Controllers\TelemetryController::class, 'powerFactor']);
|
||||
Route::post('telemetry/demand', [\App\Http\Controllers\TelemetryController::class, 'demand']);
|
||||
Route::post('telemetry/discretization', [\App\Http\Controllers\TelemetryController::class, 'discretization']);
|
||||
// Route::post('telemetry/grossMonthly', [\App\Http\Controllers\TelemetryController::class, 'grossMonthlyEconomy']);
|
||||
// Route::post('telemetry/estimates', [\App\Http\Controllers\TelemetryController::class, 'captiveMonthlyEconomy']);
|
||||
// Route::post('telemetry/MWh', [\App\Http\Controllers\TelemetryController::class, 'costMWhEconomy']);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user