EN · DE · RU · FR · ES

#192: AddressCampaignValueExport.kt

plugins/org.projectforge.plugins.marketing/src/main/kotlin/org/projectforge/plugins/marketing/AddressCampaignValueExport.kt Тип: Kotlin · Роль: Регистрация плагина · Источник: plugins/org.projectforge.plugins.marketing/src/main/kotlin/org/projectforge/plugins/marketing/AddressCampaignValueExport.kt 77 строк · 40 кода · 28 комментариев · 9 пустых
Утилита экспорта в Excel/CSV для данных AddressCampaignValue. Настраивает заголовки столбцов (i18n), форматтеры полей (валюта, дата) и заполняет строки из коллекций данных.

Структура кода

Аннотации: author, Suppress, Service, micromata

Классы: AddressCampaignValueExport

Супертип(ы): AddressExport

Функции (4): export, registerAdditionalCols, handleAddressCampaign, configureSheet

Свойства (3): addressCampaignSupported, addressCampaignValue, sheetTitle

Импорты: 7 пакетов

Пакет: org.projectforge.plugins.marketing

Исходный код (сокращённый)

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 {}

/**
 * Для экспорта в Excel. export должен вызываться с двумя параметрами: первый — это карта AddressCampaignValue, второй —
 * название кампании адресов.
 *
 * @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 { "Экспорт кампании '${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

868d6abb7 2025 -> 2026
63081666f Заголовки исходных файлов: 2024 -> 2025.
4c04cfd65 КРУПНОЕ ИЗМЕНЕНИЕ! Миграция целочисленных id на Long id (включая внешние ключи и т.д.)
b1560ca43 Миграция в процессе...
b6092df09 Авторские права 2023 -> 2024