JSON-Ausgabe eingebaut
This commit is contained in:
parent
a8d65c21b2
commit
ed7c8d6d34
@ -5,6 +5,8 @@ import java.text.DecimalFormatSymbols;
|
||||
import java.text.NumberFormat;
|
||||
import java.time.Duration;
|
||||
import java.time.Instant;
|
||||
import java.time.ZoneId;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.time.temporal.ChronoField;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
@ -17,6 +19,7 @@ import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import info.peper.vz.rest.bo.Statistics;
|
||||
import info.peper.vz.rest.bo.db.Aggregate;
|
||||
import info.peper.vz.rest.bo.db.EnergyPrice;
|
||||
|
||||
@ -76,8 +79,8 @@ class VzRestController {
|
||||
return prices;
|
||||
}
|
||||
|
||||
@GetMapping(value="/rest-vz/summary", produces = {"text/plain"})
|
||||
String getSummary(@RequestParam(name = "timestampStart", defaultValue = "-1")long timestampStart,
|
||||
@GetMapping(value="/rest-vz/stats", produces = {"application/json"})
|
||||
Statistics getStats(@RequestParam(name = "timestampStart", defaultValue = "-1")long timestampStart,
|
||||
@RequestParam(name = "timestampEnd", defaultValue = "-1")long timestampEnd,
|
||||
@RequestParam(name = "duration", defaultValue = "")final String duration,
|
||||
@RequestParam("houseId")final int houseId,
|
||||
@ -96,9 +99,6 @@ class VzRestController {
|
||||
}
|
||||
}
|
||||
|
||||
final NumberFormat formatCurrency = new DecimalFormat("#,##0.00", new DecimalFormatSymbols(Locale.GERMAN));
|
||||
final NumberFormat formatPercent = new DecimalFormat("#,##0.00", new DecimalFormatSymbols(Locale.GERMAN));
|
||||
final NumberFormat formatEnergy = new DecimalFormat("#,##0.00", new DecimalFormatSymbols(Locale.GERMAN));
|
||||
final List<EnergyPrice> prices = this.getPrices(timestampStart, timestampEnd, houseId);
|
||||
|
||||
float savedMoney = 0;
|
||||
@ -122,16 +122,31 @@ class VzRestController {
|
||||
timestampMax = aggregate.getTimestampEnd();
|
||||
}
|
||||
}
|
||||
return new Statistics(timestampMin, timestampMax, totalProduced, totalInjected, totalObtained, (long)(savedMoney*100));
|
||||
}
|
||||
|
||||
@GetMapping(value="/rest-vz/summary", produces = {"text/plain"})
|
||||
String getSummary(@RequestParam(name = "timestampStart", defaultValue = "-1")long timestampStart,
|
||||
@RequestParam(name = "timestampEnd", defaultValue = "-1")long timestampEnd,
|
||||
@RequestParam(name = "duration", defaultValue = "")final String duration,
|
||||
@RequestParam("houseId")final int houseId,
|
||||
@RequestParam(name = "solarFactor", defaultValue = "1.0")final float solarFactor) {
|
||||
|
||||
final Statistics stats = this.getStats(timestampStart, timestampEnd, duration, houseId, solarFactor);
|
||||
|
||||
final NumberFormat formatCurrency = new DecimalFormat("#,##0.00", new DecimalFormatSymbols(Locale.GERMAN));
|
||||
final NumberFormat formatPercent = new DecimalFormat("#,##0.00", new DecimalFormatSymbols(Locale.GERMAN));
|
||||
final NumberFormat formatEnergy = new DecimalFormat("#,##0.00", new DecimalFormatSymbols(Locale.GERMAN));
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
sb.append("Start: " + Instant.ofEpochMilli(timestampMin).toString() + "\n");
|
||||
sb.append("Ende: " + Instant.ofEpochMilli(timestampMax).toString() + "\n");
|
||||
sb.append("Erzeugter Strom von der Photovoltaik: " + formatEnergy.format((float)totalProduced/1000000) + " kWh\n");
|
||||
sb.append("Eingespeister Strom von der Photovoltaik: " + formatEnergy.format((float)totalInjected/1000000) + " kWh\n");
|
||||
sb.append("Genutzter Strom von der Photovoltaik: " + formatEnergy.format((float)(totalProduced-totalInjected)/1000000) + " kWh (=");
|
||||
sb.append(formatPercent.format((float)(totalProduced-totalInjected)/(float)totalProduced*100) + " %)\n");
|
||||
sb.append("Bezogener Strom: " + formatEnergy.format((float)totalObtained/1000000) + " kWh\n");
|
||||
sb.append("Autakie: " + formatPercent.format((float)(totalProduced-totalInjected)/(float)(totalObtained+totalProduced-totalInjected)*100) + " %\n");
|
||||
sb.append("Eingespartes Geld: " + formatCurrency.format(savedMoney) + "€\n");
|
||||
sb.append("Start: .................................. " + ZonedDateTime.ofInstant(Instant.ofEpochMilli(stats.getTimestampStart()), ZoneId.systemDefault()).toString() + "\n");
|
||||
sb.append("Ende: ................................... " + ZonedDateTime.ofInstant(Instant.ofEpochMilli(stats.getTimestampEnd()), ZoneId.systemDefault()).toString() + "\n");
|
||||
sb.append("Erzeugter Strom von der Photovoltaik: ... " + formatEnergy.format((float)stats.getProducedEnergy()/1000000) + " kWh\n");
|
||||
sb.append("Eingespeister Strom von der Photovoltaik: " + formatEnergy.format((float)stats.getInjectedEnergy()/1000000) + " kWh\n");
|
||||
sb.append("Genutzter Strom von der Photovoltaik: ... " + formatEnergy.format((float)(stats.getProducedEnergy()-stats.getInjectedEnergy())/1000000) + " kWh (=");
|
||||
sb.append(formatPercent.format((float)(stats.getProducedEnergy()-stats.getInjectedEnergy())/(float)stats.getProducedEnergy()*100) + " %)\n");
|
||||
sb.append("Bezogener Strom: ........................ " + formatEnergy.format((float)stats.getObtainedEnergy()/1000000) + " kWh\n");
|
||||
sb.append("Autakie: ................................ " + formatPercent.format((float)(stats.getProducedEnergy()-stats.getInjectedEnergy())/(float)(stats.getObtainedEnergy()+stats.getProducedEnergy()-stats.getInjectedEnergy())*100) + " %\n");
|
||||
sb.append("Eingespartes Geld: ...................... " + formatCurrency.format(((float)stats.getSavedMoney())/100) + "€\n");
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
|
||||
@ -1,5 +1,40 @@
|
||||
package info.peper.vz.rest.bo;
|
||||
|
||||
public class Statistics {
|
||||
private final long timestampStart;
|
||||
private final long timestampEnd;
|
||||
private final long producedEnergy;
|
||||
private final long injectedEnergy;
|
||||
private final long obtainedEnergy;
|
||||
private final long savedMoney;
|
||||
|
||||
public Statistics(long timestampStart, long timestampEnd, long producedEnergy, long injectedEnergy,
|
||||
long obtainedEnergy, long savedMoney) {
|
||||
super();
|
||||
this.timestampStart = timestampStart;
|
||||
this.timestampEnd = timestampEnd;
|
||||
this.producedEnergy = producedEnergy;
|
||||
this.injectedEnergy = injectedEnergy;
|
||||
this.obtainedEnergy = obtainedEnergy;
|
||||
this.savedMoney = savedMoney;
|
||||
}
|
||||
public long getTimestampStart() {
|
||||
return timestampStart;
|
||||
}
|
||||
public long getTimestampEnd() {
|
||||
return timestampEnd;
|
||||
}
|
||||
public long getProducedEnergy() {
|
||||
return producedEnergy;
|
||||
}
|
||||
public long getInjectedEnergy() {
|
||||
return injectedEnergy;
|
||||
}
|
||||
public long getObtainedEnergy() {
|
||||
return obtainedEnergy;
|
||||
}
|
||||
public long getSavedMoney() {
|
||||
return savedMoney;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user