From 8bf054eacad66a69c3ea6c3ccc1f97f86bbe1df0 Mon Sep 17 00:00:00 2001 From: Marlies Winterstein Date: Fri, 12 Jan 2024 10:41:49 +0100 Subject: [PATCH] =?UTF-8?q?Maske=2047030=20als=20Kopie=20von=2021000,=20De?= =?UTF-8?q?finition=20von=20W=C3=BCrfel,=20Restrictions,=20Dimension=20Ges?= =?UTF-8?q?chlecht?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/sxc/masken/47030_felderinfo.unl | 31 ++ .../sxc/masken/47030_maske_system_bez.unl | 1 + .../sxc/masken/47030_masken_felder_bez.unl | 30 ++ .../module/sxc/masken/47030_maskeninfo.unl | 435 ++++++++++++++++++ .../sxc/masken/47030_sachgeb_maske_bez.unl | 1 + .../schluesseltabellen/sichten_fuellen.sql | 155 +++++++ .../schluesseltabellen/xcube_dims_install.sql | 19 + .../xcube_dims_install_sic.sql | 262 +++++++++++ .../sxc/schluesseltabellen/xcube_install.sql | 84 ++++ 9 files changed, 1018 insertions(+) create mode 100644 src-modules/module/sxc/masken/47030_felderinfo.unl create mode 100644 src-modules/module/sxc/masken/47030_maske_system_bez.unl create mode 100644 src-modules/module/sxc/masken/47030_masken_felder_bez.unl create mode 100644 src-modules/module/sxc/masken/47030_maskeninfo.unl create mode 100644 src-modules/module/sxc/masken/47030_sachgeb_maske_bez.unl create mode 100644 src-modules/module/sxc/schluesseltabellen/sichten_fuellen.sql create mode 100644 src-modules/module/sxc/schluesseltabellen/xcube_dims_install.sql create mode 100644 src-modules/module/sxc/schluesseltabellen/xcube_dims_install_sic.sql create mode 100644 src-modules/module/sxc/schluesseltabellen/xcube_install.sql diff --git a/src-modules/module/sxc/masken/47030_felderinfo.unl b/src-modules/module/sxc/masken/47030_felderinfo.unl new file mode 100644 index 0000000..a1d1325 --- /dev/null +++ b/src-modules/module/sxc/masken/47030_felderinfo.unl @@ -0,0 +1,31 @@ +47030^Hochschule^0^0^0^100^150^1^char^30^0^12^<> select tid, type, name,sortnr from sichten where art in('KENN-Kostenstellen-Sicht','KENN-Hochschulen-Sicht') order by sortnr, name;^^ ^ +47031^Seit Semester^1^0^0^130^80^1^integer^30^0^1^<> select tid,druck from kenn_semester order by tid DESC;^^<> select tid,druck from kenn_semester where today() between sem_beginn and sem_ende;^ +47032^Bis Semester^3^330^-1^130^100^1^integer^30^0^1^<> select tid,druck from kenn_semester order by tid DESC;^ ^<> select tid,druck from kenn_semester where today() between sem_beginn and sem_ende;^ +47041^Geschlecht^37^0^0^140^80^1^char^30^0^1^<> select apnr, name from xcube_dims where id='auspraegung_code_3' order by 1^^^ +47042^Felder^125^0^0^150^190^10^char^30^0^999^<>\ +--freemarker template\ + select trim(F.table_name) || '.' || F.name,trim(T.caption) || ':' || trim(F.caption) || ' - ' || trim(F.name) from sx_fields F,\ + sx_tables T where F.table_name=T.name and F.currentlyused=1\ + --Pseudonyme eingeschaltet:\ + and (F.name != 'matrikel_nr' or 0=(select \ +count(*) from konstanten where beschreibung='SOS_MTKNR_EXT'\ +and apnr=1)) \ +<#if <>='tabelle_html_datenblatt.xsl'>\ + and (F.table_name ='sos_stg_aggr'\ + /* or F.table_name in (<>) */) \ +<#else>\ +and trim(F.table_name) || '.' || F.name in (select trim(tablename)||'.'||trim(fieldname) from stylesheet_field where stylesheet_id in \ +(select tid from sx_stylesheets where filename=<>))\ +\ + order by 2;^^^ +47044^Schlüssel anzeigen^150^0^0^100^100^1^integer^30^1^999^<> select 1,'Ja' from xdummy union select 0,'Nein' from xdummy^^<> select 1,'Ja' from xdummy^ +47045^Ansicht in Ergebniszeilen^121^0^0^100^200^1^char^200^1^1^<> select name,caption from xcube_dimconfig where maskeninfo_id=${Maskennummer} and is_rowdim=1 order by 2^^<> select name,caption from xcube_dimconfig where maskeninfo_id=${Maskennummer} and is_rowdefault=1^ +47046^Ansicht in Ergebnisspalten^2001^0^0^100^150^1^char^200^1^1^<> select name,caption from xcube_dimconfig where maskeninfo_id=${Maskennummer} and is_coldim=1 order by 2^^<> select name,caption from xcube_dimconfig where maskeninfo_id=${Maskennummer} and is_coldefault=1^ +47049^Leere Zeilen ausblenden^130^350^-1^140^80^1^char^30^0^1^<> select 'ja','ja' from xdummy union select 'nein','nein' from xdummy^ ^<> select 'ja','ja' from xdummy^ +47050^Leere Spalten ausblenden^2020^0^0^100^100^1^char^30^0^1^<> select 'ja','ja' from xdummy union select 'nein','nein' from xdummy^^<> select 'ja','ja' from xdummy^ +47052^Kennzahl^3000^350^-1^150^180^1^integer^200^1^1^<> select tid,name from xcube_kennzahl where maskeninfo_id=${Maskennummer} order by sortnr,name;^hidden^<> select tid,name from xcube_kennzahl where maskeninfo_id=${Maskennummer} and is_default=1^ +47053^2.Ansicht in Zeilen^125^0^0^100^100^1^char^50^0^999^<> select name,caption from xcube_dimconfig where maskeninfo_id=${Maskennummer} and is_secondrowdim=1 order by 1^hidden^1^ +47058^Spaltenvisualisierung^10000^0^0^140^80^1^char^30^0^1^<> select '_graph','Balken (horiz. linksb.)' from xdummy\ +union select '_graphbarright','Balken (horiz. rechtsb.)' from xdummy\ +union select '_graphbaralternating','Balken (horiz. rechtsb./linksb.)' from xdummy^^^ +47059^Zeilenfilter bis Ebene^140^0^0^140^80^1^integer^30^0^0^ ^^^ diff --git a/src-modules/module/sxc/masken/47030_maske_system_bez.unl b/src-modules/module/sxc/masken/47030_maske_system_bez.unl new file mode 100644 index 0000000..10e607e --- /dev/null +++ b/src-modules/module/sxc/masken/47030_maske_system_bez.unl @@ -0,0 +1 @@ +47030^360^ diff --git a/src-modules/module/sxc/masken/47030_masken_felder_bez.unl b/src-modules/module/sxc/masken/47030_masken_felder_bez.unl new file mode 100644 index 0000000..3ab8b77 --- /dev/null +++ b/src-modules/module/sxc/masken/47030_masken_felder_bez.unl @@ -0,0 +1,30 @@ +47030^47030^ +47030^47031^ +47030^47032^ +47030^47033^ +47030^47034^ +47030^47035^ +47030^47036^ +47030^47037^ +47030^47038^ +47030^47039^ +47030^47040^ +47030^47041^ +47030^47042^ +47030^47043^ +47030^47044^ +47030^47045^ +47030^47046^ +47030^47047^ +47030^47048^ +47030^47049^ +47030^47050^ +47030^47051^ +47030^47052^ +47030^47053^ +47030^47054^ +47030^47055^ +47030^47056^ +47030^47057^ +47030^47058^ +47030^47059^ diff --git a/src-modules/module/sxc/masken/47030_maskeninfo.unl b/src-modules/module/sxc/masken/47030_maskeninfo.unl new file mode 100644 index 0000000..4af5ef3 --- /dev/null +++ b/src-modules/module/sxc/masken/47030_maskeninfo.unl @@ -0,0 +1,435 @@ +47030^Kreuztabelle Studierende nach Geschlecht und Nationalität^--freemarker template\ +-- Maskenfelder -Leere Zeilen ausblenden, leere SPalten ausblenden?\ +\ +select table_name from xcube where maskeninfo_id=${Maskennummer}\ +select aggrfunction from xcube_kennzahl where maskeninfo_id=${Maskennummer} and tid=<>\ +select nvl(restriction,''::char(1)) from xcube_kennzahl \ +where maskeninfo_id=${Maskennummer} and tid=<>\ +\ +select nvl(datatype,'decimal(17,2)'::varchar(30)) from xcube_kennzahl \ +where maskeninfo_id=${Maskennummer} and tid=<>\ +--benoetigt falls Kennzahlen in Zeilen oder Spalten\ +select apnr,aggrfunction,\ +nvl(restriction,''::char(1)) as restriction \ +from xcube_kennzahl where maskeninfo_id=${Maskennummer}\ +select restriction from xcube where maskeninfo_id=<>]]>\ +>]]>\ +\ +\ +select distinct ${coldef.foreignkey_col}::varchar(255) as apnr,\ +${coldef.foreignkey_cap} as name,\ +1::smallint as detailgesamtsort,\ +${coldef.sortfield} as tmp_sortfield\ +from ${coldef.foreignkey_tab} where \ +1=1 \ +<#if coldef.foreignkey_cond!=''> and ${coldef.foreignkey_cond} \ + --{coldef.specific_restriction} \ +--ausblenden von Spalten, die gar nicht in konkretem Teilergebnis vorkommen, geht derzeit nicht für virtuelle Spalten und nachbearbeitung, -> Kernmodul\ +<#if coldef.is_virtual?number=0&&coldef.attrib_nachbearbeitung=''&&"<>"="'ja'">\ +and ${coldef.foreignkey_col}::varchar(255) in (select distinct ${coldef.name}::varchar(255) from ${table_name} where \ + ${restriction} \ +)\ +\ +<#if coldef.calc_gesamt?number=1> \ +union\ +select 'gesamt','Gesamt',\ +2::smallint as detailgesamtsort,\ +null as tmp_sortfield from xdummy\ + \ +order by detailgesamtsort,\ +tmp_sortfield,\ +name;\ +<#else>\ +select 'Sichtspalten aktiv' from xdummy;\ +\ +]]>\ +\ +\ +\ +\ +>]]>\ +\ +--nur bei wenn Ergzeilen_def nicht vom Typ Sicht relevant\ +\ +select 1::smallint as level, \ +${rowdef.foreignkey_col}::varchar(255) as key,--hier wird zur Vereinheitlichung mit Sichten Bezeichung "key" für eigentlichen Schluessel benoetigt\ +${rowdef.foreignkey_cap} as name,\ +${rowdef.sortfield} as tmp_sortfield \ +from ${rowdef.foreignkey_tab}\ +where 1=1\ +<#if rowdef.foreignkey_cond!=''> and ${rowdef.foreignkey_cond} \ + --{rowdef.specific_restriction} \ +<#if rowdef.calc_gesamt?number=1>\ +union\ +select 2,'gesamt','Gesamt',null as ${rowdef.sortfield} from xdummy\ +\ +order by level,tmp_sortfield; \ +<#else>\ +select 'nicht relevant' from xdummy;\ +]]>\ +\ +\ +>"!=""&&"<<2.Ansicht in Zeilen>>"!="<<2.Ansicht in Zeilen>>">\ +select name,caption,\ +is_sicht,\ +calc_gesamt,\ +foreignkey_tab,\ +foreignkey_col,\ +foreignkey_cap,\ +nvl(foreignkey_cond,''::varchar(1)) as foreignkey_cond,\ +--nvl(C.specific_restriction,''::varchar(1)) as specific_restriction,\ +C.sortfield\ +from xcube_dimconfig where maskeninfo_id=${Maskennummer} and name=<<2.Ansicht in Zeilen>>\ +<#else>\ +select 'keine zweite RowDef' from xdummy;\ +\ +]]>\ +\ +--nur bei wenn Ergzeilen_def nicht vom Typ Sicht relevant\ +>"!=""&&"<<2.Ansicht in Zeilen>>"!="<<2.Ansicht in Zeilen>>"&&zweiteRowDef.is_sicht=0>\ +select 1::smallint as level, \ +${zweiteRowDef.foreignkey_col}::varchar(255) as key,--hier wird zur Vereinheitlichung mit Sichten Bezeichung "key" für eigentlichen Schluessel benoetigt\ +${zweiteRowDef.foreignkey_cap} as name,\ +${zweiteRowDef.sortfield} as tmp_sortfield \ +from ${zweiteRowDef.foreignkey_tab}\ +where 1=1\ +<#if zweiteRowDef.foreignkey_cond!=''> and ${zweiteRowDef.foreignkey_cond} \ + --{zweiteRowDef.specific_restriction} \ + <#if zweiteRowDef.calc_gesamt?number=1>\ +union\ +select 2,'gesamt','Gesamt',null as ${zweiteRowDef.sortfield} from xdummy\ +\ +order by level,tmp_sortfield; \ +<#else>\ +select 'nicht relevant' from xdummy;\ +]]>\ +\ +\ +\ +\ +\ +<#function kennzahlInRowOrCol>\ +--TODO auch 2. Dimension in Zeilen/Spalten\ +<#if coldef.name="xckennzahl"||rowdef.name="xckennzahl"> <#return 1><#else> return <#return 0> \ +\ +\ +<#function hasVirtualColumns>\ +--TODO auch 2. Dimension in Zeilen/Spalten\ +<#if coldef.is_virtual?number=1||rowdef.is_virtual?number=1> <#return 1><#else> return <#return 0> \ +\ +\ +<#assign graph_col= "col" />\ +/* <#assign graph_col=<> /> */\ +\ +create temp table tmp_cellmax (maxvalue ${datatype} );\ +insert into tmp_cellmax values(0);\ +\ +<#if hasVirtualColumns()=1||kennzahlInRowOrCol()=1>\ +select * into temp tmp_rohdaten from \ +${table_name}\ +where \ + ${restriction};\ + <#if coldef.is_virtual?number=1> alter table tmp_rohdaten add column ${coldef.name} varchar(255); ${coldef.vcsql}; \ + <#if rowdef.is_virtual?number=1> alter table tmp_rohdaten add column ${rowdef.name} varchar(255); ${rowdef.vcsql}; \ + --create index ix_tmp_r1 on tmp_rohdaten(${coldef.name},${rowdef.name}); --Todo nicht xckennzahl ggfs. für 2. Dimension in Spalten\ +\ +\ +\ +<#if kennzahlInRowOrCol()=0>\ +create temp table tmp_cache (\ +colattrib varchar(255), <@addcomment comment=coldef.caption/>\ +rowattrib varchar(255), <@addcomment comment=rowdef.caption/>\ +row2attrib varchar(255),\ +value decimal(17,5));\ +insert into tmp_cache (colattrib,rowattrib,<#if "<<2.Ansicht in Zeilen>>"!=""&&"<<2.Ansicht in Zeilen>>"!="<<2.Ansicht in Zeilen>>">row2attrib, value)\ +select ${coldef.name}::varchar(255), \ +${rowdef.name}::varchar(255),\ +<#if "<<2.Ansicht in Zeilen>>"!=""&&"<<2.Ansicht in Zeilen>>"!="<<2.Ansicht in Zeilen>>">${zweiteRowDef.name}::varchar(255),\ +${aggrfunction}\ + \ +<#if hasVirtualColumns()=0> \ +from ${table_name} where \ + ${restriction}\ + <#if (aggrfunction_restriction?length>0)> and ${aggrfunction_restriction} \ + <#else>\ +from tmp_rohdaten\ +\ +\ + group by 1,2 <#if "<<2.Ansicht in Zeilen>>"!=""&&"<<2.Ansicht in Zeilen>>"!="<<2.Ansicht in Zeilen>>">,${zweiteRowDef.name} ;\ +create index ix_tmp_roh1 on tmp_cache (colattrib,rowattrib,row2attrib);\ +\ +\ +--moegliche attrib_nachbearbeitung\ +<#if kennzahlInRowOrCol()=0> \ +<#assign tmp_table="tmp_cache"/> <#assign rowfield="rowattrib"/> <#assign colfield="colattrib"/> \ +<#else>\ +<#assign tmp_table="tmp_rohdaten"/> <#assign rowfield=rowdef.name/> <#assign colfield=coldef.name/> \ +\ +\ + <#if (rowdef.attrib_nachbearbeitung?length>1)>\ + ${rowdef.attrib_nachbearbeitung?replace("<>",tmp_table)?replace("<>",rowfield)};\ + -- z.B. update tmp_cache R set rowattrib='s_'||rowattrib;\ + \ + <#if (coldef.attrib_nachbearbeitung?length>1)>\ + ${coldef.attrib_nachbearbeitung?replace("<>",tmp_table)?replace("<>",colfield)};\ + -- z.B. update tmp_cache R set rowattrib='s_'||rowattrib;\ + \ + \ + \ + \ +\ +<#if coldef.is_sicht>0>\ +<#assign ergspalten=.vars[coldef.caption].elements/>\ +<#else>\ +<#assign ergspalten=nichtsicht_ergspalten/>\ +\ +create temp table tmp_erg (\ +ebene integer,\ +col1 varchar(255),\ +name varchar(255),\ +<#if "<<2.Ansicht in Zeilen>>"!=""&&"<<2.Ansicht in Zeilen>>"!="<<2.Ansicht in Zeilen>>">col2 varchar(255),\ +<#assign i=0/>\ +<#foreach spalte in ergspalten>\ + <#assign i=i+1/>\ + c${i} decimal(17,5) default 0, <@addcomment comment=spalte.name/>\ + \ +\ +sortnr integer\ +) <@informixnolog/>;\ +\ +create index ix_tmp_erg on tmp_erg (sortnr);\ + \ +<#if rowdef.is_sicht>0> \ + <#assign zeilendef=.vars[rowdef.caption].elements/> --ermittelt des SichtObjekts anhand des Feldnames (aus felderinfo)\ +<#else>\ + <#assign zeilendef=nichtsicht_ergzeilen/>\ +\ +<#assign sortnr=0/>\ +<#foreach zeile in zeilendef>\ +<#if "<<2.Ansicht in Zeilen>>"!=""&&"<<2.Ansicht in Zeilen>>"!="<<2.Ansicht in Zeilen>>">\ +<#foreach zeile2 in zweiteRow_nichtsicht_ergzeilen>\ +<#assign sortnr=sortnr+1/>\ + insert into tmp_erg (ebene,col1,name,col2,sortnr)\ + values (${zeile.level},'${zeile.key}','${zeile.name}','${zeile2.name}',${sortnr});\ + <#assign i=0/>\ +<#foreach spalte in ergspalten>\ + <#assign i=i+1/>\ + <@updateval i=i col=spalte row=zeile row2=zeile2 sortnr=sortnr/>\ + \ +\ +<#else>\ +/* <#if zeile.level <= <> > */\ + <#assign sortnr=sortnr+1/>\ + insert into tmp_erg (ebene,col1,name,sortnr)\ + values (${zeile.level},'${zeile.key}','${zeile.name}',${sortnr});\ + <#assign i=0/>\ +<#foreach spalte in ergspalten>\ + <#assign i=i+1/>\ + <@updateval i=i col=spalte row=zeile row2='' sortnr=sortnr/>\ + \ +/* --<> */\ + \ +\ +\ +<#macro updateval i col row row2 sortnr>\ +update tmp_erg T set c${i}=\ +<#if kennzahlInRowOrCol()=0>\ + (select nvl(sum(value),0) from tmp_cache R where 1=1 \ + <@colrestriction col=col/>\ + <@rowrestriction row=row row2=row2/>\ + ) \ + <#else> -- Kennzahl ist in Zeile oder Spalte\ + (select <@kennzahlSelect row=row col=col/>\ + from tmp_rohdaten R where 1=1 \ + <#if rowdef.name="xckennzahl"> <@kennzahlrestrict row=row col=col/> <#else> <@rowrestriction row=row row2=row2 rowattribname=rowdef.name/>\ + <#if coldef.name="xckennzahl"> <@kennzahlrestrict row=row col=col/> <#else> <@colrestriction col=col colattribname=coldef.name/>\ + \ + )\ + \ + where T.sortnr='${sortnr}'\ + ;\ + \ + \ + <#macro kennzahlrestrict row col>\ + <#if coldef.name="xckennzahl">\ + <#foreach k in kennzahlen>\ + <#if (col.apnr=k.apnr&&k.restriction?length>0)> and ${k.restriction} \ + \ + \ + <#if rowdef.name="xckennzahl">\ + <#foreach k in kennzahlen>\ + <#if (row.key=k.apnr&&k.restriction?length>0)> and ${k.restriction} \ + \ + \ + \ + \ + <#macro kennzahlSelect row col>\ + <#if coldef.name="xckennzahl">\ + <#foreach k in kennzahlen>\ + <#if col.apnr=k.apnr> ${k.aggrfunction} \ + \ + \ + <#if rowdef.name="xckennzahl">\ + <#foreach k in kennzahlen>\ + <#if row.key=k.apnr> ${k.aggrfunction} \ + \ + \ + \ + \ + \ + \ + \ + \ + <#macro colrestriction col colattribname='R.colattrib'>\ + <#if coldef.is_sicht==1>\ + and ${colattribname}::varchar(255) in ${col.subkeys}\ +<#elseif coldef.is_sicht=2>\ + and (${col.strukturStr?replace('$1',' '+colattribname+"::varchar(255)")}) \ +<#else>\ + <#if col.apnr!='gesamt'>\ + and ${colattribname}::varchar(255)='${col.apnr}' \ + \ + \ + \ + \ + <#macro rowrestriction row row2 rowattribname='R.rowattrib' >\ + <#if rowdef.is_sicht==1>\ + and ${rowattribname}::varchar(255) in ${row.subkeys}\ + <#elseif rowdef.is_sicht==2>\ + and ( ${row.strukturStr?replace('$1',' '+rowattribname+"::varchar(255)")} ) \ + <#else>\ + <#if row.key!='gesamt'> and ${rowattribname}::varchar(255)='${row.key}' \ + \ + <#if row2?is_hash> and R.row2attrib='${row2.key}' \ + \ + \ +drop table if exists tmp_cache;\ +\ +drop table if exists tmp_rohdaten;\ +\ +-- Kennzahl in Spalten/Zeilen ggfs. null\ +<#assign i=0/>\ + <#foreach spalte in ergspalten>\ + <#assign i=i+1/>\ + update tmp_erg set c${i}=0 where c${i} is null; \ +\ +<#assign lastcol=i />\ +\ +--Wenn Grafikfunktion eingeschaltet ist, wird Maximalwert ermittelt:\ +<#if i != 0 && graph_col != "col" >\ +\ +<#assign i=0/>\ + <#foreach spalte in ergspalten>\ + <#assign i=i+1/>\ + <#if i == lastcol>\ + update tmp_cellmax set maxvalue = (select max(c${i}) from tmp_erg) \ + where tmp_cellmax.maxvalue < (select max(c${i}) from tmp_erg) ;\ + \ +\ +\ +\ +\ +<#if "<>"="'ja'">\ +delete from tmp_erg where 1=1\ +<#assign i=0/>\ +<#foreach spalte in ergspalten>\ + <#assign i=i+1/>\ +and c${i}=0\ +;\ + \ +<#if "<>"="'institution'">\ +update tmp_erg set name=replace(name,col1||' - ','');\ +update tmp_erg set col1=(select max(uniquename) from organigramm where col1=trim(key_apnr))\ +where substring(col1 from 1 for 1)='_';\ +--vorher war ggfs _3 zu O005030, auch O005030 in Namen ersetzen\ +update tmp_erg set name=replace(name,col1||' - ','');\ + \ +\ +\ +\ +\ +select \ +<#if rowdef.is_sicht>0>\ + <#if graph_col=="col">\ + ebene,\ + <#else>\ + ebene as level, --bei Grafiken keine Ebenenanzeige\ + \ +\ +name\ +--TODO: wenn <<2.Ansicht in Zeilen>>"!="" dann ,col2\ +<#assign i=0/>\ +<#foreach spalte in ergspalten>\ + <#assign i=i+1/>\ +<#if i != lastcol && graph_col != "col" >\ +<#if graph_col == "_graphbaralternating">\ +--bei symmetr. Balken jeder 2. Balken rechtsbündig\ + <#if i % 2 == 0>\ + , '' || c${i}::${datatype} || '|' || tmp_cellmax.maxvalue as _graph${i}\ + <#else>\ + , '' || c${i}::${datatype} || '|' || tmp_cellmax.maxvalue as _graphbarright${i}\ + \ +<#else>\ +, '' || c${i}::${datatype} || '|' || tmp_cellmax.maxvalue as ${graph_col}${i}\ +\ +\ +<#else>\ +, c${i}::${datatype} as col${i}\ +\ +\ +\ +\ +from tmp_erg, tmp_cellmax order by sortnr;^--freemarker Template\ +XIL List\ + sizable_columns horizontal_scrolling\ + drop_and_delete movable_columns\ + white_space_color=COLOR_WHITE fixed_columns=1\ + min_heading_height=35\ +<#if rowdef.is_sicht>0>\ +Column CID=0 heading_text="Ebene" center_heading\ + row_selectable heading_platform readonly explanation="Hierarchieebene"\ + width=5 text_size=8\ +\ +Column CID=20 heading_text="${.vars["Ansicht in ErgebniszeilenObject"].selectedItems[0].name}" center_heading\ + row_selectable heading_platform readonly explanation="Schlüssel: ${.vars["Ansicht in ErgebniszeilenObject"].selectedItems[0].name}Nr"\ + width=30 text_size=30\ +<#if "<<2.Ansicht in Zeilen>>"!=""&&"<<2.Ansicht in Zeilen>>"!="<<2.Ansicht in Zeilen>>">\ +Column CID=20 heading_text="${.vars["2.Ansicht in ZeilenObject"].selectedItems[0].name}" center_heading\ + row_selectable heading_platform readonly\ + width=20 text_size=10 explanation="${.vars["2.Ansicht in ZeilenObject"].selectedItems[0].name}"\ +\ +<#if coldef.is_sicht>0>\ +<#assign ergspalten=.vars[coldef.caption].elements/>\ +<#else>\ +<#assign ergspalten=nichtsicht_ergspalten/>\ +\ +<#foreach spalte in ergspalten>\ +Column CID=1 heading_text="${spalte.name}" center_heading\ + row_selectable heading_platform readonly explanation="Ausprägung ${spalte.name}"\ + width=12\ +\ +@@@^Altersgruppe^Anzahl^Kreuztabellen zu Studierendenzahlen^drop table tmp_erg;drop table tmp_cellmax;^ ^1^700^360^0^1^ ^ diff --git a/src-modules/module/sxc/masken/47030_sachgeb_maske_bez.unl b/src-modules/module/sxc/masken/47030_sachgeb_maske_bez.unl new file mode 100644 index 0000000..70f1ac8 --- /dev/null +++ b/src-modules/module/sxc/masken/47030_sachgeb_maske_bez.unl @@ -0,0 +1 @@ +360^47030^ diff --git a/src-modules/module/sxc/schluesseltabellen/sichten_fuellen.sql b/src-modules/module/sxc/schluesseltabellen/sichten_fuellen.sql new file mode 100644 index 0000000..1203ad9 --- /dev/null +++ b/src-modules/module/sxc/schluesseltabellen/sichten_fuellen.sql @@ -0,0 +1,155 @@ +--freemarker template +<#if SQLdialect='Postgres'> +select setval('sichten_tid_seq',(select max(tid) from sichten)); + +<#assign systeminfoid="1000" /> +<#assign sichten = [ + {"name_intern":"xcube_dim_alter", + "name":"Alter (gruppiert in 5er-Schritten)", + "quelle":"<> select name,apnr,parent,strukturstr from xcube_dims where id=''alter'' order by 2", + "art":"XCUBE-Alter-Sicht"}, + {"name_intern":"xcube_dim_wohnort", + "name":"Wohnort nach Bundesländern", + "quelle":"<> select druck ,apnr, parent from xcube_wohnort_staat order by 1", + "art":"XCUBE-Wohnort-Sicht"}, + {"name_intern":"xcube_dim_hzbnote", + "name":"HZB-Note (gruppiert)", + "quelle":"<> select name,apnr,parent,strukturstr from xcube_dims where id=''hzbnote'' order by 2", + "art":"XCUBE-HZB-Note-Sicht"}, + {"name_intern":"xcube_dim_hoererstatus", + "name":"Hörerstatus (intern)", + "quelle":"<> select druck ,apnr, parent from xcube_hoererstatus order by 1", + "art":"XCUBE-Hörerstatus-Sicht"}, + {"name_intern":"xcube_dim_note", + "name":"Note (gruppiert)", + "quelle":"<> select name,apnr,parent,strukturstr from xcube_dims where id=''note'' order by 2", + "art":"XCUBE-Note-Sicht"}, + {"name_intern":"xcube_dim_alter1", + "name":"Alter (starke Aufteilung)", + "quelle":"<> select name,apnr,parent,strukturstr from xcube_dims where id=''alter1'' order by 2", + "art":"XCUBE-Alter-Sicht"}, + {"name_intern":"xcube_dim_alter2", + "name":"Alter (spez. für Studierende/Prüf.)", + "quelle":"<> select name,apnr,parent,strukturstr from xcube_dims where id=''alter2'' order by 2", + "art":"XCUBE-Alter-Sicht"}, + {"name_intern":"xcube_dim_alter3", + "name":"Alter (einzeln)", + "quelle":"<> select name,apnr,parent,strukturstr from xcube_dims where id=''alter3'' order by 2", + "art":"XCUBE-Alter-Sicht"}, + {"name_intern":"xcube_dim_hzb_zul", + "name":"Hochschulzugangsber", + "quelle":"<> select name,apnr,parent,strukturstr from xcube_dims where id=''hzb_zul'' order by 2", + "art":"XCUBE-HZB-ZUL-Sicht"}, + {"name_intern":"xcube_dim_zul_erg", + "name":"Zulassungsergebnis", + "quelle":"<> select name,apnr,parent,strukturstr from xcube_dims where id=''zul_erg'' order by 2", + "art":"XCUBE-ZUL-Erg-Sicht"} + ] /> + + +--Ab hier braucht man nichts ändern: + +CREATE temp TABLE tmp_sichten ( + parent character(255), + systeminfoid integer DEFAULT 0 NOT NULL, + art character(40), + type integer , + name_intern character(200), + name character(200), + beschreibung character(255), + sortnr integer DEFAULT 0 NOT NULL, + quelle character(255), + alt_hier_id character(150), + treecfgtable character(255), + treecfgid character(150), + label smallint DEFAULT 0 NOT NULL, + user_rechte smallint DEFAULT 1 NOT NULL, + rechtequelle character(255), + sesamkey character(100), + standbutton smallint DEFAULT 0 NOT NULL, + attribut1 character(255), + attribut2 character(255), + attribut3 integer, + attribut4 integer, + xmlmaxentries integer, + gueltig_seit date , + gueltig_bis date, + aktiv smallint DEFAULT 1 +); +<#assign sortnr=0 /> +<#foreach sicht in sichten> +<#assign sortnr=sortnr+1 /> +-- Sicht ${sicht.name} + +INSERT INTO tmp_sichten( + systeminfoid , + art , + type , + name_intern , + name , + sortnr , + quelle , + label , + user_rechte , + standbutton , + gueltig_seit , + gueltig_bis , + aktiv + ) select + ${systeminfoid} , + '${sicht.art}' , + 10 , + '${sicht.name_intern}' , + '${sicht.name}' , + ${sortnr} , + '${sicht.quelle}', + 0 , + 0 , + 0 , + date_val('01.01.1900') , + date_val('01.01.3000') , + 1 from xdummy; + + +--Zur Sicherheit alle Quellen und Standbutton von Sichten +update sichten set quelle=(select T.quelle from tmp_sichten T + where T.name_intern=sichten.name_intern) + where name_intern in (select T2.name_intern from tmp_sichten T2) + ; +update sichten set standbutton=(select T.standbutton from tmp_sichten T + where T.name_intern=sichten.name_intern) + where name_intern in (select T2.name_intern from tmp_sichten T2) + ; + +delete from tmp_sichten where name_intern in (select name_intern from sichten); + + + INSERT INTO sichten( + systeminfoid , art , type , name_intern , name , + sortnr , quelle , label , + user_rechte , standbutton , + xmlmaxentries , + gueltig_seit , gueltig_bis , aktiv) + select systeminfoid , art , type , name_intern , name , + sortnr , quelle , label , + user_rechte , standbutton , + xmlmaxentries , + gueltig_seit , gueltig_bis , aktiv + from tmp_sichten S; + + +--Rechte für Sichten geben +select 'Rechte für Sichten geben' from xdummy; +delete from sachgeb_sichtarten where sichtart in +(select distinct art from tmp_sichten); + +insert into sachgeb_sichtarten +( + sachgebiete_id , + sichtart +) +select distinct ${systeminfoid},art from tmp_sichten; + + +drop table tmp_sichten; + diff --git a/src-modules/module/sxc/schluesseltabellen/xcube_dims_install.sql b/src-modules/module/sxc/schluesseltabellen/xcube_dims_install.sql new file mode 100644 index 0000000..424e7cb --- /dev/null +++ b/src-modules/module/sxc/schluesseltabellen/xcube_dims_install.sql @@ -0,0 +1,19 @@ +--Freemarker Template +-- TableFieldExists wird genutzt, um zu prüfen, ob die entsprechende Tabelle existiert +--Geschlecht +<#if TableFieldExists('sxc_stud_sem_da_geschl_hs','auspraegung_code_3')> +delete from xcube_dims where id='auspraegung_code_3'; +INSERT INTO xcube_dims (id,apnr,name,sort1) values +('auspraegung_code_3','GESM','männlich',1); +INSERT INTO xcube_dims (id,apnr,name,sort1) values +('auspraegung_code_3','GESW','weiblich',2); +INSERT INTO xcube_dims (id,apnr,name,sort1) values +('auspraegung_code_3','UNB','nicht bekannt',3); + + + +--Zum Testen +--INSERT INTO xcube_dims (id,apnr,name,sort1,parent,strukturstr) +--VALUES +-- -('fs4','0','FS<4',1,NULL,NULL), +-- ('fs4','1','FS>=4',2,NULL,NULL); \ No newline at end of file diff --git a/src-modules/module/sxc/schluesseltabellen/xcube_dims_install_sic.sql b/src-modules/module/sxc/schluesseltabellen/xcube_dims_install_sic.sql new file mode 100644 index 0000000..32c28cf --- /dev/null +++ b/src-modules/module/sxc/schluesseltabellen/xcube_dims_install_sic.sql @@ -0,0 +1,262 @@ +--Freemarker Template +-- TableFieldExists wird genutzt, um zu prüfen, ob die entsprechende Tabelle existiert +<#if TableFieldExists('aggregierung','ord')> +delete from xcube_dims where id='jahr'; +insert into xcube_dims (id, name,apnr,sort1) +select distinct 'jahr',ord::char(6),ord::char(6),ord from aggregierung where kategorie like '%-Jahr%'; +delete from xcube_dims where id='cob_jahr'; +insert into xcube_dims (id, name,apnr,sort1) +select distinct 'cob_jahr',ord::char(6),ord::char(6),ord from aggregierung where kategorie='COB-Jahr'; + + +delete from xcube_dims where id='monat'; +INSERT INTO xcube_dims (id,apnr,name,sort1) values +('monat','1','Januar',1), +('monat','2','Februar',2), +('monat','3','März',3), +('monat','4','April',4), +('monat','5','Mai',5), +('monat','6','Juni',6), +('monat','7','Juli',7), +('monat','8','August',8), +('monat','9','September',9), +('monat','10','Oktober',10), +('monat','11','November',11), +('monat','12','Dezember',12); + +--TODO: zerlegen in modulweise Dateien + +-- priorität: semester, zul_semester, kenn_semester +<#if TableFieldExists('semester','eintrag')> +delete from xcube_dims where id='semester'; +insert into xcube_dims (id, name,apnr,sort1) +select 'semester',eintrag ,tid::varchar(50),tid from semester + where tid in (select distinct sem_rueck_beur_ein from sos_stg_aggr); +<#elseif TableFieldExists('zul_semester','eintrag')> +delete from xcube_dims where id='semester'; +insert into xcube_dims (id, apnr,sort1) +select 'semester',eintrag ,tid::varchar(50),tid from zul_semester; +<#elseif TableFieldExists('kenn_semester','eintrag')> +delete from xcube_dims where id='semester'; +insert into xcube_dims (id, apnr,sort1) +select 'semester',druck ,tid::varchar(50),tid from kenn_semester; + + + + + +<#if TableFieldExists('sos_stg_aggr','fach_sem_zahl')> +delete from xcube_dims where id='fssemzahl'; +INSERT INTO xcube_dims (id,apnr,name,sort1) +select distinct 'fssemzahl',fach_sem_zahl::varchar(10),fach_sem_zahl||'.FS',fach_sem_zahl from sos_stg_aggr +where fach_sem_zahl <= 10; +INSERT INTO xcube_dims (id,apnr,name,sort1) +select distinct 'fssemzahl', '99','FS>10',99 from sos_stg_aggr where fach_sem_zahl>10; + + +<#if TableFieldExists('sos_stg_aggr','hssem')> +delete from xcube_dims where id='hssem'; +INSERT INTO xcube_dims (id,apnr,name,sort1) +select distinct 'hssemzahl',hssem::varchar(10),hssem||'.HS',hssem from sos_stg_aggr +where hssem <= 10; +INSERT INTO xcube_dims (id,apnr,name,sort1) +select distinct 'hssemzahl', '999','HS>10',99 from sos_stg_aggr where hssem>10; + + + <#if TableFieldExists('sos_stg_aggr','hzbart')> +delete from xcube_dims where id='hzbart'; +INSERT INTO xcube_dims (id,apnr,name,sort1) +select distinct 'hzbart',tid::varchar(10),eintrag,tid from hs_zugangsber; + + + <#if TableFieldExists('sos_stg_aggr','alter')> +delete from xcube_dims where id='alter'; +INSERT INTO xcube_dims (id,apnr,parent, name,strukturstr,sort1) +values +('alter','gesamt',null,'alle','1=1',1), +('alter', 'a1', 'gesamt', '<20 Jahre','$1::numeric(14,2)<20.00',10), +('alter', 'a2', 'gesamt','20-24 Jahre','$1::numeric(14,2)>=20.00 and $1::numeric(14,2)<25.00',20), +('alter', 'a3', 'gesamt','25-29 Jahre','$1::numeric(14,2)>=25.00 and $1::numeric(14,2)<30.00',30), +('alter', 'a4', 'gesamt','30-34 Jahre','$1::numeric(14,2)>=30.00 and $1::numeric(14,2)<35.00',40), +('alter', 'a5', 'gesamt','35-39 Jahre','$1::numeric(14,2)>=35.00 and $1::numeric(14,2)<40.00',50), +('alter', 'a6', 'gesamt','40-44 Jahre','$1::numeric(14,2)>=40.00 and $1::numeric(14,2)<45.00',60), +('alter', 'a7', 'gesamt','45-49 Jahre','$1::numeric(14,2)>=45.00 and $1::numeric(14,2)<50.00',70), +('alter', 'a8', 'gesamt','50-54 Jahre','$1::numeric(14,2)>=50.00 and $1::numeric(14,2)<55.00',80), +('alter', 'a9', 'gesamt','55-59 Jahre','$1::numeric(14,2)>=55.00 and $1::numeric(14,2)<60.00',90), +('alter', 'a99', 'gesamt','>=60 Jahre','$1::numeric(14,2)>=60.00',100); + + +delete from xcube_dims where id='alter1'; +INSERT INTO xcube_dims (id,apnr,parent, name,strukturstr,sort1) +values +('alter1','gesamt',null,'alle','1=1',1), +('alter1', 'b2', 'gesamt','16-17 Jahre','$1::numeric(14,2)>=16.00 and $1::numeric(14,2)<18.00',20), +('alter1', 'b3', 'gesamt','18-20 Jahre','$1::numeric(14,2)>=18.00 and $1::numeric(14,2)<21.00',30), +('alter1', 'b4', 'gesamt','21-24 Jahre','$1::numeric(14,2)>=21.00 and $1::numeric(14,2)<25.00',40), +('alter1', 'b5', 'gesamt','25-29 Jahre','$1::numeric(14,2)>=25.00 and $1::numeric(14,2)<30.00',50), +('alter1', 'b6', 'gesamt','30-39 Jahre','$1::numeric(14,2)>=30.00 and $1::numeric(14,2)<40.00',60), +('alter1', 'b7', 'gesamt','40-49 Jahre','$1::numeric(14,2)>=40.00 and $1::numeric(14,2)<50.00',70), +('alter1', 'b8', 'gesamt','50-54 Jahre','$1::numeric(14,2)>=50.00 and $1::numeric(14,2)<55.00',80), +('alter1', 'b9', 'gesamt','55-60 Jahre','$1::numeric(14,2)>=55.00 and $1::numeric(14,2)<61.00',90), +('alter1', 'b90', 'gesamt','61 Jahre','$1::numeric(14,2)>=61.00 and $1::numeric(14,2)<62.00',91), +('alter1', 'b91', 'gesamt','62 Jahre','$1::numeric(14,2)>=62.00 and $1::numeric(14,2)<63.00',92), +('alter1', 'b92', 'gesamt','63 Jahre','$1::numeric(14,2)>=63.00 and $1::numeric(14,2)<64.00',93), +('alter1', 'b93', 'gesamt','64 Jahre','$1::numeric(14,2)>=64.00 and $1::numeric(14,2)<65.00',94), +('alter1', 'b94', 'gesamt','65 Jahre','$1::numeric(14,2)>=65.00 and $1::numeric(14,2)<66.00',95), +('alter1', 'b95', 'gesamt','66 Jahre','$1::numeric(14,2)>=66.00 and $1::numeric(14,2)<67.00',96), +('alter1', 'b96', 'gesamt','67 Jahre','$1::numeric(14,2)>=67.00 and $1::numeric(14,2)<68.00',97), +('alter1', 'b99', 'gesamt','>=68 Jahre','$1::numeric(14,2)>=68.00',100); +<#list 16..17 as i> +INSERT INTO xcube_dims (id,apnr,parent, name,strukturstr,sort1) +select 'alter1', ${i}::char(10), 'b2', ${i}::char(2) || ' Jahre' , '$1::numeric(14,2)>=${i}::numeric(14,2) and $1::numeric(14,2)<${i+1}::numeric(14,2)', ${i} from xdummy; + +<#list 18..20 as i> +INSERT INTO xcube_dims (id,apnr,parent, name,strukturstr,sort1) +select 'alter1', ${i}::char(10), 'b3', ${i}::char(2) || ' Jahre' , '$1::numeric(14,2)>=${i}::numeric(14,2) and $1::numeric(14,2)<${i+1}::numeric(14,2)', ${i} from xdummy; + +<#list 21..24 as i> +INSERT INTO xcube_dims (id,apnr,parent, name,strukturstr,sort1) +select 'alter1', ${i}::char(10), 'b4', ${i}::char(2) || ' Jahre' , '$1::numeric(14,2)>=${i}::numeric(14,2) and $1::numeric(14,2)<${i+1}::numeric(14,2)', ${i} from xdummy; + +<#list 25..29 as i> +INSERT INTO xcube_dims (id,apnr,parent, name,strukturstr,sort1) +select 'alter1', ${i}::char(10), 'b5', ${i}::char(2) || ' Jahre' , '$1::numeric(14,2)>=${i}::numeric(14,2) and $1::numeric(14,2)<${i+1}::numeric(14,2)', ${i} from xdummy; + +<#list 30..39 as i> +INSERT INTO xcube_dims (id,apnr,parent, name,strukturstr,sort1) +select 'alter1', ${i}::char(10), 'b6', ${i}::char(2) || ' Jahre' , '$1::numeric(14,2)>=${i}::numeric(14,2) and $1::numeric(14,2)<${i+1}::numeric(14,2)', ${i} from xdummy; + +<#list 40..49 as i> +INSERT INTO xcube_dims (id,apnr,parent, name,strukturstr,sort1) +select 'alter1', ${i}::char(10), 'b7', ${i}::char(2) || ' Jahre' , '$1::numeric(14,2)>=${i}::numeric(14,2) and $1::numeric(14,2)<${i+1}::numeric(14,2)', ${i} from xdummy; + +<#list 50..54 as i> +INSERT INTO xcube_dims (id,apnr,parent, name,strukturstr,sort1) +select 'alter1', ${i}::char(10), 'b8', ${i}::char(2) || ' Jahre' , '$1::numeric(14,2)>=${i}::numeric(14,2) and $1::numeric(14,2)<${i+1}::numeric(14,2)', ${i} from xdummy; + +<#list 55..60 as i> +INSERT INTO xcube_dims (id,apnr,parent, name,strukturstr,sort1) +select 'alter1', ${i}::char(10), 'b9', ${i}::char(2) || ' Jahre' , '$1::numeric(14,2)>=${i}::numeric(14,2) and $1::numeric(14,2)<${i+1}::numeric(14,2)', ${i} from xdummy; + + +delete from xcube_dims where id='alter2'; +INSERT INTO xcube_dims (id,apnr,parent, name,strukturstr,sort1) +values +('alter2','gesamt',null,'alle','1=1',1), +('alter2', 'b2', 'gesamt','16-18 Jahre','$1::numeric(14,2)>=16.00 and $1::numeric(14,2)<19.00',20), +('alter2', 'b3', 'gesamt','19-20 Jahre','$1::numeric(14,2)>=19.00 and $1::numeric(14,2)<21.00',30), +('alter2', 'b4', 'gesamt','21-25 Jahre','$1::numeric(14,2)>=21.00 and $1::numeric(14,2)<26.00',40), +('alter2', 'b5', 'gesamt','26-30 Jahre','$1::numeric(14,2)>=26.00 and $1::numeric(14,2)<31.00',50), +('alter2', 'b6', 'gesamt','31-40 Jahre','$1::numeric(14,2)>=31.00 and $1::numeric(14,2)<41.00',60), +('alter2', 'b7', 'gesamt','41-50 Jahre','$1::numeric(14,2)>=41.00 and $1::numeric(14,2)<51.00',70), +('alter2', 'b99', 'gesamt','> 50 Jahre','$1::numeric(14,2)>=51.00',100); + +delete from xcube_dims where id='alter3'; +INSERT INTO xcube_dims (id,apnr,parent, name,strukturstr,sort1) +values +('alter3','gesamt',null,'alle','1=1',1); + +INSERT INTO xcube_dims (id,apnr,parent, name,strukturstr,sort1) values +<#list 16..67 as i> +('alter3', ${i}::char(10), 'gesamt', ${i}::char(2) || ' Jahre' , '$1::numeric(14,2)>=${i}::numeric(14,2) and $1::numeric(14,2)<${i+1}::numeric(14,2)', ${i}), + +('alter3', '68', 'gesamt','68 Jahre','$1::numeric(14,2)>=68.00',100); + + <#if TableFieldExists('sos_stg_aggr','ch27_grund_beurl')> +delete from xcube_dims where id='ch27_grund_beurl'; +INSERT INTO xcube_dims (id,apnr,name,sort1) +select distinct 'ch27_grund_beurl',apnr,druck,1 from cifx where key=27; + + + <#if TableFieldExists('sos_stg_aggr','aktiv')> +delete from xcube_dims where id='aktiv'; +INSERT INTO xcube_dims (id,apnr,name,sort1) +select 'aktiv',0::varchar(10),'inaktiv',2 from xdummy union select 'aktiv',1::varchar(10),'aktiv',1 from xdummy; + + + <#if TableFieldExists('sos_stg_aggr','hzbart_int')> +delete from xcube_dims where id='hzbart_int'; +INSERT INTO xcube_dims (id,apnr,name,sort1) +select distinct 'hzbart_int',hzbart,dtxt,1 from k_hzbart; + + + <#if TableFieldExists('sos_stg_aggr','hzbnote')> +delete from xcube_dims where id='hzbnote'; +INSERT INTO xcube_dims (id,apnr,parent, name,strukturstr,sort1) +values +('hzbnote','gesamt',null,'alle','1=1',1), +('hzbnote', 'a1', 'gesamt','Sehr gut <=1,0','$1::numeric(5,2)>=0.00 and $1::numeric(5,2)<=1.00',10), +('hzbnote', 'a2', 'gesamt','Sehr gut 1,1-1,5','$1::numeric(5,2)>1.00 and $1::numeric(5,2)<=1.50',20), +('hzbnote', 'a3', 'gesamt','gut 1,6-2,0','$1::numeric(5,2)>1.50 and $1::numeric(5,2)<=2.00',30), +('hzbnote', 'a4', 'gesamt','gut 2,1-2,5','$1::numeric(5,2)>2.00 and $1::numeric(5,2)<=2.50',40), +('hzbnote', 'a5', 'gesamt','befriedigend 2,6-3,0','$1::numeric(5,2)>2.50 and $1::numeric(5,2)<=3.00',50), +('hzbnote', 'a6', 'gesamt','befriedigend 3,1-3,5','$1::numeric(5,2)>3.00 and $1::numeric(5,2)<=3.50',60), +('hzbnote', 'a7', 'gesamt','ausreichend 3,6-4,5','$1::numeric(5,2)>3.500 and $1::numeric(5,2)<=4.50',70), +('hzbnote', 'a8', 'gesamt','Note unbekannt','$1::numeric(5,2)<0.00 or $1::numeric(5,2)>4.50',80); + + +--wäre eine Möglichkeit, die Werte aus der cifx zu überschreiben. Ist aber nicht notwendig, der Quatsch steht schon +--in dim_studiengang und lehr_stg_ab +--delete from xcube_dims where id='fb'; +--INSERT INTO xcube_dims (id,apnr,name,sort1) +--select 'fb',key_apnr,name,0 from organigramm where orgstruktur=20 +--and today() between gueltig_seit and gueltig_bis; + +--in der cifx stehen unter key=110 alle Institutionen, nicht nur lehreinheiten +delete from xcube_dims where id='lehr'; +INSERT INTO xcube_dims (id,apnr,name,sort1) +select 'lehr',key_apnr,name,0 from organigramm where orgstruktur=30 +and today() between gueltig_seit and gueltig_bis; + + <#if TableFieldExists('sos_lab_aggr','note')> +delete from xcube_dims where id='note'; +INSERT INTO xcube_dims (id,apnr,parent, name,strukturstr,sort1) +values +('note','gesamt',null,'alle','1=1',1), +('note', 'a1', 'gesamt','Sehr gut <=1,0','$1::numeric(5,2)>=0.00 and $1::numeric(5,2)<=1.00',10), +('note', 'a2', 'gesamt','Sehr gut 1,1-1,5','$1::numeric(5,2)>1.00 and $1::numeric(5,2)<=1.50',20), +('note', 'a3', 'gesamt','gut 1,6-2,0','$1::numeric(5,2)>1.50 and $1::numeric(5,2)<=2.00',30), +('note', 'a4', 'gesamt','gut 2,1-2,5','$1::numeric(5,2)>2.00 and $1::numeric(5,2)<=2.50',40), +('note', 'a5', 'gesamt','befriedigend 2,6-3,0','$1::numeric(5,2)>2.50 and $1::numeric(5,2)<=3.00',50), +('note', 'a6', 'gesamt','befriedigend 3,1-3,5','$1::numeric(5,2)>3.00 and $1::numeric(5,2)<=3.50',60), +('note', 'a7', 'gesamt','ausreichend 3,6-4,5','$1::numeric(5,2)>3.500 and $1::numeric(5,2)<=4.50',70), +('note', 'a8', 'gesamt','Note unbekannt','$1::numeric(5,2)<0.00 or $1::numeric(5,2)>4.50',80); + + + +delete from xcube_dims where id='dauer_rsz'; +INSERT INTO xcube_dims (id,apnr,name,sort1) +select distinct 'dauer_rsz',(-1)::varchar(10),'Stud.Dauer schneller als RSZ',-1 from xdummy; +INSERT INTO xcube_dims (id,apnr,name,sort1) +select distinct 'dauer_rsz',0::varchar(10),'Stud.Dauer in RSZ',0 from xdummy; +INSERT INTO xcube_dims (id,apnr,name,sort1) +select distinct 'dauer_rsz',1::varchar(10),'Stud.Dauer in RSZ + 1',1 from xdummy; +INSERT INTO xcube_dims (id,apnr,name,sort1) +select distinct 'dauer_rsz',2::varchar(10),'>= Stud.Dauer in RSZ + 2',2 from xdummy; + +delete from xcube_dims where id='hzb_zul'; +INSERT INTO xcube_dims (id,apnr, parent, name,strukturstr,sort1) +values +('hzb_zul','gesamt',null,'alle','1=1',1), +('hzb_zul', '1', '1-2-5-6', 'Allg. Hochschulreife','$1::integer = 1',10), +('hzb_zul', '4', '3-4', 'Allg. Hochschulreife im Ausland','$1::integer = 4',20), +('hzb_zul', '3-4','gesamt', 'Allg.u.fach(geb.) HSReife im Ausland','$1::integer in (3,4)',40), +('hzb_zul', '1-2-5-6','gesamt', 'Allg.u.fach(geb.) HSReife im Inland','$1::integer in (1,2,5,6)',30), +('hzb_zul', '3', '3-4', 'Fach(geb.) Hochschulreife im Ausl.','$1::integer = 3',40), +('hzb_zul', '6', '1-2-5-6','Fachgeb.HS-Reife','$1::integer = 6',50), +('hzb_zul', '2', '1-2-5-6','Fachhochschulreife','$1::integer = 2',60), +('hzb_zul', '5', '1-2-5-6','Sonstige','$1::integer = 5',70); + +delete from xcube_dims where id='zul_erg'; +INSERT INTO xcube_dims (id,apnr, name,strukturstr, sort1) +values +('zul_erg','0','Bewerbungen','1=1',0), +('zul_erg','1'::varchar(10),'Zulassungen','$1::integer in (1,2,3)',1 ), +('zul_erg','2'::varchar(10),'Annahmen','$1::integer in (2,3)',2 ), +('zul_erg','3'::varchar(10),'Einschreibung','$1::integer in (3)',3 ); + +--Zum Testen +--INSERT INTO xcube_dims (id,apnr,name,sort1,parent,strukturstr) +--VALUES +-- -('fs4','0','FS<4',1,NULL,NULL), +-- ('fs4','1','FS>=4',2,NULL,NULL); \ No newline at end of file diff --git a/src-modules/module/sxc/schluesseltabellen/xcube_install.sql b/src-modules/module/sxc/schluesseltabellen/xcube_install.sql new file mode 100644 index 0000000..79ea3be --- /dev/null +++ b/src-modules/module/sxc/schluesseltabellen/xcube_install.sql @@ -0,0 +1,84 @@ +--freemarker template + +<#assign xcubes = [ + {"name":"Studierendenwürfel_SXC", + "uniquename":"xcube_sxc_stud_sem_da_geschl_hs", + "sachgebiet":16, + "table_name":"sxc_stud_sem_da_geschl_hs", + "maskeninfo_id":47030 +} +] /> + +<#assign xcube_kennzahl = [ + { "maskeninfo_id":47030, + "apnr":"sxc_stud", + "name":"Studierende", + "aggrfunction":"sum(bil002__studierende__anzahl)", + "restriction":"bil002__studierende__q='e'", + "datatype":"integer", + "is_default":1, + "sortnr":1} +] /> + + +<#assign xcube_dimconfig = [ + <#-- SXC_Studierendenwürfel --> + {"maskeninfo_id":47030, + "name":"semester", + "caption":"Semester", + "is_coldefault":1, + "foreignkey_tab":"kenn_semester", + "foreignkey_col":"tid", + "foreignkey_cap":"druck", + "sortfield":"tid"}, + {"maskeninfo_id":47030, + "name":"hs_nr", + "caption":"Hochschule", + "is_rowdefault":1, + "is_sicht":1} + +] /> + + +--freemarker magic + + <#foreach cube in xcubes> +delete from xcube where maskeninfo_id=${cube.maskeninfo_id}; +delete from xcube_dimconfig where maskeninfo_id=${cube.maskeninfo_id}; +delete from xcube_kennzahl where maskeninfo_id=${cube.maskeninfo_id}; + insert into xcube (name,uniquename,table_name,maskeninfo_id,sachgebiet) + values ('${cube.name}','${cube.uniquename}','${cube.table_name}',${cube.maskeninfo_id},${cube.sachgebiet}); + + +<#foreach k in xcube_kennzahl> + insert into xcube_kennzahl (apnr,name,maskeninfo_id,aggrfunction,restriction,is_default,sortnr) values + ('${k.apnr}','${k.name}',${k.maskeninfo_id},'${k.aggrfunction?replace("\x0027","\x0027\x0027")}', + '${k.restriction?replace("\x0027","\x0027\x0027")}', + ${k.is_default},${k.sortnr}); +<#if k?keys?seq_contains("datatype")> update xcube_kennzahl set datatype='${k.datatype}' where maskeninfo_id='${k.maskeninfo_id}' and apnr='${k.apnr}'; + + + +<#foreach conf in xcube_dimconfig> +-- einfache durch zwei einfache Zeichen ersetzten x0027 +insert into xcube_dimconfig (maskeninfo_id,name,caption) +values (${conf.maskeninfo_id},'${conf.name}','${conf.caption?replace("\x0027","\x0027\x0027")}'); + + +<#if conf?keys?seq_contains("foreignkey_tab")> update xcube_dimconfig set foreignkey_tab='${conf.foreignkey_tab}' where maskeninfo_id='${conf.maskeninfo_id}' and name='${conf.name}'; +<#if conf?keys?seq_contains("foreignkey_cap")> update xcube_dimconfig set foreignkey_cap='${conf.foreignkey_cap}' where maskeninfo_id='${conf.maskeninfo_id}' and name='${conf.name}'; +<#if conf?keys?seq_contains("foreignkey_col")> update xcube_dimconfig set foreignkey_col='${conf.foreignkey_col}' where maskeninfo_id='${conf.maskeninfo_id}' and name='${conf.name}'; +<#if conf?keys?seq_contains("sortfield")> update xcube_dimconfig set sortfield='${conf.sortfield}' where maskeninfo_id='${conf.maskeninfo_id}' and name='${conf.name}'; +<#if conf?keys?seq_contains("is_sicht")> update xcube_dimconfig set is_sicht=${conf.is_sicht} where maskeninfo_id='${conf.maskeninfo_id}' and name='${conf.name}'; +<#if conf?keys?seq_contains("calc_gesamt")> update xcube_dimconfig set calc_gesamt=${conf.calc_gesamt} where maskeninfo_id='${conf.maskeninfo_id}' and name='${conf.name}'; +<#if conf?keys?seq_contains("is_rowdim")> update xcube_dimconfig set is_rowdim=${conf.is_rowdim} where maskeninfo_id='${conf.maskeninfo_id}' and name='${conf.name}'; +<#if conf?keys?seq_contains("is_secondrowdim")> update xcube_dimconfig set is_secondrowdim=${conf.is_secondrowdim} where maskeninfo_id='${conf.maskeninfo_id}' and name='${conf.name}'; +<#if conf?keys?seq_contains("is_rowdefault")> update xcube_dimconfig set is_rowdefault=${conf.is_rowdefault} where maskeninfo_id='${conf.maskeninfo_id}' and name='${conf.name}'; +<#if conf?keys?seq_contains("is_coldim")> update xcube_dimconfig set is_coldim=${conf.is_coldim} where maskeninfo_id='${conf.maskeninfo_id}' and name='${conf.name}'; +<#if conf?keys?seq_contains("is_secondcoldim")> update xcube_dimconfig set is_secondcoldim=${conf.is_secondcoldim} where maskeninfo_id='${conf.maskeninfo_id}' and name='${conf.name}'; +<#if conf?keys?seq_contains("is_coldefault")> update xcube_dimconfig set is_coldefault=${conf.is_coldefault} where maskeninfo_id='${conf.maskeninfo_id}' and name='${conf.name}'; +<#if conf?keys?seq_contains("foreignkey_cond")> update xcube_dimconfig set foreignkey_cond='${conf.foreignkey_cond?replace("\x0027","\x0027\x0027")}' where maskeninfo_id='${conf.maskeninfo_id}' and name='${conf.name}'; +<#if conf?keys?seq_contains("is_virtual")> update xcube_dimconfig set is_virtual=${conf.is_virtual} where maskeninfo_id='${conf.maskeninfo_id}' and name='${conf.name}'; +<#if conf?keys?seq_contains("vcsql")> update xcube_dimconfig set vcsql='${conf.vcsql?replace("\x0027","\x0027\x0027")}' where maskeninfo_id='${conf.maskeninfo_id}' and name='${conf.name}'; +<#if conf?keys?seq_contains("attrib_nachbearbeitung")> update xcube_dimconfig set attrib_nachbearbeitung='${conf.attrib_nachbearbeitung?replace("\x0027","\x0027\x0027")}' where maskeninfo_id='${conf.maskeninfo_id}' and name='${conf.name}'; +