Skip to content

Commit 6dcb4c9

Browse files
committed
Parse innkommende serienumre fra OEBS (bare for rå ordrelinjer per nå)
1 parent e276666 commit 6dcb4c9

File tree

4 files changed

+73
-3
lines changed

4 files changed

+73
-3
lines changed

src/main/kotlin/no/nav/hjelpemidler/api/OrdrelinjeAPI.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package no.nav.hjelpemidler.api
22

3+
import com.fasterxml.jackson.databind.DeserializationFeature
34
import com.fasterxml.jackson.dataformat.xml.XmlMapper
45
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
56
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
@@ -30,8 +31,8 @@ import java.util.UUID
3031

3132
private val logg = KotlinLogging.logger {}
3233
private val sikkerlogg = KotlinLogging.logger("tjenestekall")
33-
private val mapperJson = jacksonObjectMapper().registerModule(JavaTimeModule())
34-
private val mapperXml = XmlMapper().registerModule(JavaTimeModule())
34+
private val mapperJson = jacksonObjectMapper().registerModule(JavaTimeModule()).disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
35+
private val mapperXml = XmlMapper().registerModule(JavaTimeModule()).disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
3536

3637
internal fun Route.ordrelinjeAPI(context: Context) {
3738
post("/push") {

src/main/kotlin/no/nav/hjelpemidler/model/OrdrelinjeOebs.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,9 @@ data class OrdrelinjeOebs(
9393

9494
@JsonProperty("SendTilAddresse1")
9595
var sendtTilAdresse: String,
96+
97+
@JsonProperty("SerieNummerListe")
98+
val serienumreRå: String?,
9699
)
97100

98101
fun OrdrelinjeOebs.erOpprettetFraHOTSAK() = kilde != null && kilde == HOTSAK
@@ -125,6 +128,7 @@ fun OrdrelinjeOebs.toRåOrdrelinje(): RåOrdrelinje {
125128
egenAnsatt = this.egenAnsatt,
126129
sistOppdatert = this.sistOppdatert,
127130
sendtTilAdresse = this.sendtTilAdresse,
131+
serienumre = this.serienumreRå?.let { RåOrdrelinje.serienumreListeFraRå(this.serienumreRå) } ?: listOf(),
128132
)
129133
}
130134

src/main/kotlin/no/nav/hjelpemidler/model/RåOrdrelinje.kt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,12 @@ data class RåOrdrelinje(
3636
val sistOppdatert: LocalDate,
3737

3838
val sendtTilAdresse: String,
39-
)
39+
40+
var serienumre: List<String> = listOf(),
41+
) {
42+
companion object {
43+
fun serienumreListeFraRå(rå: String): List<String> {
44+
return rå.split(",").map { it.trim() }
45+
}
46+
}
47+
}

src/test/kotlin/no/nav/hjelpemidler/ParsingTest.kt

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
package no.nav.hjelpemidler
22

3+
import com.fasterxml.jackson.databind.DeserializationFeature
34
import com.fasterxml.jackson.dataformat.xml.XmlMapper
45
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
56
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
67
import com.fasterxml.jackson.module.kotlin.readValue
78
import no.nav.hjelpemidler.model.OrdrelinjeOebs
9+
import no.nav.hjelpemidler.model.RåOrdrelinje
810
import java.time.LocalDate
11+
import kotlin.math.exp
912
import kotlin.test.Test
1013
import kotlin.test.assertEquals
1114
import kotlin.time.ExperimentalTime
@@ -17,6 +20,7 @@ internal class ParsingTest {
1720
fun `Parse vedtaksdato to LocalDate`() {
1821
val mapper = jacksonObjectMapper()
1922
mapper.registerModule(JavaTimeModule())
23+
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
2024

2125
val result: OrdrelinjeOebs = mapper.readValue(
2226
"""
@@ -55,11 +59,58 @@ internal class ParsingTest {
5559
println(mapper.writeValueAsString(result))
5660
}
5761

62+
@ExperimentalTime
63+
@Test
64+
fun `Parse serienumre`() {
65+
val mapper = jacksonObjectMapper()
66+
mapper.registerModule(JavaTimeModule())
67+
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
68+
69+
val result: OrdrelinjeOebs = mapper.readValue(
70+
"""
71+
{
72+
"System": "DIGIHOT",
73+
"Id":585,
74+
"IncidentNummer":21072339,
75+
"IncidentStatus": "Open",
76+
"IncidentType": "Vedtak Infotrygd",
77+
"IncidentSoknadType": "HJDAAN",
78+
"IncidentVedtakDato": "2021-04-04",
79+
"IncidentSoknad": "S",
80+
"IncidentResultat": "I",
81+
"IncidentRef": "A01",
82+
"OrdreNumber":7068818,
83+
"LineNumber":1,
84+
"ShipmentNumber":1,
85+
"Description": "Rullator 4hjul Topro Olympos M b71 h79-95 sh60 sml",
86+
"CategoryDescription": "",
87+
"OrderedItem":149305,
88+
"CategoryNum": "122291",
89+
"User_ItemType": "Hjelpemiddel",
90+
"Quantity":1,
91+
"ShippingQuantityUom": "STK",
92+
"AccountNumber": "XXXXXXXXXXX",
93+
"EgenAnsatt": "Y",
94+
"LastUpdateDate": "2021-04-05",
95+
"SendTilAddresse1": "1234 Oslo, bla bla bla",
96+
"SerieNummerListe":"660383, 693065, 726136, 733046"
97+
}
98+
""".trimIndent()
99+
)
100+
101+
println(result.toString())
102+
val expected = listOf("660383", "693065", "726136", "733046")
103+
for (serienr in RåOrdrelinje.serienumreListeFraRå(result.serienumreRå!!)) {
104+
assert(expected.contains(serienr)) { "Expected to find only the serial numbers in the raw example" }
105+
}
106+
}
107+
58108
@ExperimentalTime
59109
@Test
60110
fun `Parse tom dato-streng til LocalDate`() {
61111
val mapper = jacksonObjectMapper()
62112
mapper.registerModule(JavaTimeModule())
113+
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
63114

64115
val result: OrdrelinjeOebs = mapper.readValue(
65116
"""
@@ -103,6 +154,7 @@ internal class ParsingTest {
103154
fun `Parse artikkelnr med leading zero`() {
104155
val mapper = jacksonObjectMapper()
105156
mapper.registerModule(JavaTimeModule())
157+
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
106158

107159
val result: OrdrelinjeOebs = mapper.readValue(
108160
"""
@@ -144,6 +196,7 @@ internal class ParsingTest {
144196
fun `Parse XML`() {
145197
val mapper = XmlMapper()
146198
mapper.registerModule(JavaTimeModule())
199+
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
147200

148201
val result: OrdrelinjeOebs = mapper.readValue(
149202
"""
@@ -186,6 +239,7 @@ internal class ParsingTest {
186239
fun `Parse int til double`() {
187240
val mapper = jacksonObjectMapper()
188241
mapper.registerModule(JavaTimeModule())
242+
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
189243

190244
val result: OrdrelinjeOebs = mapper.readValue(
191245
"""
@@ -225,6 +279,7 @@ internal class ParsingTest {
225279
fun `Parse int til double for XML`() {
226280
val mapper = XmlMapper()
227281
mapper.registerModule(JavaTimeModule())
282+
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
228283

229284
val result: OrdrelinjeOebs = mapper.readValue(
230285
"""
@@ -265,6 +320,7 @@ internal class ParsingTest {
265320
fun `Parse desimaltal til double`() {
266321
val mapper = jacksonObjectMapper()
267322
mapper.registerModule(JavaTimeModule())
323+
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
268324

269325
val result: OrdrelinjeOebs = mapper.readValue(
270326
"""
@@ -304,6 +360,7 @@ internal class ParsingTest {
304360
fun `Parse desimaltal til double for XML`() {
305361
val mapper = XmlMapper()
306362
mapper.registerModule(JavaTimeModule())
363+
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
307364

308365
val result: OrdrelinjeOebs = mapper.readValue(
309366
"""

0 commit comments

Comments
 (0)