Skip to content

Commit 42cd186

Browse files
authored
DVE-699 (#372)
* always update letztePlausibleMessung save highest Fahrzeugklasse instead of last one * Anmerkung umgesetzt
1 parent 376f2d2 commit 42cd186

File tree

3 files changed

+45
-7
lines changed

3 files changed

+45
-7
lines changed

src/main/java/de/muenchen/dave/domain/mapper/detektor/MessstelleReceiverMapper.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import de.muenchen.dave.domain.elasticsearch.detektor.Messfaehigkeit;
66
import de.muenchen.dave.domain.elasticsearch.detektor.Messquerschnitt;
77
import de.muenchen.dave.domain.elasticsearch.detektor.Messstelle;
8+
import de.muenchen.dave.domain.enums.Fahrzeugklasse;
89
import de.muenchen.dave.domain.enums.ZaehldatenIntervall;
910
import de.muenchen.dave.domain.mapper.FahrzeugklassenMapper;
1011
import de.muenchen.dave.domain.mapper.StadtbezirkMapper;
@@ -17,6 +18,7 @@
1718
import java.util.List;
1819
import java.util.Set;
1920
import java.util.UUID;
21+
import java.util.stream.Collectors;
2022
import org.apache.commons.collections4.CollectionUtils;
2123
import org.apache.commons.lang3.ObjectUtils;
2224
import org.apache.commons.lang3.StringUtils;
@@ -45,7 +47,7 @@ public interface MessstelleReceiverMapper {
4547
List<Messfaehigkeit> createMessfaehigkeit(List<MessfaehigkeitDto> dto);
4648

4749
@AfterMapping
48-
default void createMessstelleAfterMapping(@MappingTarget Messstelle bean, MessstelleDto dto, @Context StadtbezirkMapper stadtbezirkMapper) {
50+
default void dto2EntityAfterMapping(@MappingTarget Messstelle bean, MessstelleDto dto, @Context StadtbezirkMapper stadtbezirkMapper) {
4951
if (StringUtils.isEmpty(bean.getId())) {
5052
bean.setId(UUID.randomUUID().toString());
5153
}
@@ -54,6 +56,18 @@ default void createMessstelleAfterMapping(@MappingTarget Messstelle bean, Messst
5456
bean.setPunkt(new GeoPoint(dto.getLatitude(), dto.getLongitude()));
5557
}
5658

59+
final Set<Fahrzeugklasse> distinctFahrzeugklassenOfMessfaehigkeiten = bean.getMessfaehigkeiten().stream().map(Messfaehigkeit::getFahrzeugklasse)
60+
.collect(Collectors.toSet());
61+
if (distinctFahrzeugklassenOfMessfaehigkeiten.contains(Fahrzeugklasse.ACHT_PLUS_EINS)) {
62+
bean.setFahrzeugklasse(Fahrzeugklasse.ACHT_PLUS_EINS);
63+
} else if (distinctFahrzeugklassenOfMessfaehigkeiten.contains(Fahrzeugklasse.ZWEI_PLUS_EINS)) {
64+
bean.setFahrzeugklasse(Fahrzeugklasse.ZWEI_PLUS_EINS);
65+
} else if (distinctFahrzeugklassenOfMessfaehigkeiten.contains(Fahrzeugklasse.SUMME_KFZ)) {
66+
bean.setFahrzeugklasse(Fahrzeugklasse.SUMME_KFZ);
67+
} else if (distinctFahrzeugklassenOfMessfaehigkeiten.contains(Fahrzeugklasse.RAD)) {
68+
bean.setFahrzeugklasse(Fahrzeugklasse.RAD);
69+
}
70+
5771
// Suchworte setzen
5872
final Set<String> generatedSuchwoerter = SuchwortUtil.generateSuchworteOfMessstelle(bean, stadtbezirkMapper);
5973

@@ -91,6 +105,7 @@ default void createMessquerschnittAfterMapping(@MappingTarget Messquerschnitt be
91105
@Mapping(target = "messquerschnitte", ignore = true)
92106
@Mapping(target = "lageplanVorhanden", ignore = true)
93107
@Mapping(target = "datumLetztePlausibleMessung", ignore = true)
108+
@Mapping(target = "fahrzeugklasse", ignore = true)
94109
Messstelle updateMessstelle(@MappingTarget Messstelle existing, MessstelleDto dto, @Context StadtbezirkMapper stadtbezirkMapper);
95110

96111
@Mapping(target = "id", ignore = true)

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

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import net.javacrumbs.shedlock.core.LockAssert;
2222
import net.javacrumbs.shedlock.spring.annotation.SchedulerLock;
2323
import org.apache.commons.collections4.CollectionUtils;
24-
import org.apache.commons.lang3.ObjectUtils;
2524
import org.springframework.context.annotation.Profile;
2625
import org.springframework.scheduling.annotation.Scheduled;
2726
import org.springframework.stereotype.Service;
@@ -124,10 +123,8 @@ protected void updateMessstelle(final Messstelle existingMessstelle, final Messs
124123
final var updatedMessquerschnitte = updateMessquerschnitteOfMessstelle(toSave.getMessquerschnitte(), dto.getMessquerschnitte());
125124
toSave.setMessquerschnitte(updatedMessquerschnitte);
126125
customSuggestIndexService.updateSuggestionsForMessstelle(toSave);
127-
if (ObjectUtils.isEmpty(dto.getDatumLetztePlausibleMessung())) {
128-
unauffaelligeTageService.findFirstByMstIdOrderByKalendertagDatumDesc(toSave.getMstId())
129-
.ifPresent(unauffaelligerTag -> toSave.setDatumLetztePlausibleMessung(unauffaelligerTag.getKalendertag().getDatum()));
130-
}
126+
unauffaelligeTageService.findFirstByMstIdOrderByKalendertagDatumDesc(toSave.getMstId())
127+
.ifPresent(unauffaelligerTag -> toSave.setDatumLetztePlausibleMessung(unauffaelligerTag.getKalendertag().getDatum()));
131128
final Messstelle updated = messstelleIndexService.saveMessstelle(toSave);
132129
final var statusMessstelleNeu = updated.getStatus();
133130
if (statusMessstelleAlt != statusMessstelleNeu) {

src/test/java/de/muenchen/dave/domain/mapper/MessstelleReceiverMapperTests.java

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66
import com.google.common.base.Splitter;
77
import de.muenchen.dave.domain.elasticsearch.MessquerschnittRandomFactory;
88
import de.muenchen.dave.domain.elasticsearch.MessstelleRandomFactory;
9+
import de.muenchen.dave.domain.elasticsearch.detektor.Messfaehigkeit;
910
import de.muenchen.dave.domain.elasticsearch.detektor.Messquerschnitt;
1011
import de.muenchen.dave.domain.elasticsearch.detektor.Messstelle;
12+
import de.muenchen.dave.domain.enums.Fahrzeugklasse;
1113
import de.muenchen.dave.domain.enums.MessstelleStatus;
1214
import de.muenchen.dave.domain.mapper.detektor.MessstelleReceiverMapper;
1315
import de.muenchen.dave.domain.mapper.detektor.MessstelleReceiverMapperImpl;
@@ -16,6 +18,7 @@
1618
import java.util.ArrayList;
1719
import java.util.HashSet;
1820
import java.util.Set;
21+
import java.util.stream.Collectors;
1922
import lombok.extern.slf4j.Slf4j;
2023
import org.apache.commons.collections4.CollectionUtils;
2124
import org.apache.commons.lang3.reflect.FieldUtils;
@@ -70,6 +73,18 @@ void testCreateMessstelle() {
7073
expected.setMessquerschnitte(mapper.createMessquerschnitte(dto.getMessquerschnitte()));
7174
expected.setMessfaehigkeiten(mapper.createMessfaehigkeit(dto.getMessfaehigkeiten()));
7275

76+
final Set<Fahrzeugklasse> distinctFahrzeugklassenOfMessfaehigkeiten = expected.getMessfaehigkeiten().stream().map(Messfaehigkeit::getFahrzeugklasse)
77+
.collect(Collectors.toSet());
78+
if (distinctFahrzeugklassenOfMessfaehigkeiten.contains(Fahrzeugklasse.ACHT_PLUS_EINS)) {
79+
expected.setFahrzeugklasse(Fahrzeugklasse.ACHT_PLUS_EINS);
80+
} else if (distinctFahrzeugklassenOfMessfaehigkeiten.contains(Fahrzeugklasse.ZWEI_PLUS_EINS)) {
81+
expected.setFahrzeugklasse(Fahrzeugklasse.ZWEI_PLUS_EINS);
82+
} else if (distinctFahrzeugklassenOfMessfaehigkeiten.contains(Fahrzeugklasse.SUMME_KFZ)) {
83+
expected.setFahrzeugklasse(Fahrzeugklasse.SUMME_KFZ);
84+
} else if (distinctFahrzeugklassenOfMessfaehigkeiten.contains(Fahrzeugklasse.RAD)) {
85+
expected.setFahrzeugklasse(Fahrzeugklasse.RAD);
86+
}
87+
7388
final Messstelle messstelle = this.mapper.createMessstelle(dto, stadtbezirkMapper);
7489
Assertions.assertThat(messstelle)
7590
.isNotNull()
@@ -124,7 +139,6 @@ void testUpdateMessstelle() {
124139
expected.setRealisierungsdatum(updatedData.getRealisierungsdatum());
125140
expected.setAbbaudatum(updatedData.getAbbaudatum());
126141
expected.setHersteller(updatedData.getHersteller());
127-
expected.setFahrzeugklasse(new FahrzeugklassenMapperImpl().map(updatedData.getFahrzeugklasse()));
128142
expected.setDetektierteVerkehrsarten(updatedData.getDetektierteVerkehrsarten());
129143
expected.setSuchwoerter(new ArrayList<>());
130144
expected.getSuchwoerter().addAll(bean.getCustomSuchwoerter());
@@ -150,6 +164,18 @@ void testUpdateMessstelle() {
150164
expected.setMessquerschnitte(bean.getMessquerschnitte());
151165
expected.setDatumLetztePlausibleMessung(bean.getDatumLetztePlausibleMessung());
152166

167+
final Set<Fahrzeugklasse> distinctFahrzeugklassenOfMessfaehigkeiten = expected.getMessfaehigkeiten().stream().map(Messfaehigkeit::getFahrzeugklasse)
168+
.collect(Collectors.toSet());
169+
if (distinctFahrzeugklassenOfMessfaehigkeiten.contains(Fahrzeugklasse.ACHT_PLUS_EINS)) {
170+
expected.setFahrzeugklasse(Fahrzeugklasse.ACHT_PLUS_EINS);
171+
} else if (distinctFahrzeugklassenOfMessfaehigkeiten.contains(Fahrzeugklasse.ZWEI_PLUS_EINS)) {
172+
expected.setFahrzeugklasse(Fahrzeugklasse.ZWEI_PLUS_EINS);
173+
} else if (distinctFahrzeugklassenOfMessfaehigkeiten.contains(Fahrzeugklasse.SUMME_KFZ)) {
174+
expected.setFahrzeugklasse(Fahrzeugklasse.SUMME_KFZ);
175+
} else if (distinctFahrzeugklassenOfMessfaehigkeiten.contains(Fahrzeugklasse.RAD)) {
176+
expected.setFahrzeugklasse(Fahrzeugklasse.RAD);
177+
}
178+
153179
final StadtbezirkMapper stadtbezirkMapper = Mockito.mock(StadtbezirkMapper.class);
154180
when(stadtbezirkMapper.bezeichnungOf(any())).thenReturn("Schwabing-West");
155181
final Messstelle actual = this.mapper.updateMessstelle(bean, updatedData, stadtbezirkMapper);

0 commit comments

Comments
 (0)