From ce7c04b90223838137c95377d0b48ce9792a28f3 Mon Sep 17 00:00:00 2001 From: Daniel Quathamer Date: Sat, 19 Apr 2025 07:58:25 +0200 Subject: [PATCH] Neues Feld 'Endsemester' #6 --- src-modules/module/rpta/conf/includes.txt | 1 + src-modules/module/rpta/conf/rpta.xml | 2 + .../module/rpta/masken/48000_felderinfo.unl | 2 + .../rpta/masken/48000_masken_felder_bez.unl | 2 + .../module/rpta/masken/48000_maskeninfo.unl | 16 +- ...lumn_layout_sos_lab_pord_pruef_fuellen.sql | 545 ++++++++++++++++++ 6 files changed, 567 insertions(+), 1 deletion(-) create mode 100644 src-modules/module/rpta/schluesseltabellen/rpta_column_layout_sos_lab_pord_pruef_fuellen.sql diff --git a/src-modules/module/rpta/conf/includes.txt b/src-modules/module/rpta/conf/includes.txt index 832114b..f290124 100644 --- a/src-modules/module/rpta/conf/includes.txt +++ b/src-modules/module/rpta/conf/includes.txt @@ -5,6 +5,7 @@ images/icons/magic.svg WEB-INF/conf/edustore/db/module/rpta/schluesseltabellen/sx_stylesheets_einfuegen.sql WEB-INF/lib/superx-rpta.jar WEB-INF/reports/simple_table.jrtx +WEB-INF/reports/48110_leistungen_und_studiengaenge.jrxml xml/tabelle_jrxml_a4_quer.xsl xml/tabelle_jrxml_book_without_cover.xsl xml/tabelle_xls_48140.xsl diff --git a/src-modules/module/rpta/conf/rpta.xml b/src-modules/module/rpta/conf/rpta.xml index 93eaf2f..98cb2d1 100644 --- a/src-modules/module/rpta/conf/rpta.xml +++ b/src-modules/module/rpta/conf/rpta.xml @@ -497,6 +497,7 @@ scriptfile="" database=""/> + @@ -541,6 +542,7 @@ scriptfile="" database=""/> + diff --git a/src-modules/module/rpta/masken/48000_felderinfo.unl b/src-modules/module/rpta/masken/48000_felderinfo.unl index 1fcc33c..ff8ee17 100644 --- a/src-modules/module/rpta/masken/48000_felderinfo.unl +++ b/src-modules/module/rpta/masken/48000_felderinfo.unl @@ -22,6 +22,8 @@ and R.systeminfo_id=7) and uniquename='sos_stud_astat_rsz';^ 48011^Stichtag^23^330^-1^130^100^1^sql^30^1^1^<> select tid, name from sos_stichtag where stichtagsart='Studierende';^ ^<> select tid, name from sos_stichtag where stichtagsart='Studierende' and appl_key='0';^ 48012^Hörerstatus^200^330^-1^140^150^1^sql^30^0^1^<> select apnr, eintrag from hoererstatus order by 2^ ^<> select apnr, eintrag from hoererstatus where eintrag='alle';^ 48013^Jahr^110^0^0^140^80^1^integer^30^0^13^ ^ ^ ^ +48014^Filter Studierende^100^0^0^140^150^1^sql^20^0^1^<> SELECT id,caption from sx_repository where aktiv =1 and today() between gueltig_seit and gueltig_bis and art='SOS_STUD_FILTER' order by 2;^^^ +48015^Nur Endsemester^21^0^0^140^80^1^integer^30^0^1^<> select 1,'ja' from xdummy^Eintrag^ ^ 48018^Köpfe oder Fälle ?^0^0^0^140^150^1^sql^70^0^1^<> select apnr, eintrag from koepfe_oder_faelle order by 2^ ^<> select apnr, eintrag from koepfe_oder_faelle where eintrag = 'Fälle';^ 48022^Geschlecht^110^0^0^140^80^1^integer^30^0^1^<> SELECT apnr,druck FROM cif where key = 9003 and apnr between 1 and 4 order by 1;^ ^ ^ 48023^Spalten^3001^0^0^150^190^10^char^30^0^1^<>\ diff --git a/src-modules/module/rpta/masken/48000_masken_felder_bez.unl b/src-modules/module/rpta/masken/48000_masken_felder_bez.unl index d472300..1fdfeef 100644 --- a/src-modules/module/rpta/masken/48000_masken_felder_bez.unl +++ b/src-modules/module/rpta/masken/48000_masken_felder_bez.unl @@ -12,6 +12,8 @@ 48000^48011^ 48000^48012^ 48000^48013^ +48000^48014^ +48000^48015^ 48000^48018^ 48000^48022^ 48000^48023^ diff --git a/src-modules/module/rpta/masken/48000_maskeninfo.unl b/src-modules/module/rpta/masken/48000_maskeninfo.unl index 6bfddb3..ffd8c86 100644 --- a/src-modules/module/rpta/masken/48000_maskeninfo.unl +++ b/src-modules/module/rpta/masken/48000_maskeninfo.unl @@ -75,9 +75,19 @@ order by CL.sortnr\ <#assign jahr_filter=jahr_filter + ")" />\ \ \ -<#assign filter="<>\ +<#assign semester_filter ="1=1\ /* and sem_rueck_beur_ein >= <> */\ /* and sem_rueck_beur_ein <= <> */\ +" />\ +<#if "<>"="1" || "<>"="2">\ +<#assign semester_filter = semester_filter+ " and substring('' || sem_rueck_beur_ein from 5 for 1)='<>'" />\ +\ +<#if "<>"="1">\ +--nur Endsemester\ +/* <#assign semester_filter = semester_filter+ " and 1=1 and sem_rueck_beur_ein = '<>'" /> */\ +\ +\ +<#assign filter="<>\ /* and sem_rueck_beur_ein = <> */\ /* and stichtag = <> */\ /* and <> */\ @@ -86,10 +96,14 @@ order by CL.sortnr\ /* and geschlecht = <> */\ /* and fach_sem_zahl <= <> */\ /* and substring('' || sem_rueck_beur_ein from 5 for 1)='<>' */\ +/* and ${<>} */\ " />\ \ <#assign filter= filter + " and " + jahr_filter />\ \ +<#assign filter= filter + " and " + semester_filter />\ +\ +\ <#assign filter = filter + " and 's_' || tid_stg in "+Studiengang.allNeededKeysList /> \ /* <#assign filter = filter + " and '' || ca12_staat in "+Staatsangehörigkeit.allNeededKeysList /> --<> */\ /* <#assign filter = filter + " and stg in "+Fächer.allNeededKeysList /> --<> */\ diff --git a/src-modules/module/rpta/schluesseltabellen/rpta_column_layout_sos_lab_pord_pruef_fuellen.sql b/src-modules/module/rpta/schluesseltabellen/rpta_column_layout_sos_lab_pord_pruef_fuellen.sql new file mode 100644 index 0000000..3a1b3be --- /dev/null +++ b/src-modules/module/rpta/schluesseltabellen/rpta_column_layout_sos_lab_pord_pruef_fuellen.sql @@ -0,0 +1,545 @@ +--freemarker template + + +select count(*) from rpta_resultset where uniquename='sos_lab_pord_ppruef'; + + +select uniquename from rpta_resultset where uniquename='sos_lab_pord_ppruef'; + + +<#assign rpta_column_layouts = [ {"uniquename":"sos_lab_pord_ppruef_modul", +"caption":"Modulprüfungen und Prüfer_innen Einzeldaten", +"rpta_resultset":"sos_lab_pord_ppruef", +"whereclause":"is_modul=1", +"description":"Modulprüfungen und Prüfer_innen" +}, +{"uniquename":"sos_lab_pord_ppruef_thesis", +"caption":"Abschlussarbeiten und Betreuer_innen Einzeldaten", +"rpta_resultset":"sos_lab_pord_ppruef", +"whereclause":"labnr in (select labnr from sos_dipl_pos_swf)", +"description":"Abschlussarbeiten und Betreuer_innen" +}] + /> + +<#assign rpta_columns = [ + +{"uniquename":"matrikel_nr", +"srcfieldname":"matrikel_nr", +"column_type":"physicalColumn", +"format_code":"INT_NO_SEP", +"is_aggregate":0, +"caption":"Matrikel-Nr.", +"is_visible":"1", +"visible_size":5}, + + {"uniquename":"sourcesystem", +"srcfieldname":"sourcesystem", +"column_type":"physicalColumn", +"format_code":"", +"is_aggregate":0, +"caption":"Quellsystem", +"is_visible":"0", +"is_aggregate":0, +"visible_size":5}, + + {"uniquename":"labnr", +"srcfieldname":"labnr", +"column_type":"physicalColumn", +"format_code":"", +"is_aggregate":0, +"caption":"ID der Prüfung", +"is_visible":"0", +"is_aggregate":0, +"visible_size":5}, + +{"uniquename":"sem_der_pruefung", +"srcfieldname":"sem_der_pruefung", +"column_type":"physicalColumn", +"format_code":"INT_NO_SEP", +"is_aggregate":0, +"caption":"Semester", +"is_visible":"0", +"is_aggregate":0, +"visible_size":5}, + +{"uniquename":"sem_rueck_beur_ein_max", +"srcfieldname":"sem_rueck_beur_ein_max", +"targetfieldname":"sos_lab_sem_rueck_beur_ein_max", +"column_type":"lookupColumn", +"format_code":"INT_NO_SEP", +"is_aggregate":0, +"caption":"Letztes Semester", +"is_visible":1, +"visible_size":5, +"col_function":"select sem_rueck_beur_ein from sos_sos S where S.matrikel_nr=tmp_sos_lab_pord_ppruef.matrikel_nr"} +, +{"uniquename":"status", +"srcfieldname":"status", +"column_type":"lookupColumn", +"is_aggregate":0, +"caption":"Status", +"is_visible":1, +"is_aggregate":0, +"visible_size":5, + "col_function":"select ST.apnr from sos_k_status ST where val(ST.astat)=kz_rueck_beur_ein"}, + +{"uniquename":"hrst", +"srcfieldname":"hrst", +"column_type":"physicalColumn", +"is_aggregate":0, +"caption":"Hörerstatus", +"is_visible":1, +"visible_size":5}, + +{"uniquename":"vorname", +"srcfieldname":"vorname", +"column_type":"lookupColumn", +"is_aggregate":0, +"caption":"Vorname", +"is_visible":1, +"is_aggregate":0, +"visible_size":5, + "col_function":"select A.firstname from sos_stud_address A where A.matrikel_nr=tmp_sos_lab_pord_ppruef.matrikel_nr"}, + +{"uniquename":"nachname", +"srcfieldname":"nachname", +"column_type":"lookupColumn", +"is_aggregate":0, +"caption":"Nachname", +"is_visible":1, +"is_aggregate":0, +"visible_size":5, + "col_function":"select A.surname from sos_stud_address A where A.matrikel_nr=tmp_sos_lab_pord_ppruef.matrikel_nr"}, + +{"uniquename":"res1", +"srcfieldname":"res1", +"column_type":"lookupColumn", +"is_aggregate":0, +"caption":"Austauschstudierende/Doppelabsolventen", +"is_visible":1, +"visible_size":5, +"col_function":"select min(attributevalue) from personattribute A where tmp_sos_lab_pord_ppruef.sem_der_pruefung between A.semester_von and A.semester_bis and A.personattributetype_id="+K_SOS_PERSATTR_AUSTAUSCH+" and A.matrikel_nr=tmp_sos_lab_pord_ppruef.matrikel_nr"}, + +{"uniquename":"stg", +"srcfieldname":"dim_studiengang_stg", +"column_type":"physicalColumn", +"is_aggregate":0, +"caption":"Fach", +"is_visible":1, +"visible_size":5}, + +{"uniquename":"abschluss", +"srcfieldname":"dim_studiengang_abschluss", +"column_type":"physicalColumn", +"is_aggregate":0, +"caption":"Abschluss", +"is_visible":1, +"visible_size":5} + +{"uniquename":"fach_sem_zahl", +"srcfieldname":"fach_sem_zahl", +"column_type":"physicalColumn", +"is_aggregate":0, +"caption":"Fachsemester", +"is_visible":1, +"visible_size":5}, + +{"uniquename":"stgnr", +"srcfieldname":"stgnr", +"column_type":"logicalColumn", +"is_aggregate":0, +"caption":"Studiengangnr.", +"is_visible":1, +"visible_size":5, +"col_function":"'''' || studiengang_nr || fach_nr"}, + + {"uniquename":"part", +"srcfieldname":"part", +"column_type":"physicalColumn", +"is_aggregate":0, +"caption":"Prüfungsart", +"is_visible":1, +"visible_size":5}, + + {"uniquename":"pnr_pos", +"srcfieldname":"pnr", +"column_type":"physicalColumn", +"format_code":"INT_NO_SEP", +"is_aggregate":0, +"caption":"Prüfungsnummer POS", +"is_visible":0, +"visible_size":5}, + +{"uniquename":"elementnr", +"srcfieldname":"", +"targetfieldname":"elementnr", +"column_type":"logicalColumn", +"is_aggregate":0, +"caption":"Prüfungsnummer", +"is_visible":1, +"visible_size":5, +"col_function":"pktxt"}, + + + {"uniquename":"pversuch", +"srcfieldname":"pversuch", +"column_type":"physicalColumn", +"is_aggregate":0, +"caption":"Prüfungsversuch", +"is_visible":1, +"visible_size":5}, + + {"uniquename":"prueck", +"srcfieldname":"prueck", +"column_type":"physicalColumn", +"is_aggregate":0, +"caption":"Rücktritt", +"is_visible":1, +"visible_size":5}, + + {"uniquename":"pversion_ktxt", +"srcfieldname":"pversion_ktxt", +"column_type":"physicalColumn", +"is_aggregate":0, +"caption":"PO-Version", +"is_visible":1, +"visible_size":5}, + + {"uniquename":"pstatus", +"srcfieldname":"pstatus", +"column_type":"physicalColumn", +"is_aggregate":0, +"caption":"Prüfungsstatus", +"is_visible":1, +"visible_size":5}, + + {"uniquename":"d_abg_pruefung", +"srcfieldname":"d_abg_pruefung", +"column_type":"physicalColumn", +"is_aggregate":0, +"caption":"Prüfungsdatum", +"is_visible":1, +"visible_size":5}, + + {"uniquename":"note", +"srcfieldname":"note", +"column_type":"physicalColumn", +"is_aggregate":0, +"caption":"Note", +"is_visible":1, +"visible_size":5}, + + {"uniquename":"sos_lab_panerk", +"srcfieldname":"sos_lab_panerk", +"column_type":"physicalColumn", +"is_aggregate":0, +"caption":"Anerkennung", +"is_visible":1, +"visible_size":5}, + + {"uniquename":"pvermerk", +"srcfieldname":"pvermerk", +"column_type":"physicalColumn", +"is_aggregate":0, +"caption":"Vermerk", +"is_visible":1, +"visible_size":5}, + + {"uniquename":"pform", +"srcfieldname":"pform", +"column_type":"physicalColumn", +"is_aggregate":0, +"caption":"Prüfungsform", +"is_visible":1, +"visible_size":5}, + +{"uniquename":"pdtxt", +"srcfieldname":"pdtxt", +"column_type":"physicalColumn", +"is_aggregate":0, +"caption":"PO-Element Name", +"is_visible":1, +"visible_size":5}, + + {"uniquename":"ppruef1", +"srcfieldname":"sos_lab_ppruef1", +"column_type":"physicalColumn", +"is_aggregate":0, +"caption":"Erstprüfer_in Schlüssel", +"is_visible":0, +"visible_size":5}, + +{"uniquename":"ppruef1_str", +"srcfieldname":"ppruef1", +"targetfieldname":"sos_lab_ppruef1_str", +"column_type":"lookupColumn", +"is_aggregate":0, +"caption":"Erstprüfer_in", +"is_visible":1, +"visible_size":5, +"col_function":"select replace(C.druck,'','','''') from cifx C where C.key=9011 and C.apnr=tmp_sos_lab_pord_ppruef.sos_lab_ppruef1"}, + + {"uniquename":"ppruef2", +"srcfieldname":"sos_lab_ppruef2", +"column_type":"physicalColumn", +"is_aggregate":0, +"caption":"Zweitprüfer_in", +"is_visible":0, +"visible_size":5}, + +{"uniquename":"ppruef2_str", +"srcfieldname":"ppruef2", +"targetfieldname":"sos_lab_ppruef2_str", +"column_type":"lookupColumn", +"is_aggregate":0, +"caption":"Zweitprüfer_in", +"is_visible":1, +"visible_size":5, +"col_function":"select replace(C.druck,'','','''') from cifx C where C.key=9011 and C.apnr=tmp_sos_lab_pord_ppruef.sos_lab_ppruef2"} +, +{"uniquename":"sem_d_abg_pruefung", +"srcfieldname":"sem_d_abg_pruefung", +"targetfieldname":"sos_lab_sem_d_abg_pruefung", +"column_type":"logicalColumn", +"format_code":"INT_NO_SEP", +"is_aggregate":0, +"caption":"Semester der Prüfung", +"is_visible":1, +"visible_size":5, +"col_function":"sem_der_pruefung"} + + + + ] /> + + ---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, + format_code_uniquename varchar(255), + format_code_id integer +); + +CREATE temp TABLE tmp_rpta_column_layout +( + uniquename varchar(255) NOT NULL, + caption varchar(255), + resultset_id integer, + whereclause text, + description text +); + + +<#foreach rpta_column_layout in rpta_column_layouts> + +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, + format_code_uniquename + ) +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, +<#if column.col_function?exists>'${column.col_function}'<#else>null::varchar , +${column.is_visible}, +${column.visible_size}, +${column.is_aggregate}, +${sortnr*10}, +<#if column.description?exists>'${column.description}'<#else>null::varchar , +<#if column.format_code?exists>'${column.format_code}'<#else>null::varchar +FROM rpta_resultset R, rpta_column_type T +where R.uniquename='${rpta_resultset}' +and T.uniquename='${column.column_type}'; + + + +update tmp_rpta_column set format_code_id=C.tid +from rpta_format_code C +where C.uniquename=tmp_rpta_column.format_code_uniquename +and format_code_uniquename is not null; + + +select * into temp tmp_rpta_column2layout +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_resultset}' +and L.uniquename in ( +<#foreach rpta_column_layout in rpta_column_layouts> +'${rpta_column_layout.uniquename}', +'xy') +) +; + +select * into temp tmp_rpta_column_layout_target +from rpta_column_layout +where resultset_id in (select tid +FROM rpta_resultset +where uniquename='${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 T +where 0=(select count(*) from tmp_rpta_column_layout_target T2 +where T.uniquename=T2.uniquename); + +drop table tmp_rpta_column_layout_target; + +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_resultset}' +and L.uniquename in ( +<#foreach rpta_column_layout in rpta_column_layouts> +'${rpta_column_layout.uniquename}', +'xy') +) +; + +select * into temp tmp_rpta_column2 +from tmp_rpta_column T +where (resultset_id,uniquename) not in +(select resultset_id,uniquename 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_column2; + +--evtl. neuen Satz einfügen, dann alle updaten + +update rpta_column set ( caption, + srcfieldname, + targetfieldname, + column_type, + col_function, + is_aggregate, + description) + = (select caption, + srcfieldname, + targetfieldname, + column_type, + col_function, + is_aggregate, + description + from tmp_rpta_column T + where T.resultset_id=rpta_column.resultset_id + and T.uniquename=rpta_column.uniquename) + where custom=0 + and (resultset_id,uniquename) in +(select T.resultset_id,T.uniquename +from tmp_rpta_column T) +; + +drop table tmp_rpta_column2; + +insert into rpta_column2layout(column_id, + layout_id, + sortnr, + is_visible, + visible_size, + caption, + description, + format_code_id) +select C.tid as column_id, + L.tid as layout_id, + T.sortnr, + T.is_visible, + T.visible_size, + T.caption, + T.description, + T.format_code_id +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 in ( +<#foreach rpta_column_layout in rpta_column_layouts> +'${rpta_column_layout.uniquename}', +'xy') +and L.resultset_id=T.resultset_id + ; +drop table tmp_rpta_column; +drop table if exists tmp_rpta_column2; +drop TABLE tmp_rpta_column_layout; +drop table tmp_rpta_column2layout; + +