Skip to content

Commit

Permalink
Merge pull request #3522 from finnishtransportagency/pdf-rivirajoitus
Browse files Browse the repository at this point in the history
Kasvata sallittua pdf-rivimäärää
  • Loading branch information
solita-staskila committed Sep 18, 2024
2 parents ebc8dbc + ae7f394 commit c689803
Show file tree
Hide file tree
Showing 16 changed files with 87 additions and 64 deletions.
6 changes: 4 additions & 2 deletions src/clj/harja/palvelin/raportointi.clj
Original file line number Diff line number Diff line change
Expand Up @@ -338,8 +338,9 @@
(binding [*raportin-suoritus* this]
;; Tallennetaan loki raportin ajon startista
(let [parametrit (assoc parametrit :kasittelija kasittelija)
rajoita-pdf-rivimaara (:rajoita-pdf-rivimaara suoritettava-raportti)
_ (when-not (= nimi :ilmoitukset-raportti)
(log/debug "SUORITETAAN RAPORTTI: " nimi " kontekstissa: " konteksti " parametreilla: " parametrit))
(log/debug "SUORITETAAN RAPORTTI: " nimi " kontekstissa: " konteksti " parametreilla: " parametrit " PDF rajoitus: " rajoita-pdf-rivimaara))
suoritus-id (luo-suoritustieto-raportille
db
kayttaja
Expand All @@ -361,7 +362,8 @@
"koko maa" parametrit))]
;; tallennetaan suorituksen lopetusaika
(paivita-suorituksen-valmistumisaika db suoritus-id)
raportti)))))))
;; Lisää vielä PDF rajoitus suoraa raportin elementteihin, jotta tämä saadaan passattua pdf generointiin
(update-in raportti [1] assoc :rajoita-pdf-rivimaara rajoita-pdf-rivimaara))))))))


(defn luo-raportointi []
Expand Down
41 changes: 26 additions & 15 deletions src/clj/harja/palvelin/raportointi/pdf.clj
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
(first elementti)
:vain-arvo)))

(def ^:const +max-rivimaara+ 1000)
(def ^:const +max-rivimaara-default+ 1000)

(defn cdata
"Käsittele arvo puhtaana tekstinä."
Expand Down Expand Up @@ -333,16 +333,16 @@
(cdata (str naytettava-arvo))
naytettava-arvo)]])])))))

(defn- taulukko-alaosa [rivien-maara sarakkeet viimeinen-rivi-yhteenveto?]
(when (> rivien-maara +max-rivimaara+)
(defn- taulukko-alaosa [rivien-maara sarakkeet viimeinen-rivi-yhteenveto? rivi-raja]
(when (> rivien-maara rivi-raja)
[:fo:table-row
[:fo:table-cell {:padding "1mm"
:number-columns-spanned (count sarakkeet)}
[:fo:block {:space-after "0.5em"}]
[:fo:block (str "Taulukossa näytetään vain ensimmäiset " +max-rivimaara+ " rivia. "
"Tarkenna hakuehtoa. "
(when viimeinen-rivi-yhteenveto?
"Yhteenveto on laskettu kaikista riveistä"))]]]))
[:fo:block (str "Taulukossa näytetään vain ensimmäiset " rivi-raja " riviä. "
"Tarkenna hakuehtoa tai käytä Excel-vientiä."
(when viimeinen-rivi-yhteenveto?
"Yhteenveto on laskettu kaikista riveistä"))]]]))

(defn taulukko-header [{:keys [oikealle-tasattavat-kentat] :as optiot} sarakkeet]
(let [oikealle-tasattavat-kentat (or oikealle-tasattavat-kentat #{})]
Expand Down Expand Up @@ -372,11 +372,12 @@
[:fo:block (cdata otsikko)]])
sarakkeet)]]))

(defn taulukko-body [sarakkeet data {:keys [viimeinen-rivi-yhteenveto? tyhja] :as optiot}]
(defn taulukko-body [sarakkeet data {:keys [viimeinen-rivi-yhteenveto? tyhja rajoita-pdf-rivimaara] :as optiot}]
(let [rivien-maara (count data)
viimeinen-rivi (last data)
data (if (> (count data) +max-rivimaara+)
(vec (concat (take +max-rivimaara+ data)
rivi-raja (or rajoita-pdf-rivimaara +max-rivimaara-default+)
data (if (> (count data) rivi-raja)
(vec (concat (take rivi-raja data)
(when viimeinen-rivi-yhteenveto?
[viimeinen-rivi])))
data)]
Expand All @@ -389,7 +390,7 @@
[:fo:block {:space-after "0.5em"}]
[:fo:block (or tyhja "Ei tietoja")]]])
(taulukko-rivit sarakkeet data viimeinen-rivi optiot)
(taulukko-alaosa rivien-maara sarakkeet viimeinen-rivi-yhteenveto?)]))
(taulukko-alaosa rivien-maara sarakkeet viimeinen-rivi-yhteenveto? rivi-raja)]))

(defn arvotaulukko-valittu-aika [kyseessa-kk-vali? otsikko hoitokauden-otsikko valittu-pvm-otsikko hoitokauden-arvo laskutetaan-arvo]

Expand Down Expand Up @@ -641,12 +642,22 @@
(when-let [tiedot (:tietoja raportin-tunnistetiedot)]
[:fo:block {:padding "1mm 0" :border "solid 0.2mm black" :margin-bottom "2mm"}
(muodosta-pdf [:yhteenveto tiedot])])]

(keep identity
(mapcat #(when %
(if (seq? %)
(map muodosta-pdf %)
[(muodosta-pdf %)]))
(mapcat (fn [elem]
(when elem
(if (seq? elem)
;; Passaa taulukolle pdf rajoitus
(map #(if (= (first %) :taulukko)
(muodosta-pdf (update % 1 assoc :rajoita-pdf-rivimaara (:rajoita-pdf-rivimaara raportin-tunnistetiedot)))
(muodosta-pdf %))
elem)
;; Passaa taulukolle pdf rajoitus
(if (= (first elem) :taulukko)
[(muodosta-pdf (update elem 1 assoc :rajoita-pdf-rivimaara (:rajoita-pdf-rivimaara raportin-tunnistetiedot)))]
[(muodosta-pdf elem)]))))
sisalto))

#_[[:fo:block {:id "raportti-loppu"}]])))
{:tiedostonimi (str tiedoston-nimi ".pdf")})))

Expand Down
3 changes: 3 additions & 0 deletions src/clj/harja/palvelin/raportointi/raportit.clj
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@
:urakkatyyppi #{:hoito :teiden-hoito}}

{:nimi :tiestotarkastusraportti
:rajoita-pdf-rivimaara 30000
:parametrit [{:tyyppi "aikavali", :konteksti nil, :pakollinen true, :nimi "Aikaväli"}
{:tyyppi "tienumero", :konteksti nil, :pakollinen false, :nimi "Tienumero"}]
:konteksti #{"hallintayksikko" "koko maa" "urakka" "hankinta-alue"}
Expand Down Expand Up @@ -376,6 +377,8 @@

{:nimi :kanavien-liikennetapahtumat
:konteksti #{}
;; Älä nosta PDF rajaa tälle raportille, aiheutuu liiallista muisti allocaatiota
:rajoita-pdf-rivimaara 1200
:kuvaus "Liikennetapahtumat"
:suorita #'harja.palvelin.raportointi.raportit.kanavien-liikennetapahtumat/suorita
:urakkatyyppi urakka-domain/kanava-urakkatyypit}
Expand Down
4 changes: 2 additions & 2 deletions test/clj/harja/palvelin/raportointi/aikataulu_test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@
aikajana (-> vastaus (nth 2))
kohdeluettelo (-> vastaus last)]
(is (vector? vastaus))
(is (= otsikko {:orientaatio :landscape, :nimi "Utajärven päällystysurakka, Ylläpidon aikataulu 2023"}))
(is (= otsikko {:orientaatio :landscape, :nimi "Utajärven päällystysurakka, Ylläpidon aikataulu 2023" :rajoita-pdf-rivimaara nil}))
(is (= aikajana odotettu-aikajana-2023))
(is (= kohdeluettelo odotettu-kohdeluettelo-2023))))

Expand All @@ -272,6 +272,6 @@
aikajana (-> vastaus (nth 2))
kohdeluettelo (-> vastaus last)]
(is (vector? vastaus))
(is (= otsikko {:orientaatio :landscape, :nimi "Utajärven päällystysurakka, Ylläpidon aikataulu 2024"}))
(is (= otsikko {:orientaatio :landscape, :nimi "Utajärven päällystysurakka, Ylläpidon aikataulu 2024" :rajoita-pdf-rivimaara nil}))
(is (= aikajana odotettu-aikajana-2024))
(is (= kohdeluettelo odotettu-kohdeluettelo-2024))))
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@
:loppupvm (c/to-date (t/local-date 2015 10 1))}})]
(is (vector? vastaus))
(is (= vastaus [:raportti
{:nimi "Erilliskustannusten raportti"}
{:nimi "Erilliskustannusten raportti", :rajoita-pdf-rivimaara nil}
[:taulukko
{:oikealle-tasattavat-kentat #{4
5}
Expand Down Expand Up @@ -127,7 +127,7 @@
:loppupvm (c/to-date (t/local-date 2022 10 1))}})]
(is (vector? vastaus))
(is (= vastaus [:raportti
{:nimi "Erilliskustannusten raportti"}
{:nimi "Erilliskustannusten raportti", :rajoita-pdf-rivimaara nil}
[:taulukko
{:oikealle-tasattavat-kentat #{4
5}
Expand Down Expand Up @@ -205,7 +205,7 @@
(is (vector? vastaus))
(is (= vastaus
[:raportti
{:nimi "Erilliskustannusten raportti"}
{:nimi "Erilliskustannusten raportti", :rajoita-pdf-rivimaara nil}
[:taulukko
{:oikealle-tasattavat-kentat #{5
6}
Expand Down Expand Up @@ -333,7 +333,7 @@
(is (vector? vastaus))
(is (= vastaus
[:raportti
{:nimi "Erilliskustannusten raportti"}
{:nimi "Erilliskustannusten raportti", :rajoita-pdf-rivimaara nil}
[:taulukko
{:oikealle-tasattavat-kentat #{5
6}
Expand Down
24 changes: 13 additions & 11 deletions test/clj/harja/palvelin/raportointi/kanavat_raportti_test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,8 @@
[:raportti
{:orientaatio :landscape
:nimi "Saimaan kanava, Häiriötilanteet ajalta 01.10.2023 - 30.09.2024",
:piilota-otsikko? true}
:piilota-otsikko? true,
:rajoita-pdf-rivimaara nil}
[:taulukko {:otsikko "Häiriötilanteet", :tyhja nil, :sheet-nimi "Häiriötilanteet"}
[{:otsikko "Havainto", :otsikkorivi-luokka "nakyma-otsikko", :sarakkeen-luokka "vaalen-tumma-tausta", :leveys 0.75, :tyyppi :varillinen-teksti}
{:otsikko "Kohde", :otsikkorivi-luokka "nakyma-otsikko", :sarakkeen-luokka "nakyma-valkoinen-solu", :leveys 0.8, :tyyppi :varillinen-teksti}
Expand Down Expand Up @@ -113,20 +114,21 @@
(is (= raportin-nimi "Saimaan kanava, Kokonaishintaiset toimenpiteet ajalta 01.10.2023 - 30.09.2024"))
;; Raportilla pitäisi näkyä passatut tiedot
(is (= vastaus
[:raportti
[:raportti
{:orientaatio :landscape
:nimi "Saimaan kanava, Kokonaishintaiset toimenpiteet ajalta 01.10.2023 - 30.09.2024",
:piilota-otsikko? true}
[:taulukko {:otsikko "Kokonaishintaiset toimenpiteet", :tyhja nil, :sheet-nimi "Kokonaishintaiset toimenpiteet"}
[{:otsikko "Pvm", :otsikkorivi-luokka "nakyma-otsikko", :sarakkeen-luokka "vaalen-tumma-tausta", :leveys 0.5, :tyyppi :varillinen-teksti}
:nimi "Saimaan kanava, Kokonaishintaiset toimenpiteet ajalta 01.10.2023 - 30.09.2024",
:piilota-otsikko? true,
:rajoita-pdf-rivimaara nil}
[:taulukko {:otsikko "Kokonaishintaiset toimenpiteet", :tyhja nil, :sheet-nimi "Kokonaishintaiset toimenpiteet"}
[{:otsikko "Pvm", :otsikkorivi-luokka "nakyma-otsikko", :sarakkeen-luokka "vaalen-tumma-tausta", :leveys 0.5, :tyyppi :varillinen-teksti}
{:otsikko "Kohde", :otsikkorivi-luokka "nakyma-otsikko", :sarakkeen-luokka "nakyma-valkoinen-solu", :leveys 0.8, :tyyppi :varillinen-teksti}
{:otsikko "Huoltokohde", :otsikkorivi-luokka "nakyma-otsikko", :sarakkeen-luokka "nakyma-valkoinen-solu", :leveys 0.8, :tyyppi :varillinen-teksti}
{:otsikko "Huoltokohde", :otsikkorivi-luokka "nakyma-otsikko", :sarakkeen-luokka "nakyma-valkoinen-solu", :leveys 0.8, :tyyppi :varillinen-teksti}
{:otsikko "Tehtävä", :otsikkorivi-luokka "nakyma-otsikko", :sarakkeen-luokka "nakyma-valkoinen-solu", :leveys 0.45, :tyyppi :varillinen-teksti}
{:otsikko "Muu toimenpide", :otsikkorivi-luokka "nakyma-otsikko", :sarakkeen-luokka "nakyma-valkoinen-solu", :leveys 0.6, :tyyppi :varillinen-teksti}
{:otsikko "Muu toimenpide", :otsikkorivi-luokka "nakyma-otsikko", :sarakkeen-luokka "nakyma-valkoinen-solu", :leveys 0.6, :tyyppi :varillinen-teksti}
{:otsikko "Lisätieto", :otsikkorivi-luokka "nakyma-otsikko", :sarakkeen-luokka "nakyma-valkoinen-solu", :leveys 0.8, :tyyppi :varillinen-teksti}
{:otsikko "Suorittaja", :otsikkorivi-luokka "nakyma-otsikko", :sarakkeen-luokka "nakyma-valkoinen-solu", :leveys 0.5, :tyyppi :varillinen-teksti}
{:otsikko "Kuittaaja", :otsikkorivi-luokka "nakyma-otsikko", :sarakkeen-luokka "nakyma-valkoinen-solu", :leveys 0.8, :tyyppi :varillinen-teksti}]
[(list "19.2.2024 6:38" "Kansola" "Testi kohde" "Testi tehtävä" "Tehtiin juttuja" "Lisätietoja antaa päällikkö" "Samu Salminen" "Panu Harjalainen")
{:otsikko "Suorittaja", :otsikkorivi-luokka "nakyma-otsikko", :sarakkeen-luokka "nakyma-valkoinen-solu", :leveys 0.5, :tyyppi :varillinen-teksti}
{:otsikko "Kuittaaja", :otsikkorivi-luokka "nakyma-otsikko", :sarakkeen-luokka "nakyma-valkoinen-solu", :leveys 0.8, :tyyppi :varillinen-teksti}]
[(list "19.2.2024 6:38" "Kansola" "Testi kohde" "Testi tehtävä" "Tehtiin juttuja" "Lisätietoja antaa päällikkö" "Samu Salminen" "Panu Harjalainen")
(list "19.2.2024 6:38" "Kansola" "Testi kohde" "Testi tehtävä" "Tehtiin juttuja" "Lisätietoja antaa päällikkö" "Tea Salminen" "Markus Harjalainen")
(list "19.2.2024 6:38" "Kansola" "Testi kohde" "Testi tehtävä" "Tehtiin juttuja" "Lisätietoja antaa päällikkö" "Santtu Salminen" "Paula Harjalainen")]]]))))

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
jarjestelma-fixture))

(def odotettu-raportti
[:raportti {:nimi "Kulut tehtäväryhmittäin"}
[:raportti {:nimi "Kulut tehtäväryhmittäin", :rajoita-pdf-rivimaara nil}
[:taulukko {:viimeinen-rivi-yhteenveto? true, :otsikko "Kulut tehtäväryhmittäin ajalla 01.12.2019 - 30.08.2020"}
[{:leveys 1, :otsikko "Tehtäväryhmä"} {:leveys 1, :fmt :raha, :otsikko "Hoitokauden alusta 01.10.2019-30.09.2020"} {:leveys 1, :fmt :raha, :otsikko "Jaksolla 01.12.2019-30.08.2020"}]
[(list "Talvihoito (A)" 6601.94M 3300.40M)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@
(is (vector? vastaus))
(is (= vastaus [:raportti
{:nimi "Laaduntarkastusraportti"
:orientaatio :landscape}
:orientaatio :landscape
:rajoita-pdf-rivimaara nil}
[:taulukko
{:otsikko "Oulun alueurakka 2005-2012, Laaduntarkastusraportti ajalta 01.10.2005 - 01.10.2006"
:sheet-nimi "Laaduntarkastusraportti"
Expand Down Expand Up @@ -112,7 +113,8 @@
(is (vector? vastaus))
(is (= vastaus [:raportti
{:nimi "Laaduntarkastusraportti"
:orientaatio :landscape}
:orientaatio :landscape
:rajoita-pdf-rivimaara nil}
[:taulukko
{:otsikko "Uusimaa, Laaduntarkastusraportti ajalta 01.10.2005 - 01.10.2006"
:sheet-nimi "Laaduntarkastusraportti"
Expand Down Expand Up @@ -161,7 +163,8 @@
(is (vector? vastaus))
(is (= vastaus [:raportti
{:nimi "Laaduntarkastusraportti"
:orientaatio :landscape}
:orientaatio :landscape
:rajoita-pdf-rivimaara nil}
[:taulukko
{:otsikko "KOKO MAA, Laaduntarkastusraportti ajalta 01.10.2005 - 01.10.2006"
:sheet-nimi "Laaduntarkastusraportti"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,8 @@

(is (= vastaus
[:raportti {:orientaatio :landscape
:nimi "Pudasjärven alueurakka 2007-2012, Suolatoteumat (kaikki pohjavesialueet) ajalta 01.10.2007 - 30.09.2008"}
:nimi "Pudasjärven alueurakka 2007-2012, Suolatoteumat (kaikki pohjavesialueet) ajalta 01.10.2007 - 30.09.2008"
:rajoita-pdf-rivimaara nil}
nil
[:taulukko {:otsikko "11615174-", :viimeinen-rivi-yhteenveto? true, :tyhja nil}
[{:leveys 3 :fmt :kokonaisluku :otsikko "Tie"}
Expand Down
Loading

0 comments on commit c689803

Please sign in to comment.