removed: Consumption: beginValue, endValue, previous
This commit is contained in:
parent
ac4b1283df
commit
9bf3323346
@ -2,12 +2,10 @@ package de.ph87.data.series.period.consumption;
|
|||||||
|
|
||||||
import de.ph87.data.series.period.Period;
|
import de.ph87.data.series.period.Period;
|
||||||
import de.ph87.data.series.period.consumption.unit.Unit;
|
import de.ph87.data.series.period.consumption.unit.Unit;
|
||||||
import jakarta.annotation.Nullable;
|
|
||||||
import jakarta.persistence.*;
|
import jakarta.persistence.*;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.time.Duration;
|
|
||||||
import java.time.ZonedDateTime;
|
import java.time.ZonedDateTime;
|
||||||
|
|
||||||
import static de.ph87.data.series.period.consumption.slice.SliceService.DL;
|
import static de.ph87.data.series.period.consumption.slice.SliceService.DL;
|
||||||
@ -61,33 +59,12 @@ public class Consumption {
|
|||||||
@Column(nullable = false)
|
@Column(nullable = false)
|
||||||
private double lastValue;
|
private double lastValue;
|
||||||
|
|
||||||
@Column
|
public Consumption(@NonNull final Period period, @NonNull final Unit unit, @NonNull final ZonedDateTime aligned, @NonNull final ZonedDateTime date, final double value) {
|
||||||
@Nullable
|
|
||||||
private Double beginValue;
|
|
||||||
|
|
||||||
@Column
|
|
||||||
@Nullable
|
|
||||||
private Double endValue;
|
|
||||||
|
|
||||||
public Consumption(@NonNull final Period period, @NonNull final Unit unit, @NonNull final ZonedDateTime aligned, @NonNull final ZonedDateTime date, final double value, @Nullable final Consumption previous) {
|
|
||||||
this.id = new Id(period, unit, aligned);
|
this.id = new Id(period, unit, aligned);
|
||||||
this.firstDate = date;
|
this.firstDate = date;
|
||||||
this.firstValue = value;
|
this.firstValue = value;
|
||||||
this.lastDate = date;
|
this.lastDate = date;
|
||||||
this.lastValue = value;
|
this.lastValue = value;
|
||||||
if (previous != null) {
|
|
||||||
final double totalDelta = this.firstValue - previous.getLastValue();
|
|
||||||
final long totalMillis = Duration.between(previous.getLastDate(), this.firstDate).toMillis();
|
|
||||||
final double deltaPerMilli = totalDelta / totalMillis;
|
|
||||||
|
|
||||||
final long deltaBeginMillis = Duration.between(this.id.aligned, this.firstDate).toMillis();
|
|
||||||
final double deltaBeginValue = deltaPerMilli * deltaBeginMillis;
|
|
||||||
this.beginValue = this.firstValue - deltaBeginValue;
|
|
||||||
|
|
||||||
final long deltaEndMillis = Duration.between(this.id.aligned, this.firstDate).toMillis();
|
|
||||||
final double deltaEndValue = deltaPerMilli * deltaEndMillis;
|
|
||||||
previous.endValue = previous.lastValue + deltaEndValue;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
|
|||||||
@ -14,8 +14,6 @@ public interface ConsumptionRepository extends CrudRepository<Consumption, Consu
|
|||||||
|
|
||||||
Optional<Consumption> findByIdPeriodAndIdUnitAndIdAligned(@NonNull Period period, @NonNull Unit unit, @NonNull ZonedDateTime aligned);
|
Optional<Consumption> findByIdPeriodAndIdUnitAndIdAligned(@NonNull Period period, @NonNull Unit unit, @NonNull ZonedDateTime aligned);
|
||||||
|
|
||||||
Optional<Consumption> findFirstByIdPeriodAndIdUnitAndIdAlignedBeforeOrderByIdAlignedDesc(@NonNull Period period, @NonNull Unit unit, @NonNull ZonedDateTime aligned);
|
|
||||||
|
|
||||||
Optional<Consumption> findFirstByIdPeriodAndIdUnitAndIdAlignedLessThanOrderByIdAlignedDesc(@NonNull Period period, @NonNull Unit unit, @NonNull ZonedDateTime begin);
|
Optional<Consumption> findFirstByIdPeriodAndIdUnitAndIdAlignedLessThanOrderByIdAlignedDesc(@NonNull Period period, @NonNull Unit unit, @NonNull ZonedDateTime begin);
|
||||||
|
|
||||||
Optional<Consumption> findFirstByIdPeriodAndIdUnitAndIdAlignedGreaterThanOrderByIdAlignedAsc(@NonNull Period period, @NonNull Unit unit, @NonNull ZonedDateTime begin);
|
Optional<Consumption> findFirstByIdPeriodAndIdUnitAndIdAlignedGreaterThanOrderByIdAlignedAsc(@NonNull Period period, @NonNull Unit unit, @NonNull ZonedDateTime begin);
|
||||||
|
|||||||
@ -30,9 +30,8 @@ public class ConsumptionService {
|
|||||||
existing.setLastValue(event.getValue());
|
existing.setLastValue(event.getValue());
|
||||||
log.debug("Existing Consumption updated: {}", existing);
|
log.debug("Existing Consumption updated: {}", existing);
|
||||||
} else {
|
} else {
|
||||||
final Consumption previous = consumptionRepository.findFirstByIdPeriodAndIdUnitAndIdAlignedBeforeOrderByIdAlignedDesc(period, unit, aligned).orElse(null);
|
final Consumption created = consumptionRepository.save(new Consumption(period, unit, aligned, event.getDate(), event.getValue()));
|
||||||
final Consumption created = consumptionRepository.save(new Consumption(period, unit, aligned, event.getDate(), event.getValue(), previous));
|
log.debug("New Consumption created: created={}", created);
|
||||||
log.debug("New Consumption created: created={}, previous={}", created, previous);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user