EN · DE · RU · FR · ES

#192: AddressCampaignValueExport.kt

plugins/org.projectforge.plugins.marketing/src/main/kotlin/org/projectforge/plugins/marketing/AddressCampaignValueExport.kt Typ: Kotlin · Rolle: Plugin-Registrierung · Quelle: plugins/org.projectforge.plugins.marketing/src/main/kotlin/org/projectforge/plugins/marketing/AddressCampaignValueExport.kt 77 Zeilen · 40 Code · 28 Kommentare · 9 leer
Excel/CSV-Export-Dienstprogramm für AddressCampaignValue-Daten. Konfiguriert Spaltenüberschriften (i18n), Feldformatierer (Währung, Datum) und befüllt Zeilen aus Datensammlungen.

Codestruktur

Annotationen: author, Suppress, Service, micromata

Klassen: AddressCampaignValueExport

Supertyp(en): AddressExport

Funktionen (4): export, registerAdditionalCols, handleAddressCampaign, configureSheet

Eigenschaften (3): addressCampaignSupported, addressCampaignValue, sheetTitle

Importe: 7 Pakete

Paket: org.projectforge.plugins.marketing

Quellcode (gekürzt)

package org.projectforge.plugins.marketing

import de.micromata.merlin.excel.ExcelRow
import de.micromata.merlin.excel.ExcelSheet
import mu.KotlinLogging
import org.projectforge.business.address.AddressDO
import org.projectforge.business.address.AddressExport
import org.projectforge.business.address.PersonalAddressDO
import org.springframework.stereotype.Service

private val log = KotlinLogging.logger {}

/**
 * Für den Excel-Export. export muss mit zwei Parametern aufgerufen werden, der erste ist die AddressCampaignValue-Map und der zweite der
 * Titel der Adresskampagne.
 *
 * @author Kai Reinhard (k.reinhard@micromata.de)
 */
@Service("addressCampaignValueExport")
open class AddressCampaignValueExport : AddressExport() {
  override val addressCampaignSupported = true

  override fun export(
    origList: List<AddressDO>,
    personalAddressMap: Map<Long, PersonalAddressDO>,
    vararg params: Any
  ): ByteArray? {
    log.info { "Exportiere Kampagne '${params[1]}'..." }
    return super.export(origList, personalAddressMap, *params)
  }

  override fun registerAdditionalCols(sheet: ExcelSheet) {
    register(sheet, "value", "campaignValue")
    register(sheet, "comment", "campaignComment")
  }

  override fun handleAddressCampaign(row: ExcelRow, address: AddressDO, vararg params: Any) {
    @Suppress("UNCHECKED_CAST")
    val addressCampaignValue = (params[0] as Map<Long, AddressCampaignValueDO>).get(address.id)
    row.getCell("campaignValue")?.setCellValue(addressCampaignValue?.value)
    row.getCell("campaignComment")?.setCellValue(addressCampaignValue?.comment)
  }

  override val sheetTitle = "plugins.marketing.addressCampaign"

  override fun configureSheet(sheet: ExcelSheet, vararg params: Any) {
    sheet.setMergedRegion(
      0, 0,
      sheet.getColNumber("campaignValue")!!,
      sheet.getColNumber("campaignComment")!!,
      params[1]
    )
  }
}

Git-Verlauf

868d6abb7 2025 -> 2026
63081666f Quellcode-Dateiköpfe: 2024 -> 2025.
4c04cfd65 MAJOR-CHANGE! Migration von Integer-IDs zu Long-IDs (inkl. Fremdschlüssel etc.)
b1560ca43 Migration in Arbeit...
b6092df09 Copyright 2023 -> 2024