Standardize and refactor master data infrastructure: rename tables for plural consistency, remove unused entity tables, improve ZNS import mappings with enriched license properties, introduce Altersklasse domain model, activate Consul service discovery, and update application configuration accordingly.
This commit is contained in:
+15
-2
@@ -4,6 +4,8 @@ package at.mocode.zns.importer
|
||||
|
||||
import at.mocode.masterdata.domain.repository.VereinRepository
|
||||
import at.mocode.masterdata.domain.repository.HorseRepository
|
||||
import at.mocode.masterdata.domain.repository.AltersklassenRepository
|
||||
import at.mocode.masterdata.domain.repository.MasterdataLicenseRepository
|
||||
import at.mocode.masterdata.domain.repository.FunktionaerRepository
|
||||
import at.mocode.masterdata.domain.repository.ReiterRepository
|
||||
import at.mocode.masterdata.domain.repository.LandRepository
|
||||
@@ -44,7 +46,9 @@ class ZnsImportService(
|
||||
private val horseRepository: HorseRepository,
|
||||
private val funktionaerRepository: FunktionaerRepository,
|
||||
private val landRepository: LandRepository,
|
||||
private val bundeslandRepository: BundeslandRepository
|
||||
private val bundeslandRepository: BundeslandRepository,
|
||||
private val licenseRepository: MasterdataLicenseRepository? = null,
|
||||
private val altersklassenRepository: AltersklassenRepository? = null
|
||||
) {
|
||||
|
||||
companion object {
|
||||
@@ -176,11 +180,17 @@ class ZnsImportService(
|
||||
val verein = parsed.vereinsName?.let { vereinRepository.findByExactName(it) }
|
||||
val bundesland = parsed.bundeslandNummer?.let { bundeslandRepository.findByNr(it) }
|
||||
val nation = parsed.nation?.let { landRepository.findByIsoAlpha3Code(it) }
|
||||
val reitLizenz = parsed.reiterLizenz?.let { licenseRepository?.findReitLizenzByCode(it) }
|
||||
val fahrLizenz = parsed.fahrLizenz?.let { licenseRepository?.findFahrLizenzByCode(it) }
|
||||
val startkarte = parsed.startkarte?.let { licenseRepository?.findStartkarteByCode(it) }
|
||||
|
||||
val reiter = parsed.copy(
|
||||
vereinId = verein?.vereinId,
|
||||
bundeslandId = bundesland?.bundeslandId,
|
||||
nationId = nation?.landId
|
||||
nationId = nation?.landId,
|
||||
reitLizenzId = reitLizenz?.lizenzId,
|
||||
fahrLizenzId = fahrLizenz?.lizenzId,
|
||||
startkarteId = startkarte?.startkarteId
|
||||
)
|
||||
|
||||
val vorhanden = reiterRepository.findBySatznummer(reiter.satznummer)
|
||||
@@ -198,6 +208,9 @@ class ZnsImportService(
|
||||
vereinId = reiter.vereinId,
|
||||
bundeslandId = reiter.bundeslandId,
|
||||
nationId = reiter.nationId,
|
||||
reitLizenzId = reiter.reitLizenzId,
|
||||
fahrLizenzId = reiter.fahrLizenzId,
|
||||
startkarteId = reiter.startkarteId,
|
||||
reiterLizenz = reiter.reiterLizenz,
|
||||
startkarte = reiter.startkarte,
|
||||
fahrLizenz = reiter.fahrLizenz,
|
||||
|
||||
+22
-7
@@ -88,12 +88,20 @@ class ZnsImportServiceTest {
|
||||
nachname: String = "Mustermann",
|
||||
vorname: String = "Max"
|
||||
): String {
|
||||
// Stelle 1-6: Satznummer, 7-56: Nachname (50), 57-81: Vorname (25)
|
||||
return satznummer.padEnd(6) +
|
||||
nachname.padEnd(50) +
|
||||
vorname.padEnd(25) +
|
||||
"01" + // 82-83 Bundesland
|
||||
" ".repeat(250) // Rest auffüllen
|
||||
val line = StringBuilder()
|
||||
line.append(satznummer.padEnd(6)) // 1-6
|
||||
line.append(nachname.padEnd(50)) // 7-56
|
||||
line.append(vorname.padEnd(25)) // 57-81
|
||||
line.append("01") // 82-83 (Buli)
|
||||
line.append("".padEnd(50)) // 84-133 (Verein)
|
||||
line.append("AUT") // 134-136 (Nation)
|
||||
line.append("R2 ") // 137-140 (Lizenz)
|
||||
line.append(" ") // 141 (Startkarte)
|
||||
line.append(" ") // 142-143 (Fahrlizenz)
|
||||
line.append("JG") // 144-145 (Altersklasse)
|
||||
line.append(" ") // 146 (Altersklasse Y)
|
||||
line.append("01234567") // 147-154 (Mitglied) - Bundesland 01 (Wien) + Rest
|
||||
return line.toString().padEnd(220)
|
||||
}
|
||||
|
||||
/** Erzeugt eine gültige PFERDE01.DAT-Zeile (mind. 211 Zeichen). */
|
||||
@@ -169,7 +177,14 @@ class ZnsImportServiceTest {
|
||||
assertThat(result.reiterImportiert).isEqualTo(1)
|
||||
assertThat(result.reiterAktualisiert).isEqualTo(0)
|
||||
assertThat(result.fehler).isEmpty()
|
||||
coVerify(exactly = 1) { reiterRepository.save(any<Reiter>()) }
|
||||
coVerify(exactly = 1) {
|
||||
reiterRepository.save(match {
|
||||
it.reiterLizenz == "R2" &&
|
||||
it.lizenzen.size == 1 &&
|
||||
it.lizenzen[0].kuerzel == "R2" &&
|
||||
it.altersklasseJgJrU25 == at.mocode.core.domain.model.ReiterAltersKlasseE.JG
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user