SkillMatrixPrivacyProtectionJob.ktАннотации: PostConstruct, micromata, Service, author, Autowired
Классы: SkillMatrixPrivacyProtectionJob
Супертип(ы): IPrivacyProtectionJob
Функции (2): postConstruct, execute
Свойства (6): persistenceService, purgeCronPrivacyProtectionJob, userDao, date, lastUpdate, counter
Импорты: 9 пакетов
Пакет: org.projectforge.plugins.skillmatrix
package org.projectforge.plugins.skillmatrix
import jakarta.annotation.PostConstruct
import mu.KotlinLogging
import org.projectforge.business.privacyprotection.CronPrivacyProtectionJob
import org.projectforge.business.privacyprotection.IPrivacyProtectionJob
import org.projectforge.business.user.UserDao
import org.projectforge.framework.persistence.jpa.PfPersistenceService
import org.projectforge.framework.time.PFDateTime
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Service
private val log = KotlinLogging.logger {}
/**
*
* @author Kai Reinhard (k.reinhard@micromata.de)
*/
@Service
class SkillMatrixPrivacyProtectionJob : IPrivacyProtectionJob {
@Autowired
private lateinit var persistenceService: PfPersistenceService
@Autowired
private lateinit var purgeCronPrivacyProtectionJob: CronPrivacyProtectionJob
@Autowired
private lateinit var userDao: UserDao
@PostConstruct
private fun postConstruct() {
purgeCronPrivacyProtectionJob.register(this)
}
override fun execute() {
val date = PFDateTime.now().minusMonths(3L)
log.info("Очистка записей матрицы навыков уволенных (удалённых/деактивированных пользователей с lastUpdate < ${date.isoString}Z)...")
userDao.selectAll(checkAccess = false).forEach { user ->
if (user.deactivated || user.deleted) {
val lastUpdate = user.lastUpdate
if (lastUpdate != null && lastUpdate < date.utilDate) {
val counter = persistenceService.runInTransaction { context ->
context.executeNamedUpdate(
SkillEntryDO.DELETE_ALL_OF_USER, Pair("userId", user.id)
)
}
if (counter > 0) {
log.info { "Удалено $counter записей матрицы навыков пользователя '${user.username}' с id ${user.id}." }
}
}
}
}
log.info("Очистка записей матрицы навыков завершена.")
}
}
868d6abb7 2025 -> 2026 63081666f Заголовки исходных файлов: 2024-> 2025. 1b50060c3 BaseDao: переименовано: get -> find, save -> insert, getList -> select, load -> select 2a8ea2076 Миграция в процессе... BaseDao рефакторизован (ещё не завершено) внутренние* методы переименованы. 108ecf629 !!!!! Большое изменение обработки транзакций: повторное использование PfPersistenceContext насколько это возможно (ещё не завершено). Тесты пока не запускаются. Транзакции только для чтения в PfPersistenceService удалены, операции записи PfPersistenceService удалены.