From e4f14481c9a2f7d6b730cc501733bd95cae22193 Mon Sep 17 00:00:00 2001 From: Timo Suomela Date: Mon, 30 Dec 2024 17:08:57 +0200 Subject: [PATCH] OPHYK-318 Export all data required by datantuonti process --- .../datantuonti/ExportService.java | 52 ++++++++++++++++++- .../datantuonti/ExportServiceTest.java | 2 +- 2 files changed, 52 insertions(+), 2 deletions(-) diff --git a/organisaatio-service/src/main/java/fi/vm/sade/organisaatio/datantuonti/ExportService.java b/organisaatio-service/src/main/java/fi/vm/sade/organisaatio/datantuonti/ExportService.java index b045fb96f..2cb199530 100644 --- a/organisaatio-service/src/main/java/fi/vm/sade/organisaatio/datantuonti/ExportService.java +++ b/organisaatio-service/src/main/java/fi/vm/sade/organisaatio/datantuonti/ExportService.java @@ -14,7 +14,35 @@ public class ExportService { private JdbcTemplate jdbcTemplate; private final String CREATE_ORGANISAATIO_SQL = """ CREATE TABLE datantuonti_export_new.organisaatio AS - SELECT o.oid as organisaatio_oid + SELECT + o.oid, + (SELECT parent_oid + FROM organisaatio_parent_oids + WHERE organisaatio_id = o.id + AND parent_position = 0) AS parent_oid, + o.oppilaitostyyppi, + o.ytunnus, + o.piilotettu, + (SELECT v.value + FROM monikielinenteksti_values v + WHERE v.id = o.nimi_mkt + AND v.key = 'fi') as nimi_fi, + (SELECT v.value + FROM monikielinenteksti_values v + WHERE v.id = o.nimi_mkt + AND v.key = 'sv') as nimi_sv, + (SELECT v.value + FROM monikielinenteksti_values v + WHERE v.id = o.nimi_mkt + AND v.key = 'en') as nimi_en, + o.alkupvm, + o.lakkautuspvm, + o.yritysmuoto, + o.kotipaikka, + o.maa, + (SELECT string_agg(kielet, ',') + FROM organisaatio_kielet + WHERE organisaatio_id = o.id) as kielet FROM organisaatio o WHERE NOT EXISTS( SELECT 1 @@ -26,12 +54,34 @@ WHERE NOT EXISTS( ) ); """; + private final String CREATE_EXPORT_OSOITE_SQL = """ + CREATE TABLE datantuonti_export_new.osoite AS + SELECT o.oid, + y.osoitetyyppi, + y.osoite, + y.postinumero, + y.postitoimipaikka, + y.kieli + FROM yhteystieto y + JOIN organisaatio o ON o.id = y.organisaatio_id + WHERE y.osoitetyyppi in ('posti', 'kaynti') + AND NOT EXISTS( + SELECT 1 + FROM organisaatio_tyypit + WHERE organisaatio_id = o.id + AND ( + tyypit = 'organisaatiotyyppi_08' + OR tyypit = 'organisaatiotyyppi_07' + ) + ) + """; @Transactional public void createSchema() { jdbcTemplate.execute("DROP SCHEMA IF EXISTS datantuonti_export_new CASCADE"); jdbcTemplate.execute("CREATE SCHEMA datantuonti_export_new"); jdbcTemplate.execute(CREATE_ORGANISAATIO_SQL); + jdbcTemplate.execute(CREATE_EXPORT_OSOITE_SQL); jdbcTemplate.execute("DROP SCHEMA IF EXISTS datantuonti_export CASCADE"); jdbcTemplate.execute("ALTER SCHEMA datantuonti_export_new RENAME TO datantuonti_export"); } diff --git a/organisaatio-service/src/test/java/fi/vm/sade/organisaatio/datantuonti/ExportServiceTest.java b/organisaatio-service/src/test/java/fi/vm/sade/organisaatio/datantuonti/ExportServiceTest.java index b5d77434e..23273e227 100644 --- a/organisaatio-service/src/test/java/fi/vm/sade/organisaatio/datantuonti/ExportServiceTest.java +++ b/organisaatio-service/src/test/java/fi/vm/sade/organisaatio/datantuonti/ExportServiceTest.java @@ -38,7 +38,7 @@ void doesNotExportVarhaiskasvastusOrganisaatiot() { } private List getExportedOrganisaatioCount() { - return jdbcTemplate.queryForList("SELECT organisaatio_oid FROM datantuonti_export.organisaatio", String.class); + return jdbcTemplate.queryForList("SELECT oid FROM datantuonti_export.organisaatio", String.class); } private List getVarhaiskasvatusOrganisaatioOids() {