Skip to content

Commit 612c04a

Browse files
committed
hotfix to extract relevant kalendertage of zeitraum
1 parent a7531b2 commit 612c04a

File tree

5 files changed

+64
-54
lines changed

5 files changed

+64
-54
lines changed

src/main/java/de/muenchen/dave/services/messstelle/MessstelleService.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,12 +118,17 @@ public void updateLetztePlausibleMessungOfMessstelle(final String mstId, final L
118118
}
119119

120120
/**
121+
* Die Methode extrahiert die Messfähigkeiten der Messstelle für den angegebenen Zeitraum gegeben in
122+
* den Parametern.
121123
*
124+
* Extrahierte Messfähigkeiten welche sich mit dem Anfangs- und Enddatum des Zeitraums überschneiden
125+
* beginnen,
126+
* beginnen oder enden mit dem Start- oder Enddatum des in den Parametern gegebenen Zeitraums.
122127
*
123128
* @param mstId
124129
* @param startDateZeitraum
125130
* @param endDateZeitraum
126-
* @return
131+
* @return die extrahierten Messfähigkeiten.
127132
*/
128133
public List<ReadMessfaehigkeitDTO> getMessfaehigkeitenForZeitraumForMessstelle(
129134
final String mstId,

src/main/java/de/muenchen/dave/services/messstelle/ValidierungService.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -57,21 +57,19 @@ public boolean isZeitraumAndTagestypValid(final ValidateZeitraumAndTagestypForMe
5757

5858
public ValidationResult areZeitraeumeAndTagesTypForMessstelleValid(
5959
final String mstId,
60-
final List<List<LocalDate>> zeitraeume,
60+
final Zeitraum zeitraumAuswertung,
61+
final List<List<LocalDate>> zeitraeumeOfRelevantMessfaehigkeiten,
6162
final TagesTyp tagesTyp) {
6263
final var tagestypen = TagesTyp.getIncludedTagestypen(tagesTyp);
6364
final var validationResult = new ValidationResult();
6465

65-
final long numberOfRelevantKalendertage = zeitraeume
66-
.stream()
67-
.map(zeitraum -> kalendertagService.countAllKalendertageByDatumAndTagestypen(
68-
zeitraum.getFirst(),
69-
zeitraum.getLast(),
70-
tagestypen))
71-
.reduce(0L, ArithmeticUtils::addAndCheck);
66+
final long numberOfRelevantKalendertage = kalendertagService.countAllKalendertageByDatumAndTagestypen(
67+
zeitraumAuswertung.getStartDate(),
68+
zeitraumAuswertung.getEndDate(),
69+
tagestypen);
7270
validationResult.setNumberOfRelevantKalendertage(numberOfRelevantKalendertage);
7371

74-
final long numberOfUnauffaelligeTage = zeitraeume
72+
final long numberOfUnauffaelligeTage = zeitraeumeOfRelevantMessfaehigkeiten
7573
.stream()
7674
.map(zeitraum -> unauffaelligeTageService.countAllUnauffaelligetageByMstIdAndTimerangeAndTagestypen(
7775
mstId,

src/main/java/de/muenchen/dave/services/messstelle/auswertung/AuswertungService.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -154,11 +154,13 @@ protected List<AuswertungMessstelle> ladeAuswertungGroupedByMstId(final Messstel
154154

155155
if (Fahrzeugklasse.ACHT_PLUS_EINS.equals(fahrzeugklasseAccordingChoosenFahrzeugoptions)) {
156156
relevantMessfaehigkeiten = validierungService.getRelevantMessfaehigkeitenAccordingFahrzeugklasse(
157-
validateZeitraumAndTagesTypForMessstelle, fahrzeugklasseAccordingChoosenFahrzeugoptions);
157+
validateZeitraumAndTagesTypForMessstelle,
158+
fahrzeugklasseAccordingChoosenFahrzeugoptions);
158159

159160
final var zeitraumeOfRelevantMessfaehigkeiten = getZeitraeumeOfGivenMessfaehigkeiten(relevantMessfaehigkeiten);
160161
validationResult = validierungService.areZeitraeumeAndTagesTypForMessstelleValid(
161162
validateZeitraumAndTagesTypForMessstelle.getMstId(),
163+
validateZeitraumAndTagesTypForMessstelle.getZeitraum(),
162164
zeitraumeOfRelevantMessfaehigkeiten,
163165
validateZeitraumAndTagesTypForMessstelle.getTagesTyp());
164166
if (validationResult.isValid()) {
@@ -173,11 +175,13 @@ protected List<AuswertungMessstelle> ladeAuswertungGroupedByMstId(final Messstel
173175

174176
if (Fahrzeugklasse.ZWEI_PLUS_EINS.equals(fahrzeugklasseAccordingChoosenFahrzeugoptions)) {
175177
relevantMessfaehigkeiten = validierungService.getRelevantMessfaehigkeitenAccordingFahrzeugklasse(
176-
validateZeitraumAndTagesTypForMessstelle, fahrzeugklasseAccordingChoosenFahrzeugoptions);
178+
validateZeitraumAndTagesTypForMessstelle,
179+
fahrzeugklasseAccordingChoosenFahrzeugoptions);
177180

178181
final var zeitraumeOfRelevantMessfaehigkeiten = getZeitraeumeOfGivenMessfaehigkeiten(relevantMessfaehigkeiten);
179182
validationResult = validierungService.areZeitraeumeAndTagesTypForMessstelleValid(
180183
validateZeitraumAndTagesTypForMessstelle.getMstId(),
184+
validateZeitraumAndTagesTypForMessstelle.getZeitraum(),
181185
zeitraumeOfRelevantMessfaehigkeiten,
182186
validateZeitraumAndTagesTypForMessstelle.getTagesTyp());
183187
if (validationResult.isValid()) {
@@ -192,11 +196,13 @@ protected List<AuswertungMessstelle> ladeAuswertungGroupedByMstId(final Messstel
192196

193197
if (Fahrzeugklasse.SUMME_KFZ.equals(fahrzeugklasseAccordingChoosenFahrzeugoptions)) {
194198
relevantMessfaehigkeiten = validierungService.getRelevantMessfaehigkeitenAccordingFahrzeugklasse(
195-
validateZeitraumAndTagesTypForMessstelle, fahrzeugklasseAccordingChoosenFahrzeugoptions);
199+
validateZeitraumAndTagesTypForMessstelle,
200+
fahrzeugklasseAccordingChoosenFahrzeugoptions);
196201

197202
final var zeitraumeOfRelevantMessfaehigkeiten = getZeitraeumeOfGivenMessfaehigkeiten(relevantMessfaehigkeiten);
198203
validationResult = validierungService.areZeitraeumeAndTagesTypForMessstelleValid(
199204
validateZeitraumAndTagesTypForMessstelle.getMstId(),
205+
validateZeitraumAndTagesTypForMessstelle.getZeitraum(),
200206
zeitraumeOfRelevantMessfaehigkeiten,
201207
validateZeitraumAndTagesTypForMessstelle.getTagesTyp());
202208
if (validationResult.isValid()) {
@@ -212,11 +218,13 @@ protected List<AuswertungMessstelle> ladeAuswertungGroupedByMstId(final Messstel
212218
&& !Fahrzeugklasse.SUMME_KFZ.equals(fahrzeugklasseAccordingChoosenFahrzeugoptions)
213219
&& options.getFahrzeuge().isRadverkehr()) {
214220
relevantMessfaehigkeiten = validierungService.getRelevantMessfaehigkeitenAccordingFahrzeugklasse(
215-
validateZeitraumAndTagesTypForMessstelle, fahrzeugklasseAccordingChoosenFahrzeugoptions);
221+
validateZeitraumAndTagesTypForMessstelle,
222+
fahrzeugklasseAccordingChoosenFahrzeugoptions);
216223

217224
final var zeitraumeOfRelevantMessfaehigkeiten = getZeitraeumeOfGivenMessfaehigkeiten(relevantMessfaehigkeiten);
218225
validationResult = validierungService.areZeitraeumeAndTagesTypForMessstelleValid(
219226
validateZeitraumAndTagesTypForMessstelle.getMstId(),
227+
validateZeitraumAndTagesTypForMessstelle.getZeitraum(),
220228
zeitraumeOfRelevantMessfaehigkeiten,
221229
validateZeitraumAndTagesTypForMessstelle.getTagesTyp());
222230
if (validationResult.isValid()) {

src/test/java/de/muenchen/dave/services/messstelle/ValidierungServiceTest.java

Lines changed: 29 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,13 @@
77
import de.muenchen.dave.domain.dtos.messstelle.FahrzeugOptionsDTO;
88
import de.muenchen.dave.domain.dtos.messstelle.ReadMessfaehigkeitDTO;
99
import de.muenchen.dave.domain.dtos.messstelle.ValidateZeitraumAndTagestypForMessstelleDTO;
10+
import de.muenchen.dave.domain.enums.AuswertungsZeitraum;
1011
import de.muenchen.dave.domain.enums.Fahrzeugklasse;
1112
import de.muenchen.dave.domain.enums.TagesTyp;
1213
import de.muenchen.dave.domain.model.messstelle.ValidateZeitraumAndTagesTypForMessstelleModel;
1314
import de.muenchen.dave.services.KalendertagService;
1415
import java.time.LocalDate;
16+
import java.time.YearMonth;
1517
import java.util.ArrayList;
1618
import java.util.List;
1719
import lombok.extern.slf4j.Slf4j;
@@ -143,6 +145,10 @@ void isZeitraumAndTagestypValidLessThanTwoUnauffaelligeTageAndLessThenFiftyPerce
143145
@Test
144146
void areZeitraeumeAndTagesTypForMessstelleValidWithMoreThanTwoUnauffaelligeTageAndMoreThanFiftyPercentUnauffaelligeTage() {
145147
final var mstId = "1234";
148+
final var zeitraumAuswertung = new Zeitraum(
149+
YearMonth.of(2008, 1),
150+
YearMonth.of(2008, 3),
151+
AuswertungsZeitraum.QUARTAL_1);
146152
final var zeitraeume = List.of(
147153
List.of(LocalDate.of(2008, 1, 1), LocalDate.of(2008, 1, 31)),
148154
List.of(LocalDate.of(2008, 2, 1), LocalDate.of(2008, 2, 28)));
@@ -151,16 +157,9 @@ void areZeitraeumeAndTagesTypForMessstelleValidWithMoreThanTwoUnauffaelligeTageA
151157
Mockito.when(
152158
kalendertagService.countAllKalendertageByDatumAndTagestypen(
153159
LocalDate.of(2008, 1, 1),
154-
LocalDate.of(2008, 1, 31),
160+
LocalDate.of(2008, 3, 31),
155161
TagesTyp.getIncludedTagestypen(TagesTyp.WERKTAG_MO_FR)))
156-
.thenReturn(10L);
157-
158-
Mockito.when(
159-
kalendertagService.countAllKalendertageByDatumAndTagestypen(
160-
LocalDate.of(2008, 2, 1),
161-
LocalDate.of(2008, 2, 28),
162-
TagesTyp.getIncludedTagestypen(TagesTyp.WERKTAG_MO_FR)))
163-
.thenReturn(11L);
162+
.thenReturn(21L);
164163

165164
Mockito.when(unauffaelligeTageService.countAllUnauffaelligetageByMstIdAndTimerangeAndTagestypen(
166165
mstId,
@@ -174,7 +173,7 @@ void areZeitraeumeAndTagesTypForMessstelleValidWithMoreThanTwoUnauffaelligeTageA
174173
LocalDate.of(2008, 2, 28),
175174
TagesTyp.getIncludedTagestypen(TagesTyp.WERKTAG_MO_FR))).thenReturn(6L);
176175

177-
final var result = validierungService.areZeitraeumeAndTagesTypForMessstelleValid(mstId, zeitraeume, tagesTyp);
176+
final var result = validierungService.areZeitraeumeAndTagesTypForMessstelleValid(mstId, zeitraumAuswertung, zeitraeume, tagesTyp);
178177

179178
final var expected = new ValidierungService.ValidationResult();
180179
expected.setValid(true);
@@ -186,6 +185,10 @@ void areZeitraeumeAndTagesTypForMessstelleValidWithMoreThanTwoUnauffaelligeTageA
186185
@Test
187186
void areZeitraeumeAndTagesTypForMessstelleValidWithMoreThanTwoUnauffaelligeTageAndLessThenFiftyPercentUnauffaelligeTage() {
188187
final var mstId = "1234";
188+
final var zeitraumAuswertung = new Zeitraum(
189+
YearMonth.of(2008, 1),
190+
YearMonth.of(2008, 3),
191+
AuswertungsZeitraum.QUARTAL_1);
189192
final var zeitraeume = List.of(
190193
List.of(LocalDate.of(2008, 1, 1), LocalDate.of(2008, 1, 31)),
191194
List.of(LocalDate.of(2008, 2, 1), LocalDate.of(2008, 2, 28)));
@@ -194,16 +197,9 @@ void areZeitraeumeAndTagesTypForMessstelleValidWithMoreThanTwoUnauffaelligeTageA
194197
Mockito.when(
195198
kalendertagService.countAllKalendertageByDatumAndTagestypen(
196199
LocalDate.of(2008, 1, 1),
197-
LocalDate.of(2008, 1, 31),
198-
TagesTyp.getIncludedTagestypen(TagesTyp.WERKTAG_MO_FR)))
199-
.thenReturn(10L);
200-
201-
Mockito.when(
202-
kalendertagService.countAllKalendertageByDatumAndTagestypen(
203-
LocalDate.of(2008, 2, 1),
204-
LocalDate.of(2008, 2, 28),
200+
LocalDate.of(2008, 3, 31),
205201
TagesTyp.getIncludedTagestypen(TagesTyp.WERKTAG_MO_FR)))
206-
.thenReturn(11L);
202+
.thenReturn(21L);
207203

208204
Mockito.when(unauffaelligeTageService.countAllUnauffaelligetageByMstIdAndTimerangeAndTagestypen(
209205
mstId,
@@ -217,7 +213,7 @@ void areZeitraeumeAndTagesTypForMessstelleValidWithMoreThanTwoUnauffaelligeTageA
217213
LocalDate.of(2008, 2, 28),
218214
TagesTyp.getIncludedTagestypen(TagesTyp.WERKTAG_MO_FR))).thenReturn(5L);
219215

220-
final var result = validierungService.areZeitraeumeAndTagesTypForMessstelleValid(mstId, zeitraeume, tagesTyp);
216+
final var result = validierungService.areZeitraeumeAndTagesTypForMessstelleValid(mstId, zeitraumAuswertung, zeitraeume, tagesTyp);
221217

222218
final var expected = new ValidierungService.ValidationResult();
223219
expected.setValid(false);
@@ -229,6 +225,10 @@ void areZeitraeumeAndTagesTypForMessstelleValidWithMoreThanTwoUnauffaelligeTageA
229225
@Test
230226
void areZeitraeumeAndTagesTypForMessstelleValidWithLessThanTwoUnauffaelligeTageAndMoreThenFiftyPercentUnauffaelligeTage() {
231227
final var mstId = "1234";
228+
final var zeitraumAuswertung = new Zeitraum(
229+
YearMonth.of(2008, 1),
230+
YearMonth.of(2008, 3),
231+
AuswertungsZeitraum.QUARTAL_1);
232232
final var zeitraeume = List.of(
233233
List.of(LocalDate.of(2008, 1, 1), LocalDate.of(2008, 1, 31)),
234234
List.of(LocalDate.of(2008, 2, 1), LocalDate.of(2008, 2, 28)));
@@ -237,17 +237,10 @@ void areZeitraeumeAndTagesTypForMessstelleValidWithLessThanTwoUnauffaelligeTageA
237237
Mockito.when(
238238
kalendertagService.countAllKalendertageByDatumAndTagestypen(
239239
LocalDate.of(2008, 1, 1),
240-
LocalDate.of(2008, 1, 31),
240+
LocalDate.of(2008, 3, 31),
241241
TagesTyp.getIncludedTagestypen(TagesTyp.WERKTAG_MO_FR)))
242242
.thenReturn(1L);
243243

244-
Mockito.when(
245-
kalendertagService.countAllKalendertageByDatumAndTagestypen(
246-
LocalDate.of(2008, 2, 1),
247-
LocalDate.of(2008, 2, 28),
248-
TagesTyp.getIncludedTagestypen(TagesTyp.WERKTAG_MO_FR)))
249-
.thenReturn(0L);
250-
251244
Mockito.when(unauffaelligeTageService.countAllUnauffaelligetageByMstIdAndTimerangeAndTagestypen(
252245
mstId,
253246
LocalDate.of(2008, 1, 1),
@@ -260,7 +253,7 @@ void areZeitraeumeAndTagesTypForMessstelleValidWithLessThanTwoUnauffaelligeTageA
260253
LocalDate.of(2008, 2, 28),
261254
TagesTyp.getIncludedTagestypen(TagesTyp.WERKTAG_MO_FR))).thenReturn(0L);
262255

263-
final var result = validierungService.areZeitraeumeAndTagesTypForMessstelleValid(mstId, zeitraeume, tagesTyp);
256+
final var result = validierungService.areZeitraeumeAndTagesTypForMessstelleValid(mstId, zeitraumAuswertung, zeitraeume, tagesTyp);
264257

265258
final var expected = new ValidierungService.ValidationResult();
266259
expected.setValid(false);
@@ -272,6 +265,10 @@ void areZeitraeumeAndTagesTypForMessstelleValidWithLessThanTwoUnauffaelligeTageA
272265
@Test
273266
void areZeitraeumeAndTagesTypForMessstelleValidWithLessThanTwoUnauffaelligeTageAndLessThenFiftyPercentUnauffaelligeTage() {
274267
final var mstId = "1234";
268+
final var zeitraumAuswertung = new Zeitraum(
269+
YearMonth.of(2008, 1),
270+
YearMonth.of(2008, 3),
271+
AuswertungsZeitraum.QUARTAL_1);
275272
final var zeitraeume = List.of(
276273
List.of(LocalDate.of(2008, 1, 1), LocalDate.of(2008, 1, 31)),
277274
List.of(LocalDate.of(2008, 2, 1), LocalDate.of(2008, 2, 28)));
@@ -280,16 +277,9 @@ void areZeitraeumeAndTagesTypForMessstelleValidWithLessThanTwoUnauffaelligeTageA
280277
Mockito.when(
281278
kalendertagService.countAllKalendertageByDatumAndTagestypen(
282279
LocalDate.of(2008, 1, 1),
283-
LocalDate.of(2008, 1, 31),
284-
TagesTyp.getIncludedTagestypen(TagesTyp.WERKTAG_MO_FR)))
285-
.thenReturn(1L);
286-
287-
Mockito.when(
288-
kalendertagService.countAllKalendertageByDatumAndTagestypen(
289-
LocalDate.of(2008, 2, 1),
290-
LocalDate.of(2008, 2, 28),
280+
LocalDate.of(2008, 3, 31),
291281
TagesTyp.getIncludedTagestypen(TagesTyp.WERKTAG_MO_FR)))
292-
.thenReturn(2L);
282+
.thenReturn(3L);
293283

294284
Mockito.when(unauffaelligeTageService.countAllUnauffaelligetageByMstIdAndTimerangeAndTagestypen(
295285
mstId,
@@ -303,7 +293,7 @@ void areZeitraeumeAndTagesTypForMessstelleValidWithLessThanTwoUnauffaelligeTageA
303293
LocalDate.of(2008, 2, 28),
304294
TagesTyp.getIncludedTagestypen(TagesTyp.WERKTAG_MO_FR))).thenReturn(0L);
305295

306-
final var result = validierungService.areZeitraeumeAndTagesTypForMessstelleValid(mstId, zeitraeume, tagesTyp);
296+
final var result = validierungService.areZeitraeumeAndTagesTypForMessstelleValid(mstId, zeitraumAuswertung, zeitraeume, tagesTyp);
307297

308298
final var expected = new ValidierungService.ValidationResult();
309299
expected.setValid(false);

0 commit comments

Comments
 (0)