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:
2026-04-06 19:48:15 +02:00
parent bc13a58a14
commit abaaeddaaf
53 changed files with 1575 additions and 333 deletions
@@ -26,20 +26,20 @@ object ZnsReiterParser {
val bundeslandNummer = reader.getIntOrNull(82, 2)
val vereinsName = reader.getString(84, 50)
val nation = reader.getString(134, 3)
val reiterLizenz = reader.getString(137, 4)
// Ab Stelle 137 weicht die Realität der ZNS.zip von der Spec 2.4 ab
// Die Realität (Aichinger Ewald) zeigt:
// 134-136: AUT
// 137-140: R2
// 147-158: 206607000676 (Mitgliedsnummer 8 Stellen ab 147?)
// 160-166: 4825910 (Telefonnummer?)
// 177-180: 2023 (LastPayYear)
// 181: M (Geschlecht)
// 182-189: 19571010 (Geburtsdatum)
val startkarte = reader.getString(141, 1)
val fahrLizenz = reader.getString(142, 2)
val reiterLizenzCode = reader.getString(137, 4).trim()
val startkarteCode = reader.getString(141, 1).trim()
val fahrLizenzCode = reader.getString(142, 2).trim()
val altersklasseJgJrU25 = reader.getString(144, 2)
val altersklasseY = reader.getString(146, 1)
val altersklasseEnum = when (altersklasseJgJrU25.uppercase()) {
"JG" -> at.mocode.core.domain.model.ReiterAltersKlasseE.JG
"JR" -> at.mocode.core.domain.model.ReiterAltersKlasseE.JR
"25" -> at.mocode.core.domain.model.ReiterAltersKlasseE.U25
else -> null
}
val altersklasseYEnum = if (altersklasseY.uppercase() == "Y") at.mocode.core.domain.model.ReiterAltersKlasseE.Y else null
val mitgliedsNummerStr = reader.getString(147, 8)
val mitgliedsNummer = mitgliedsNummerStr.toIntOrNull()
val telefonNummer = reader.getString(155, 22).trim()
@@ -50,7 +50,18 @@ object ZnsReiterParser {
val feiId = reader.getString(190, 8)
val sperrListe = reader.getString(198, 1)
val lizenzInfo = reader.getString(201, 10)
val lizenzKlasse = mapLizenz(reiterLizenz)
val lizenzKlasse = mapLizenz(reiterLizenzCode)
val lizenzen = mutableListOf<at.mocode.masterdata.domain.model.ReiterLizenz>()
if (reiterLizenzCode.isNotBlank()) {
lizenzen.add(at.mocode.masterdata.domain.model.ReiterLizenz(lizenzTyp = "REITERLIZENZ", kuerzel = reiterLizenzCode))
}
if (startkarteCode.isNotBlank()) {
lizenzen.add(at.mocode.masterdata.domain.model.ReiterLizenz(lizenzTyp = "STARTKARTE", kuerzel = startkarteCode))
}
if (fahrLizenzCode.isNotBlank()) {
lizenzen.add(at.mocode.masterdata.domain.model.ReiterLizenz(lizenzTyp = "FAHRLIZENZ", kuerzel = fahrLizenzCode))
}
return Reiter(
personId = Uuid.random(),
@@ -60,11 +71,11 @@ object ZnsReiterParser {
bundeslandNummer = bundeslandNummer,
vereinsName = vereinsName.ifBlank { null },
nation = nation.ifBlank { null },
reiterLizenz = reiterLizenz.ifBlank { null },
startkarte = startkarte.ifBlank { null },
fahrLizenz = fahrLizenz.ifBlank { null },
altersklasseJgJrU25 = altersklasseJgJrU25.ifBlank { null },
altersklasseY = altersklasseY.ifBlank { null },
reiterLizenz = reiterLizenzCode.ifBlank { null },
startkarte = startkarteCode.ifBlank { null },
fahrLizenz = fahrLizenzCode.ifBlank { null },
altersklasseJgJrU25 = altersklasseEnum,
altersklasseY = altersklasseYEnum,
mitgliedsNummer = mitgliedsNummer,
telefonNummer = telefonNummer.ifBlank { null },
kader = kader.ifBlank { null },
@@ -75,7 +86,8 @@ object ZnsReiterParser {
sperrListe = sperrListe.ifBlank { null },
lizenzInfo = lizenzInfo.ifBlank { null },
lizenzKlasse = lizenzKlasse,
datenQuelle = DatenQuelleE.IMPORT_ZNS
datenQuelle = DatenQuelleE.IMPORT_ZNS,
lizenzen = lizenzen
)
}