This commit is contained in:
+34
-1
@@ -127,6 +127,11 @@ final class ManagerRegler
|
||||
continue;
|
||||
}
|
||||
|
||||
$festwert = self::istFestwert($daten['Leistungswerte_W']);
|
||||
if ($festwert) {
|
||||
$nichtSteuerbar += $leistung;
|
||||
}
|
||||
|
||||
$energie = $bezogeneEnergieWh[$eintrag['InstanzID']] ?? 0.0;
|
||||
if ((!is_int($energie) && !is_float($energie))
|
||||
|| (is_float($energie) && !is_finite($energie))
|
||||
@@ -138,6 +143,7 @@ final class ManagerRegler
|
||||
'Prioritaet' => $daten[$prioritaetsfeld],
|
||||
'Energiegruppe' => (int) round((float) $energie / 2000.0),
|
||||
'Leistungswerte_W' => $daten['Leistungswerte_W'],
|
||||
'Festwert' => $festwert,
|
||||
];
|
||||
}
|
||||
|
||||
@@ -157,6 +163,13 @@ final class ManagerRegler
|
||||
$sollwerte = [];
|
||||
$ausgangssumme = 0;
|
||||
foreach ($steuerbar as $eintrag) {
|
||||
if ($eintrag['Festwert']) {
|
||||
$sollwerte[$eintrag['InstanzID']] = self::kleinsterLeistungswert(
|
||||
$eintrag['Leistungswerte_W']
|
||||
);
|
||||
continue;
|
||||
}
|
||||
|
||||
$ausgangswert = self::neutralerLeistungswert($eintrag['Leistungswerte_W']);
|
||||
$sollwerte[$eintrag['InstanzID']] = $ausgangswert;
|
||||
$ausgangssumme += $ausgangswert;
|
||||
@@ -164,6 +177,10 @@ final class ManagerRegler
|
||||
|
||||
$rest = $verteilbudget - $nichtSteuerbar - $ausgangssumme;
|
||||
foreach ($steuerbar as $eintrag) {
|
||||
if ($eintrag['Festwert']) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$instanzID = $eintrag['InstanzID'];
|
||||
$ausgangswert = $sollwerte[$instanzID];
|
||||
if ($rest >= 0) {
|
||||
@@ -181,7 +198,12 @@ final class ManagerRegler
|
||||
$sollwerte[$instanzID] = $neuerSollwert;
|
||||
}
|
||||
|
||||
$zugeteilt = $nichtSteuerbar + array_sum($sollwerte);
|
||||
$zugeteilt = $nichtSteuerbar;
|
||||
foreach ($steuerbar as $eintrag) {
|
||||
if (!$eintrag['Festwert']) {
|
||||
$zugeteilt += $sollwerte[$eintrag['InstanzID']];
|
||||
}
|
||||
}
|
||||
|
||||
return [
|
||||
'Verteilbudget_W' => $verteilbudget,
|
||||
@@ -238,6 +260,17 @@ final class ManagerRegler
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ein einzelner Leistungswert bleibt als Befehl erhalten. Fuer die
|
||||
* Leistungsbilanz zaehlt jedoch die gemessene Istleistung.
|
||||
*
|
||||
* @param list<int|array{Von_W: int, Bis_W: int}> $leistungswerte
|
||||
*/
|
||||
private static function istFestwert(array $leistungswerte): bool
|
||||
{
|
||||
return count($leistungswerte) === 1 && is_int($leistungswerte[0]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param list<int|array{Von_W: int, Bis_W: int}> $leistungswerte
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user