Skip to content

Commit 13731d1

Browse files
authored
Merge pull request #6635 from espoon-voltti/aromi-integration-fixes
Lisätään lokitusta Aromi-integraatioon
2 parents 075d730 + 1e88a54 commit 13731d1

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

service/src/main/kotlin/fi/espoo/evaka/aromi/AromiService.kt

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import fi.espoo.evaka.shared.domain.HelsinkiDateTimeRange
2020
import fi.espoo.evaka.shared.domain.TimeRange
2121
import fi.espoo.evaka.shared.domain.getHolidays
2222
import fi.espoo.evaka.shared.sftp.SftpClient
23+
import io.github.oshai.kotlinlogging.KotlinLogging
2324
import java.io.ByteArrayOutputStream
2425
import java.io.PrintWriter
2526
import java.nio.charset.StandardCharsets
@@ -32,6 +33,8 @@ import org.apache.commons.csv.CSVPrinter
3233
import org.jdbi.v3.json.Json
3334
import org.springframework.stereotype.Service
3435

36+
private val logger = KotlinLogging.logger {}
37+
3538
@Service
3639
class AromiService(private val aromiEnv: AromiEnv?) {
3740
private val startDateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmm")
@@ -42,23 +45,31 @@ class AromiService(private val aromiEnv: AromiEnv?) {
4245
clock: EvakaClock,
4346
earliestStartDate: LocalDate = LocalDate.of(2025, 4, 22),
4447
) {
48+
val today = clock.today()
49+
logger.info { "Scheduled sending of Aromi attendance CSV started ($today)" }
4550
val sftpClient =
4651
aromiEnv?.let { SftpClient(it.sftp) }
4752
?: error("Cannot send Aromi orders: AromiEnv is not configured")
4853
val formatter = DateTimeFormatter.ofPattern(aromiEnv.filePattern)
49-
val today = clock.today()
5054
val endDate = today.plusDays(21)
5155
if (endDate.isBefore(earliestStartDate))
5256
error("End date of meal order is before earliest start date, aborting")
5357
val startDate = maxOf(earliestStartDate, today.plusDays(3))
54-
5558
val data = getMealOrdersCsv(db, FiniteDateRange(startDate, endDate))
56-
data.inputStream().use { sftpClient.put(it, today.format(formatter)) }
59+
val fileName = today.format(formatter)
60+
logger.info { "Sending Aromi attendance CSV $fileName (${data.size})" }
61+
data.inputStream().use { sftpClient.put(it, fileName) }
62+
logger.info { "Scheduled sending of Aromi attendance CSV completed" }
5763
}
5864

5965
fun getMealOrdersCsv(dbc: Database.Connection, range: FiniteDateRange): ByteArray {
66+
logger.info { "Collecting Aromi attendance rows (${range.start} - ${range.end})" }
6067
val data = dbc.read { tx -> getData(tx, range) }
6168
if (data.report.isEmpty()) error("No attendance information available, aborting")
69+
val earliestStartDate = data.report.minOfOrNull { it.date }
70+
logger.info {
71+
"Aromi attendance rows collected (${data.report.size}), earliest attendance date $earliestStartDate"
72+
}
6273
return ByteArrayOutputStream().use { stream ->
6374
PrintWriter(stream, false, StandardCharsets.ISO_8859_1).use { writer ->
6475
printCsv(writer, data)

0 commit comments

Comments
 (0)