From a9e9d19a88cdadfc88c9d648843e9a7373295edf Mon Sep 17 00:00:00 2001 From: Daniel Quathamer Date: Sat, 16 Mar 2024 12:02:22 +0100 Subject: [PATCH] Neue Admin-Maske #4 --- src-modules/module/rpta/conf/rpta.xml | 149 +++++- .../module/rpta/masken/45000_felderinfo.unl | 7 +- .../rpta/masken/45000_masken_felder_bez.unl | 2 - .../module/rpta/masken/45000_maskeninfo.unl | 48 +- .../module/rpta/masken/45040_felderinfo.unl | 8 + .../rpta/masken/45040_maske_system_bez.unl | 1 + .../rpta/masken/45040_masken_felder_bez.unl | 8 + .../module/rpta/masken/45040_maskeninfo.unl | 121 +++++ .../rpta/masken/45040_sachgeb_maske_bez.unl | 1 + ...lumn_layout_sos_stud_astat_rsz_fuellen.sql | 256 ++++++++++ .../schluesseltabellen/rpta_column_type.unl | 1 + .../schluesseltabellen/rpta_format_code.unl | 3 + .../sachgebiete_fuellen.sql | 14 + .../sachgebiete_loeschen.sql | 3 + .../studierende_datenblatt_virtuell.sql | 449 ++++++++++++++++++ .../module/rpta/upgrade/rpta_upgrade_man.sql | 95 ++++ 16 files changed, 1117 insertions(+), 49 deletions(-) create mode 100644 src-modules/module/rpta/masken/45040_felderinfo.unl create mode 100644 src-modules/module/rpta/masken/45040_maske_system_bez.unl create mode 100644 src-modules/module/rpta/masken/45040_masken_felder_bez.unl create mode 100644 src-modules/module/rpta/masken/45040_maskeninfo.unl create mode 100644 src-modules/module/rpta/masken/45040_sachgeb_maske_bez.unl create mode 100644 src-modules/module/rpta/schluesseltabellen/rpta_column_layout_sos_stud_astat_rsz_fuellen.sql create mode 100644 src-modules/module/rpta/schluesseltabellen/rpta_format_code.unl create mode 100644 src-modules/module/rpta/schluesseltabellen/sachgebiete_fuellen.sql create mode 100644 src-modules/module/rpta/schluesseltabellen/sachgebiete_loeschen.sql create mode 100644 src-modules/module/rpta/schluesseltabellen/studierende_datenblatt_virtuell.sql create mode 100644 src-modules/module/rpta/upgrade/rpta_upgrade_man.sql diff --git a/src-modules/module/rpta/conf/rpta.xml b/src-modules/module/rpta/conf/rpta.xml index 941139c..60303e1 100644 --- a/src-modules/module/rpta/conf/rpta.xml +++ b/src-modules/module/rpta/conf/rpta.xml @@ -16,14 +16,13 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[RPTA]" /> - - - Physische Spalte/Logische Spalte/Lookup + + + Physische Spalte/Logische Spalte/Lookup Bei logischen Spalten/Lookup - - Bei String-Spalten + 0 = Auslieferung Erläuterungstext @@ -64,6 +63,30 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[RPTA]" /> + + + + Zahlen- oder Datumsformat + + + + + + + + +superx +superx +rpta_format_code +tid +1 +rpta_format_code_pk + + + + +
- + Erläuterungstext + + @@ -121,9 +146,15 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[RPTA]" /> Spalten zu Layouts - - - + + + + + Bei String-Spalten + Bei DECIMAL- und Datumsspalten + + + Erläuterungstext @@ -147,12 +178,12 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[RPTA]" /> - - - - + + + + + default="" notnull="true" description="Komponente"> @@ -167,7 +198,10 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[RPTA]" /> - + + + +
Abfragen zur Administration von Berichtsassistent $RPTA_PFAD/masken - + @@ -236,10 +270,15 @@ parent="Berichtsassistent">Abfragen zur Administration von Berichtsassistent -x + + + + @@ -258,7 +297,10 @@ x - + + + @@ -277,9 +319,16 @@ x - + + + + + + + + @@ -289,7 +338,16 @@ x + + + + + + + + + @@ -300,6 +358,8 @@ x + + @@ -327,6 +387,7 @@ x + @@ -348,20 +409,52 @@ mode="full"> + + + + + orderBy="sortnr" allowNew="true" + mode="full"> - + +
+In diesem Formular können Sie Spaltenlayouts verwalten. + +tid + + + + + + + + + + + + + +
+
+ @@ -445,7 +540,9 @@ mode="full"> + + diff --git a/src-modules/module/rpta/masken/45000_felderinfo.unl b/src-modules/module/rpta/masken/45000_felderinfo.unl index bd2a558..3064764 100644 --- a/src-modules/module/rpta/masken/45000_felderinfo.unl +++ b/src-modules/module/rpta/masken/45000_felderinfo.unl @@ -1,11 +1,9 @@ -45000^Spaltenlayout^3000^350^-1^140^180^1^char^30^1^1^<>SELECT \ - uniquename,\ +45000^Spaltenlayout^3000^350^-1^140^180^1^integer^30^1^1^<>SELECT tid,\ caption,\ resultset_id\ FROM rpta_column_layout \ order by 2\ - ;^^<>SELECT \ - uniquename,\ + ;^^<>SELECT tid,\ caption,\ resultset_id\ FROM rpta_column_layout \ @@ -15,7 +13,6 @@ order by 2\ 45002^Fächer^30^0^0^130^200^6^char^1000^0^12^<> select tid,name,sortnr from sichten where art='Fächer-Sicht' order by 3,2;^ ^ ^ 45003^Abschluss^40^0^0^100^200^3^char^1500^0^1^<> select apnr, druck from cifx where key=35 order by 2;^ ^ ^ 45004^bis Fachsemester^1000^300^-1^200^100^1^integer^30^0^0^^ ^ ^ -45005^Spaltenlayouts bearbeiten^110^0^0^140^80^1^char^255^0^18^ ^ ^<> select '../edit/rpta/rpta_column_layout_list.jsp' from xdummy;^ 45006^Hochschulzugangsberechtigung^120^300^-1^200^200^1^sql^30^0^1^hs_zugangsber^apnr, eintrag^ ^ 45007^Bis Semester^20^350^-1^140^80^1^integer^30^0^1^<> select tid, eintrag from semester order by tid DESC;^ ^<> select tid,eintrag from semester where today() between sem_beginn and sem_ende;^ 45008^Staatsangehörigkeit^150^0^0^140^150^10^char^30^0^12^<> select tid,name,sortnr from sichten where art='SOS-Staaten-Sicht' order by 3,2;^ ^ ^ diff --git a/src-modules/module/rpta/masken/45000_masken_felder_bez.unl b/src-modules/module/rpta/masken/45000_masken_felder_bez.unl index 8d3ee34..3a96575 100644 --- a/src-modules/module/rpta/masken/45000_masken_felder_bez.unl +++ b/src-modules/module/rpta/masken/45000_masken_felder_bez.unl @@ -3,13 +3,11 @@ 45000^45002^ 45000^45003^ 45000^45004^ -45000^45005^ 45000^45006^ 45000^45007^ 45000^45008^ 45000^45009^ 45000^45011^ 45000^45012^ -45000^45013^ 45000^45018^ 45000^45022^ diff --git a/src-modules/module/rpta/masken/45000_maskeninfo.unl b/src-modules/module/rpta/masken/45000_maskeninfo.unl index 671fb66..0a9153a 100644 --- a/src-modules/module/rpta/masken/45000_maskeninfo.unl +++ b/src-modules/module/rpta/masken/45000_maskeninfo.unl @@ -38,23 +38,25 @@ select L.uniquename,\ from rpta_resultset R, rpta_column_layout L\ where L.resultset_id=R.tid\ and R.uniquename='${basetable.name}'\ - and L.uniquename=<>;\ + and L.tid=<>;\ \ ]]>\ >\ +and L.tid=<>\ order by CL.sortnr\ ;\ ]]>\ @@ -75,6 +77,7 @@ order by CL.sortnr\ /* <#assign filter = filter + " and '' || ca12_staat in "+Staatsangehörigkeit.allNeededKeysList /> --<> */\ /* <#assign filter = filter + " and stg in "+Fächer.allNeededKeysList /> --<> */\ \ +<#if columns?has_content>\ \ <#if basetable.is_virtual==1>\ \ @@ -94,11 +97,13 @@ select \ --zuerst die Basisdaten:\ <#foreach column in columns>\ <#if column.coltype="physicalColumn">\ -${column.colname},\ +${column.srcfieldname},\ <#elseif column.coltype="logicalColumn">\ -${column.colfunction} as ${column.colname},\ +${column.colfunction} as ${column.targetfieldname},\ <#elseif column.coltype="lookupColumn">\ -(${column.colfunction}) as ${column.colname},\ +(${column.colfunction}) as ${column.targetfieldname},\ +<#elseif column.coltype="computedColumn">\ +null::decimal(19,6) as ${column.targetfieldname},\ \ \ null::char(1) as dummycol\ @@ -117,13 +122,13 @@ select \ <#foreach column in columns>\ <#if column.is_aggregate==0>\ <#assign groupby=groupby+1 />\ -${column.colname},\ +${column.targetfieldname},\ \ \ --dann die Aggregate:\ <#foreach column in columns>\ -<#if column.is_aggregate==1>\ -sum(${column.colname}) as ${column.colname},\ +<#if column.is_aggregate==1 && column.coltype!="computedColumn">\ +sum(${column.targetfieldname}) as ${column.targetfieldname},\ \ \ null::char(1) as dummycol\ @@ -139,7 +144,16 @@ group by\ \ select \ <#foreach column in columns>\ -${column.colname}\ +<#assign format_sql="" />\ +<#if column.format_sql?string != "">\ +<#assign format_sql=column.format_sql />\ +\ +\ +<#if column.coltype=="computedColumn">\ +(${column.colfunction})${format_sql} as ${column.targetfieldname}\ +<#else>\ +${column.targetfieldname}${format_sql}\ +\ <#if column_has_next>,\ \ from tmp_stud2\ @@ -154,7 +168,9 @@ drop table if exists ${basetable.runtime_tablename};\ \ \ \ -drop table if exists tmp_stud;^--Freemarker Template\ +drop table if exists tmp_stud;\ +\ + --wenn columns?has_content^--Freemarker Template\ XIL List\ sizable_columns horizontal_scrolling\ drop_and_delete movable_columns \ @@ -165,4 +181,4 @@ Column CID=0 heading_text="${column.caption}" center_heading explanation="${colu row_selectable heading_platform readonly\ width=${column.visible_width} text_size=60\ \ -@@@^Studienfach^Anzahl bzw. Anteil^Datenblatt Studierendenstatistik^drop table if exists tmp_stud2; drop table if exists tmp_stud3;^^2^850^540^^1^^ +@@@^Studienfach^Anzahl bzw. Anteil^Datenblatt Studierendenstatistik^drop table if exists tmp_stud2; drop table if exists tmp_stud3;^^2^850^540^^1^<>SELECT description FROM rpta_column_layout where tid=<>;^ diff --git a/src-modules/module/rpta/masken/45040_felderinfo.unl b/src-modules/module/rpta/masken/45040_felderinfo.unl new file mode 100644 index 0000000..e210282 --- /dev/null +++ b/src-modules/module/rpta/masken/45040_felderinfo.unl @@ -0,0 +1,8 @@ +45040^Benutzer/in^50^0^0^150^200^1^integer^200^0^1^<> select tid,nvl(name,benutzer) from userinfo order by 2;^hidden^^ +45041^Spaltenlayout^10^0^0^150^80^1^integer^200^0^1^<> select tid,caption from rpta_column_layout where 1=1 /* and resultset_id=<> */ order by 2;^^^ +45042^Spaltenlayouts verwalten^110^0^0^140^80^1^char^255^0^18^ ^ ^<> select '../edit/rpta/rpta_column_layout_list.jsp' from xdummy;^ +45043^Stichwort^20^0^0^150^150^1^sql^50^0^0^^^^ +45044^Komponente^1^0^0^150^200^1^integer^200^0^1^<> select tid,name from systeminfo order by 2;^ ^^ +45045^Virtuelle Tabellen bearbeiten^100^0^0^140^80^1^char^255^0^18^ ^ ^<> select '../edit/rpta/rpta_resultset_list.jsp' from xdummy;^ +45046^Virtuelle Tabelle^5^0^0^150^200^1^integer^200^0^1^<> select tid,caption from rpta_resultset where 1=1 /* and systeminfo_id=<> */ order by 2;^^^ +45047^Spaltentyp^200^0^0^150^200^1^integer^200^0^1^<> select tid,caption from rpta_column_type order by 2;^^ ^ diff --git a/src-modules/module/rpta/masken/45040_maske_system_bez.unl b/src-modules/module/rpta/masken/45040_maske_system_bez.unl new file mode 100644 index 0000000..0c7ed6e --- /dev/null +++ b/src-modules/module/rpta/masken/45040_maske_system_bez.unl @@ -0,0 +1 @@ +45040^330^ diff --git a/src-modules/module/rpta/masken/45040_masken_felder_bez.unl b/src-modules/module/rpta/masken/45040_masken_felder_bez.unl new file mode 100644 index 0000000..4a805ca --- /dev/null +++ b/src-modules/module/rpta/masken/45040_masken_felder_bez.unl @@ -0,0 +1,8 @@ +45040^45040^ +45040^45041^ +45040^45042^ +45040^45043^ +45040^45044^ +45040^45045^ +45040^45046^ +45040^45047^ diff --git a/src-modules/module/rpta/masken/45040_maskeninfo.unl b/src-modules/module/rpta/masken/45040_maskeninfo.unl new file mode 100644 index 0000000..ce0b220 --- /dev/null +++ b/src-modules/module/rpta/masken/45040_maskeninfo.unl @@ -0,0 +1,121 @@ +45040^Spalten und Spaltenlayouts verwalten^--Autor: D. Quathamer\ +--Datum: 15.3.2024\ +--freemarker template\ +create temp table tmp_rpta_column (\ +ord smallint,\ +tid INTEGER , \ +uniquename varchar(255),\ + caption varchar(255),\ + srcfieldname varchar(255),\ + column_type integer,\ + column_type_str varchar(255),\ + col_function text,\ + is_aggregate smallint,\ + resultset_id integer,\ + resultset_str varchar(255),\ + systeminfo_str varchar(255),\ + custom integer ,\ + description text,\ + targetfieldname varchar(255),\ +nextedit varchar(255)\ +);\ +insert into tmp_rpta_column (ord,\ + tid,\ + uniquename,\ + caption,\ + srcfieldname,\ + column_type_str,\ + col_function,\ + is_aggregate,\ + resultset_id,\ + custom,\ + description,\ + targetfieldname,\ + nextedit) \ +select 1 as ord,\ +C.tid,\ +C.uniquename,\ +C.caption,\ +C.srcfieldname,\ +T.caption as column_type,\ +C.col_function,\ +C.is_aggregate,\ +C.resultset_id,\ +C.custom,\ +C.description,\ +C.targetfieldname,\ + ('../edit/rpta/rpta_column_edit.jsp|tid=' || C.tid)::varchar(255)\ +FROM rpta_column C, rpta_column_type T\ +where T.tid=C.column_type\ +/* and C.resultset_id=<> */\ +/* and C.caption like '%<>%' */\ +/* and C.tid in (select P.column_id from rpta_column2layout P where P.layout_id=<> )*/\ +/* and C.resultset_id in (select R.tid from rpta_resultset R where R.systeminfo_id=<> )*/\ +/* and C.column_type=<> */\ +;\ +\ +\ +\ +update tmp_rpta_column set resultset_str=R.caption\ +from rpta_resultset R\ +where R.tid=tmp_rpta_column.resultset_id;\ +\ +\ +\ +insert into tmp_rpta_column (ord,\ +caption, \ + nextedit) \ +select 10, --ord\ +'Neuer Eintrag',\ +nvl(('../edit/qa/rpta_column_edit.jsp|tid=' || max(tid)+1)::varchar(255),'../edit/qa/rpta_column_edit.jsp'::varchar(255))\ +from rpta_column\ +;\ +\ +\ + \ +\ + \ +select \ +caption,\ +uniquename,\ +resultset_str,\ +srcfieldname,\ + column_type_str,\ +-- col_function,\ + is_aggregate,\ + custom,\ +-- description,\ +-- targetfieldname\ +nextedit \ +\ +from tmp_rpta_column\ +order by ord,caption ,uniquename\ +;^XIL List\ + drop_and_delete movable_columns sizable_columns horizontal_scrolling\ + white_space_color=COLOR_WHITE fixed_columns=2\ + min_heading_height=35\ +Column CID=0 heading_text="Name" center_heading\ + row_selectable col_selectable heading_platform readonly\ + width=50 text_size=100\ +Column CID=0 heading_text="Schlüssel" center_heading\ + row_selectable col_selectable heading_platform readonly\ + width=50 text_size=100\ +Column CID=1 heading_text="Virtuelle Tabelle" center_heading\ + row_selectable col_selectable heading_platform readonly\ + width=150 text_size=200\ +Column CID=1 heading_text="Quellfeld" center_heading\ + row_selectable col_selectable heading_platform readonly\ + width=10 text_size=200\ +Column CID=1 heading_text="Spaltentyp" center_heading\ + row_selectable col_selectable heading_platform readonly\ + width=5 text_size=200\ +Column CID=1 heading_text="Ist Aggregat?" center_heading\ + row_selectable col_selectable heading_platform readonly\ + width=5 text_size=200\ +Column CID=1 heading_text="Individuelle Spalte" center_heading\ + row_selectable col_selectable heading_platform readonly\ + width=5 text_size=200\ +Column CID=1 heading_text="Bearbeiten" center_heading\ + row_selectable col_selectable heading_platform readonly\ + width=5 text_size=200\ +@@@^^^Spaltendefinitionen und deren Zuordnung zu Berichten verwalten.^drop table tmp_rpta_column;^^1^440^360^0^1^^ diff --git a/src-modules/module/rpta/masken/45040_sachgeb_maske_bez.unl b/src-modules/module/rpta/masken/45040_sachgeb_maske_bez.unl new file mode 100644 index 0000000..783e78e --- /dev/null +++ b/src-modules/module/rpta/masken/45040_sachgeb_maske_bez.unl @@ -0,0 +1 @@ +331^45040^ diff --git a/src-modules/module/rpta/schluesseltabellen/rpta_column_layout_sos_stud_astat_rsz_fuellen.sql b/src-modules/module/rpta/schluesseltabellen/rpta_column_layout_sos_stud_astat_rsz_fuellen.sql new file mode 100644 index 0000000..c35d9ea --- /dev/null +++ b/src-modules/module/rpta/schluesseltabellen/rpta_column_layout_sos_stud_astat_rsz_fuellen.sql @@ -0,0 +1,256 @@ +--freemarker template + + +select count(*) from rpta_resultset where uniquename='sos_stud_astat'; + + +<#assign rpta_column_layout = {"uniquename":"sos_stud_astat_rsz", +"caption":"MKW-Abfrage_Studierende_RSZ", +"rpta_resultset":"sos_stud_astat", +"whereclause":"fach_sem_zahl <= dim_studiengang_regel and dim_studiengang_regel between 1 and 20 and studiengang_nr <=2 and fach_nr <=4", +"description":"Fachbelegungen: 1. & 2. Studiengang; 1.-4. Fach; nur Studiengänge mit Angabe einer Regelstudienzeit" +} + /> + +<#assign rpta_columns = [ +{"uniquename":"sos_k_stort_astat", +"caption":"Hochschulnummer Statistik", +"srcfieldname":"sos_k_stort_astat", +"column_type":"physicalColumn", +"col_function":"", +"is_visible":"1", +"visible_size":"10", +"is_aggregate":"0", +"description":"Amtliche Standortnummer" +}, +{"uniquename":"dim_studiengang_stg_astat", +"caption":"HSF-Schlüssel", +"srcfieldname":"dim_studiengang_stg_astat", +"column_type":"physicalColumn", +"col_function":"", +"is_visible":"1", +"visible_size":"10", +"is_aggregate":"0", +"description":"Amtliches Fach" +}, +{"uniquename":"sos_k_stufrm_astat", +"caption":"Art des Studiums", +"srcfieldname":"sos_k_stufrm_astat", +"column_type":"physicalColumn", +"col_function":"", +"is_visible":"1", +"visible_size":"10", +"is_aggregate":"0", +"description":"Amtliche Studienform" +}, +{"uniquename":"dim_studiengang_abschluss_astat", +"caption":"Abschlussschlüssel Statistik NRW", +"srcfieldname":"dim_studiengang_abschluss_astat", +"column_type":"physicalColumn", +"col_function":"", +"is_visible":"1", +"visible_size":"10", +"is_aggregate":"0", +"description":"Amtlicher Abschluss" +}, +{"uniquename":"sos_k_stutyp_astat", +"caption":"Vollzeit / Teilzeit / ausbildungsintegriert / praxisintegriert / berufsintegriert", +"srcfieldname":"sos_k_stutyp_astat", +"column_type":"physicalColumn", +"col_function":"", +"is_visible":"1", +"visible_size":"10", +"is_aggregate":"0", +"description":"Amtlicher Studiumstyp" +}, +{"uniquename":"dim_studiengang_regel", +"caption":"Angabe der Regelstudienzeit", +"srcfieldname":"dim_studiengang_regel", +"column_type":"physicalColumn", +"col_function":"", +"is_visible":"1", +"visible_size":"10", +"is_aggregate":"0", +"description":"Regelstudienzeit in Semestern" +}, +{"uniquename":"summe", +"caption":"Anzahl der Studierenden in der Regelstudienzeit", +"srcfieldname":"summe", +"column_type":"physicalColumn", +"col_function":"sum", +"is_visible":"1", +"visible_size":"5", +"is_aggregate":"1", +"description":"Summe der Studierenden mit Fachsemester kleiner oder gleich der Regelstudienzeit" +} +] + /> + + ---ab hier nicht mehr ändern: + +CREATE temp TABLE tmp_rpta_column +( + uniquename varchar(255) NOT NULL, + caption varchar(255), + srcfieldname varchar(255), + targetfieldname varchar(255), + column_type integer, + col_function text, + is_visible smallint, + visible_size smallint, + is_aggregate smallint, + resultset_id integer, + sortnr integer, + description TEXT +); + +CREATE temp TABLE tmp_rpta_column_layout +( + uniquename varchar(255) NOT NULL, + caption varchar(255), + resultset_id integer, + whereclause text, + description text +); + +insert into tmp_rpta_column_layout( +resultset_id, +uniquename, +caption, +whereclause, + description +) +select tid, +'${rpta_column_layout.uniquename}', +'${rpta_column_layout.caption}', +'${rpta_column_layout.whereclause}', +'${rpta_column_layout.description}' +FROM rpta_resultset +where uniquename='${rpta_column_layout.rpta_resultset}'; + +<#assign sortnr=0 /> +<#foreach column in rpta_columns> +<#assign sortnr=sortnr +1 /> + +INSERT INTO tmp_rpta_column +(resultset_id, + uniquename, + caption, + srcfieldname, + targetfieldname, + column_type, + col_function, + is_visible, + visible_size, + is_aggregate, + sortnr, + description + ) +select R.tid, +'${column.uniquename}', +'${column.caption}', +'${column.srcfieldname}', +<#if !column.targetfieldname?exists || column.targetfieldname=="">null::varchar <#else>'${column.targetfieldname}' , +T.tid as column_type, +'${column.col_function}', +${column.is_visible}, +${column.visible_size}, +${column.is_aggregate}, +${sortnr*10}, +'${column.description}' +FROM rpta_resultset R, rpta_column_type T +where R.uniquename='${rpta_column_layout.rpta_resultset}' +and T.uniquename='${column.column_type}'; + + + + + +delete from rpta_column2layout +where layout_id in (select L.tid +from rpta_column_layout L,rpta_resultset R +where R.tid=L.resultset_id +and R.uniquename='${rpta_column_layout.rpta_resultset}' +and L.uniquename='${rpta_column_layout.uniquename}' +) +; + +delete from rpta_column_layout +where resultset_id in (select tid +FROM rpta_resultset +where uniquename='${rpta_column_layout.rpta_resultset}') +and uniquename in (select uniquename from tmp_rpta_column_layout) +; + +insert into rpta_column_layout +(uniquename, + caption, + resultset_id, + whereclause, + description) + select uniquename, + caption, + resultset_id, + whereclause, + description +FROM tmp_rpta_column_layout; + + +select * into temp tmp_rpta_column2 from rpta_column ; + +INSERT INTO rpta_column +(resultset_id, + uniquename, + caption, + srcfieldname, + targetfieldname, + column_type, + col_function, + is_aggregate, + description, + custom + ) + select +resultset_id, + uniquename, + caption, + srcfieldname, + targetfieldname, + column_type, + col_function, + is_aggregate, + description, + 0 as custom +from tmp_rpta_column +where (resultset_id,uniquename) not in +(select T.resultset_id,T.uniquename +from tmp_rpta_column2 T) +; + +drop table tmp_rpta_column2; + +insert into rpta_column2layout(column_id, + layout_id, + sortnr, + is_visible, + visible_size, + caption, + description) +select C.tid as column_id, + L.tid as layout_id, + T.sortnr, + T.is_visible, + T.visible_size, + T.caption, + T.description +FROM rpta_column C, rpta_column_layout L, tmp_rpta_column T +where C.uniquename=T.uniquename +and C.resultset_id=T.resultset_id +and L.uniquename='${rpta_column_layout.uniquename}' +and L.resultset_id=T.resultset_id + ; +drop table tmp_rpta_column; +drop TABLE tmp_rpta_column_layout; + + + diff --git a/src-modules/module/rpta/schluesseltabellen/rpta_column_type.unl b/src-modules/module/rpta/schluesseltabellen/rpta_column_type.unl index cefb820..6d0f896 100644 --- a/src-modules/module/rpta/schluesseltabellen/rpta_column_type.unl +++ b/src-modules/module/rpta/schluesseltabellen/rpta_column_type.unl @@ -1,3 +1,4 @@ 1^physicalColumn^Physische Spalte^ 2^logicalColumn^Logische Spalte^ 3^lookupColumn^Lookup-Spalte^ +4^computedColumn^Berechnete Spalte^ diff --git a/src-modules/module/rpta/schluesseltabellen/rpta_format_code.unl b/src-modules/module/rpta/schluesseltabellen/rpta_format_code.unl new file mode 100644 index 0000000..7f73700 --- /dev/null +++ b/src-modules/module/rpta/schluesseltabellen/rpta_format_code.unl @@ -0,0 +1,3 @@ +1^INTEGER^Ganzzahlig^::integer^ +2^INT_NO_SEP^Ganzzahlig ohne 1000er Trenner^::varchar^ +3^INT_PERCENT^Ganzzahlig %^::integer || ' %'^ diff --git a/src-modules/module/rpta/schluesseltabellen/sachgebiete_fuellen.sql b/src-modules/module/rpta/schluesseltabellen/sachgebiete_fuellen.sql new file mode 100644 index 0000000..45bbc32 --- /dev/null +++ b/src-modules/module/rpta/schluesseltabellen/sachgebiete_fuellen.sql @@ -0,0 +1,14 @@ +--Das Sachgebiet 331 (RPTA Administr.) wird installiert + + +delete from sachgebiete where tid in (331); +insert into sachgebiete(tid,name) values (331,'Qualitätssicherung Administr.'); + +delete from group_sachgeb_bez where sachgebiete_id in (330,331) +and groupinfo_id in (select G.tid from groupinfo G where G.name='Administratoren' or G.name='superx') ; + +insert into group_sachgeb_bez +select G.tid,330 from groupinfo G where G.name='Administratoren' or G.name='superx'; +insert into group_sachgeb_bez +select G.tid,331 from groupinfo G where G.name='Administratoren' or G.name='superx'; + diff --git a/src-modules/module/rpta/schluesseltabellen/sachgebiete_loeschen.sql b/src-modules/module/rpta/schluesseltabellen/sachgebiete_loeschen.sql new file mode 100644 index 0000000..1e1acdc --- /dev/null +++ b/src-modules/module/rpta/schluesseltabellen/sachgebiete_loeschen.sql @@ -0,0 +1,3 @@ +delete from sachgebiete where tid in (330,331); +delete from group_sachgeb_bez where sachgebiete_id in (330,331); +delete from user_sachgeb_bez where sachgebiete_id in (330,331); diff --git a/src-modules/module/rpta/schluesseltabellen/studierende_datenblatt_virtuell.sql b/src-modules/module/rpta/schluesseltabellen/studierende_datenblatt_virtuell.sql new file mode 100644 index 0000000..436652f --- /dev/null +++ b/src-modules/module/rpta/schluesseltabellen/studierende_datenblatt_virtuell.sql @@ -0,0 +1,449 @@ +--freemarker template + + +select sp_table_exists('sos_stg_aggr') from xdummy; + + +select name + from sx_tables where name ='sos_stg_aggr' + + + +select 1::smallint as sortnr, +name, trim(name) ||'_' as prefix, +caption, +'dim_studiengang.tid=sos_stg_aggr.tid_stg' as joinclause + from sx_tables where name in ('dim_studiengang') +union +select 10::smallint as sortnr, +name, trim(name) ||'_' as prefix, +caption, +'dim_studiengang.stort=sos_k_stort.apnr' as joinclause + from sx_tables where name in ('sos_k_stort') +union +select 20::smallint as sortnr, +name, trim(name) ||'_' as prefix, +caption, +'sos_stg_aggr.stutyp=sos_k_stutyp.apnr' as joinclause + from sx_tables where name in ('sos_k_stutyp') +union +select 30::smallint as sortnr, +name, trim(name) ||'_' as prefix, +caption, +'sos_stg_aggr.stuart=sos_k_stuart.apnr' as joinclause + from sx_tables where name in ('sos_k_stuart') +union +select 40::smallint as sortnr, +name, trim(name) ||'_' as prefix, +caption, +'sos_stg_aggr.stufrm=sos_k_stufrm.apnr' as joinclause + from sx_tables where name in ('sos_k_stufrm') +union +select 50::smallint as sortnr, +name, trim(name) ||'_' as prefix, +caption, +'sos_stg_aggr.hrst=sos_k_hrst.apnr' as joinclause + from sx_tables where name in ('sos_k_hrst') +order by 1 + + + union + select tid,table_name, + name, + '${added_table.prefix}' || name as targetname + from sx_fields where table_name ='${added_table.name}' + and currentlyused=1 + + + order by 1 + +]]> + + + +<#if sos_stg_aggr_exists==1> + +<#assign fact_table_target = {"name":"sos_stud_astat", "caption":"Studierende (intern und amtlich)"} + /> + + +CREATE temp table tmp_tables( +name CHAR(255) , +caption CHAR(255) , +description CHAR(255) , +table_type CHAR(255) , +systeminfo_id INTEGER , +systeminfo_orig INTEGER , +thema CHAR(255) , +sachgebiete_id CHAR(255) +); +CREATE temp TABLE tmp_fields( +tid serial NOT NULL, +table_name VARCHAR(255) not null, +name VARCHAR(255) not null, +caption VARCHAR(255) , +description VARCHAR(255) , +field_type VARCHAR(255) not null, +field_size VARCHAR(255) , +field_not_null smallint, +currentlyused SMALLINT , +is_primarykey SMALLINT default 0 , +foreignkey_tab VARCHAR(255) , +foreignkey_col VARCHAR(255) , +foreignkey_int VARCHAR(255) , +foreignkey_cap VARCHAR(255) , +foreignkey_cond VARCHAR(255) , +foreignkey_func VARCHAR(255) , +check_integrity SMALLINT, +is_sum SMALLINT default 1, +foreignkey_uniquename VARCHAR(255) + +); + + +--Vorbereitung: +UPDATE sx_tables + SET caption = 'Standorte' +WHERE name='sos_k_stort'; +UPDATE sx_tables + SET caption = 'Studienart' +WHERE name = 'sos_k_stuart'; +UPDATE sx_tables + SET caption = 'Studiumstyp' +WHERE name = 'sos_k_stutyp'; +UPDATE sx_tables + SET caption = 'Studienform' +WHERE name = 'sos_k_stufrm'; +UPDATE sx_tables + SET caption = 'Hörerstatus' +WHERE name = 'sos_k_hrst'; + + + +--drop view if exists sos_stud_astat; + + +drop VIEW sos_k_stutyp; + +CREATE VIEW sos_k_stutyp +( + apnr, + druck, + astat +) +AS + SELECT cifx.apnr, + cifx.druck, + astat + FROM cifx + WHERE cifx.key = 40; + + +update sx_fields set + is_sum=0 + where table_name='sos_stg_aggr' + and name!='summe'; +update sx_fields set + is_sum=1 + where table_name='sos_stg_aggr' + and name='summe'; + + +insert into tmp_tables ( +name, +caption, +description, +table_type, +systeminfo_id, +thema, +sachgebiete_id +) +select +'${fact_table_target.name}', +'${fact_table_target.caption}', +description, +table_type, +systeminfo_id, +thema, +sachgebiete_id +from sx_tables where name='${fact_table_source.name}' +; + + +insert into tmp_fields (table_name, + name, + caption, + description, + field_type, + field_size, + field_not_null, + currentlyused, + is_primarykey, + foreignkey_tab, + foreignkey_col, + foreignkey_int, + foreignkey_cap, + foreignkey_cond, + foreignkey_func, + check_integrity, + is_sum, + foreignkey_uniquename) +select '${fact_table_target.name}' as table_name, + name, + caption, + description, + field_type, + field_size, + field_not_null, + currentlyused, + is_primarykey, + foreignkey_tab, + foreignkey_col, + foreignkey_int, + foreignkey_cap, + foreignkey_cond, + foreignkey_func, + check_integrity, + is_sum, + foreignkey_uniquename + from sx_fields where table_name ='${fact_table_source.name}' + and currentlyused=1; +<#foreach added_table in added_tables> +insert into tmp_fields (table_name, + name, + caption, + description, + field_type, + field_size, + field_not_null, + currentlyused, + is_primarykey, + foreignkey_tab, + foreignkey_col, + foreignkey_int, + foreignkey_cap, + foreignkey_cond, + foreignkey_func, + check_integrity, + is_sum, + foreignkey_uniquename) +select '${fact_table_target.name}' as table_name, + '${added_table.prefix}' || name, + '${added_table.caption}: ' || caption, + description, + field_type, + field_size, + field_not_null, + currentlyused, + is_primarykey, + foreignkey_tab, + foreignkey_col, + foreignkey_int, + foreignkey_cap, + foreignkey_cond, + foreignkey_func, + check_integrity, + is_sum, + foreignkey_uniquename + from sx_fields where table_name ='${added_table.name}' + and currentlyused=1; + + +CREATE temp TABLE tmp_rpta_resultset +( + caption varchar(255), + uniquename varchar(255), + fieldclause text, + joinclause text, + whereclause text, + systeminfo_id integer +); + +insert into tmp_rpta_resultset(caption, + uniquename, + systeminfo_id) + select '${fact_table_target.caption}', + '${fact_table_target.name}', + 7 +; + + +update tmp_rpta_resultset set fieldclause=' +<#foreach field_target in fields_target> +${field_target.table_name}.${field_target.name} as ${field_target.targetname}, + +null::varchar as dummy', +joinclause='${fact_table_source.name} +<#foreach added_table in added_tables> +left outer join ${added_table.name} on (${added_table.joinclause}) +'; + +select * into temp tmp_rs1 +from rpta_resultset +; + +update rpta_resultset set caption=T.caption, + fieldclause=T.fieldclause, + joinclause=T.joinclause, + whereclause=T.whereclause + from tmp_rpta_resultset T + where T.systeminfo_id=rpta_resultset.systeminfo_id + and T.uniquename=rpta_resultset.uniquename + ; + +insert into rpta_resultset(caption, + uniquename, + fieldclause, + joinclause, + whereclause, + systeminfo_id) +select caption, + uniquename, + fieldclause, + joinclause, + whereclause, + systeminfo_id + from tmp_rpta_resultset + where 0=(select count(*) + from tmp_rs1 T + where T.systeminfo_id=tmp_rpta_resultset.systeminfo_id + and T.uniquename=tmp_rpta_resultset.uniquename) + ; +drop table tmp_rpta_resultset; +drop table tmp_rs1; + +delete from sx_tables where name +in (select T.name from tmp_tables T); + +insert into sx_tables (name,caption,description,table_type,systeminfo_id,systeminfo_orig,thema,sachgebiete_id) +select name,caption,description,table_type,systeminfo_id,systeminfo_orig,thema,sachgebiete_id +from tmp_tables; + + +delete from sx_fields where table_name +in (select T.table_name from tmp_fields T); + +insert into sx_fields (table_name,name,caption,description,field_type, +field_size, +field_not_null, +currentlyUsed, +foreignkey_tab, +foreignkey_col, +foreignkey_cap, +foreignkey_int, +foreignkey_cond, +foreignkey_func, +check_integrity, +is_sum, +foreignkey_uniquename +) +select +F.table_name,F.name,F.caption,F.description,F.field_type, +F.field_size, +F.field_not_null, +F.currentlyUsed, +F.foreignkey_tab, +F.foreignkey_col, +F.foreignkey_cap, +F.foreignkey_int, +F.foreignkey_cond, +F.foreignkey_func, +F.check_integrity, +F.is_sum, +F.foreignkey_uniquename + +from tmp_fields F; + + +drop table tmp_fields; +drop table tmp_tables; + + +--rpta_column füllen: +select * into temp tmp_rc1 +from rpta_column; + + +create temp table tmp_rpta_column( + uniquename varchar(255) NOT NULL, + caption varchar(255), + srcfieldname varchar(255), + column_type integer, + col_function text, + is_aggregate smallint, + resultset_id integer, + description text, + custom integer default 0 + ); + +insert into tmp_rpta_column( uniquename, + caption, + srcfieldname, + column_type, + col_function, + is_aggregate, + resultset_id, + description) + select F.name as uniquename, + F.caption, + F.name as srcfieldname, + 1 as column_type, + (case when F.is_sum=1 then 'sum' else null::varchar end) as col_function, + (case when F.is_sum=1 then 1 else 0 end) as is_aggregate, + R.tid as resultset_id, + F.description +from sx_fields F, rpta_resultset R +where F.table_name='${fact_table_target.name}' +and R.uniquename='${fact_table_target.name}' +and F.currentlyused=1 +; + +update rpta_column set + caption=T.caption, + srcfieldname=T.srcfieldname, + column_type=T.column_type, + col_function=T.col_function, + is_aggregate=T.is_aggregate, + resultset_id=R.tid, + description=T.description, + custom=T.custom + from tmp_rpta_column T, rpta_resultset R +where T.uniquename=rpta_column.uniquename +and rpta_column.resultset_id=R.tid +and R.uniquename='${fact_table_target.name}' +; +insert into rpta_column( uniquename, + caption, + srcfieldname, + column_type, + col_function, + is_aggregate, + resultset_id, + description, + custom) +select T.uniquename, +T.caption, +T.srcfieldname, +T.column_type, +T.col_function, +T.is_aggregate, +R.tid as resultset_id, +T.description, +T.custom + from tmp_rpta_column T, rpta_resultset R + where R.uniquename='${fact_table_target.name}' + and 0=(select count(*) from tmp_rc1 C + where C.uniquename=T.uniquename + and C.resultset_id=R.tid) + ; + +drop table tmp_rpta_column; +drop table tmp_rc1; + + --wenn sos_stg_aggr_exists=1 diff --git a/src-modules/module/rpta/upgrade/rpta_upgrade_man.sql b/src-modules/module/rpta/upgrade/rpta_upgrade_man.sql new file mode 100644 index 0000000..5380d4f --- /dev/null +++ b/src-modules/module/rpta/upgrade/rpta_upgrade_man.sql @@ -0,0 +1,95 @@ + +--Freemarker Template +<#if '${SQLdialect}'='Postgres' > + +alter table rpta_resultset alter column fieldclause type text; +alter table rpta_resultset alter column joinclause type text; +alter table rpta_resultset alter column whereclause type text; + + + +--update current sos module to most recent version: + +update sx_fields set is_sum=0 +where table_name in ('dim_studiengang','sos_stg_aggr','sos_k_stort','sos_k_stuart','sos_k_stutyp','sos_k_stufrm') +and name !='summe'; + + +UPDATE sx_tables + SET caption = 'Standorte' +WHERE name='sos_k_stort'; +UPDATE sx_tables + SET caption = 'Studienart' +WHERE name = 'sos_k_stuart'; +UPDATE sx_tables + SET caption = 'Studiumstyp' +WHERE name = 'sos_k_stutyp'; +UPDATE sx_tables + SET caption = 'Studienform' +WHERE name = 'sos_k_stufrm'; + + + +CREATE OR REPLACE VIEW sos_k_stutyp +( + apnr, + druck, + astat +) +AS + SELECT cifx.apnr, + cifx.druck, + astat + FROM cifx + WHERE cifx.key = 40; + + select * into temp tmp_sos_k_stutyp_astat + from sx_fields where table_name='sos_k_stutyp' + and name='astat'; + + INSERT INTO sx_fields +( + table_name, + name, + caption, + description, + field_type, + field_size, + field_not_null, + currentlyused, + is_primarykey, + foreignkey_tab, + foreignkey_col, + foreignkey_int, + foreignkey_cap, + foreignkey_cond, + foreignkey_func, + check_integrity, + is_sum, + foreignkey_uniquename +) +select + 'sos_k_stutyp', + 'astat', + 'astat', + '', + 'CHAR', + '150', + 0, + 1, + 0, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + 0, + 1, + NULL + from xdummy + where 0=(select count(*) + from tmp_sos_k_stutyp_astat); + + drop table tmp_sos_k_stutyp_astat; +