feat(veranstaltung): Wizard für neue Veranstaltung implementiert und ZNS-Light-Integration hinzugefügt

Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
This commit is contained in:
2026-04-16 13:26:39 +02:00
parent 10f9e82718
commit cb4f2f855c
11 changed files with 318 additions and 121 deletions
@@ -3,6 +3,7 @@ package at.mocode.zns.import.service.api
import at.mocode.zns.import.service.job.ImportJob
import at.mocode.zns.import.service.job.ImportJobRegistry
import at.mocode.zns.import.service.job.ZnsImportOrchestrator
import at.mocode.zns.importer.ZnsImportMode
import org.springframework.http.HttpStatus
import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.*
@@ -23,9 +24,12 @@ class ZnsImportController(
* Rückgabe: 202 Accepted mit JobId.
*/
@PostMapping(consumes = ["multipart/form-data"])
fun starteImport(@RequestParam("file") file: MultipartFile): ResponseEntity<ImportStartResponse> {
fun starteImport(
@RequestParam("file") file: MultipartFile,
@RequestParam("mode", defaultValue = "FULL") mode: ZnsImportMode
): ResponseEntity<ImportStartResponse> {
val job = jobRegistry.erstelleJob()
orchestrator.starteImport(job.jobId, file.bytes)
orchestrator.starteImport(job.jobId, file.bytes, mode)
return ResponseEntity.status(HttpStatus.ACCEPTED).body(ImportStartResponse(job.jobId))
}
@@ -1,6 +1,6 @@
package at.mocode.zns.import.service.job
import at.mocode.zns.importer.ZnsImportResult
import at.mocode.zns.importer.ZnsImportMode
import at.mocode.zns.importer.ZnsImportService
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
@@ -19,7 +19,7 @@ class ZnsImportOrchestrator(
) {
private val scope = CoroutineScope(Dispatchers.IO)
fun starteImport(jobId: String, zipBytes: ByteArray) {
fun starteImport(jobId: String, zipBytes: ByteArray, mode: ZnsImportMode = ZnsImportMode.FULL) {
scope.launch {
runCatching {
jobRegistry.aktualisiereStatus(jobId, ImportJobStatus.ENTPACKEN, "Entpacke ZIP-Datei...", 5)
@@ -28,7 +28,7 @@ class ZnsImportOrchestrator(
archiviereZip(zipBytes)
jobRegistry.aktualisiereStatus(jobId, ImportJobStatus.VERARBEITUNG, "Verarbeite ZNS-Daten...", 20)
val result = service.importiereZip(zipBytes.inputStream())
val result = service.importiereZip(zipBytes.inputStream(), mode)
jobRegistry.aktualisiereStatus(
jobId, ImportJobStatus.ABGESCHLOSSEN,