Link Funktionaer to Reiter via reiter_id, implement findByName in ReiterRepository, optimize ZNS import for functionary-reiter matching, remove redundant fields from FunktionaerTable, and add database migration V011.

This commit is contained in:
2026-04-06 14:21:04 +02:00
parent 9237882437
commit 3cab4c4f47
9 changed files with 66 additions and 28 deletions
@@ -259,7 +259,18 @@ class ZnsImportService(
var aktualisiert = 0
zeilen.forEachIndexed { index, zeile ->
runCatching {
val funktionaer = ZnsFunktionaerParser.parse(zeile) ?: return@forEachIndexed
val funktionaerRaw = ZnsFunktionaerParser.parse(zeile) ?: return@forEachIndexed
// Versuch, den Reiter anhand des Namens (Nachname, Vorname) zu finden
val nameParts = funktionaerRaw.name?.split(",")?.map { it.trim() }
val reiterId = if (nameParts != null && nameParts.size >= 2) {
val nachname = nameParts[0]
val vorname = nameParts[1]
reiterRepository.findByName(vorname, nachname).firstOrNull()?.reiterId
} else null
val funktionaer = funktionaerRaw.copy(reiterId = reiterId)
val satzID = funktionaer.satzId
val satzNummer = funktionaer.satzNummer
val vorhanden = funktionaerRepository.findBySatz(satzID, satzNummer)
@@ -269,6 +280,7 @@ class ZnsImportService(
} else {
funktionaerRepository.save(
vorhanden.copy(
reiterId = funktionaer.reiterId,
name = funktionaer.name,
qualifikationen = funktionaer.qualifikationen,
istAktiv = funktionaer.istAktiv,