From 6bfb32c8f3239e1e69f1a863afc3c5682db29a21 Mon Sep 17 00:00:00 2001 From: Daniel Quathamer Date: Thu, 20 Aug 2026 19:48:51 +0200 Subject: [PATCH] =?UTF-8?q?Upload/Unload=20von=20Best=C3=A4nden=20in=20Sup?= =?UTF-8?q?erX-connect=20#8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/etl/masken/42000_felderinfo.unl | 16 +++++++ .../etl/masken/42000_masken_felder_bez.unl | 1 + ...e_load_etl_sxc_stud_zugang_abgang_aggr.sql | 28 +++++++++++++ .../schluesseltabellen/etl_manager_tab.unl | 1 + .../schluesseltabellen/etl_step_fuellen.sql | 39 +++++++++++++++-- .../etl/schluesseltabellen/fm_templates.unl | 6 +-- .../trans_rpta_column_layout.sql | 2 +- .../trans_sxc_stud_zugang_abgang_aggr.sql | 42 +++++++++++++++++++ superx/edit/etl/etl_manager.jsp | 1 + 9 files changed, 129 insertions(+), 7 deletions(-) create mode 100644 src-modules/module/etl/schluesseltabellen/create_load_etl_sxc_stud_zugang_abgang_aggr.sql create mode 100644 src-modules/module/etl/schluesseltabellen/trans_sxc_stud_zugang_abgang_aggr.sql diff --git a/src-modules/module/etl/masken/42000_felderinfo.unl b/src-modules/module/etl/masken/42000_felderinfo.unl index f962f41..684fbf8 100644 --- a/src-modules/module/etl/masken/42000_felderinfo.unl +++ b/src-modules/module/etl/masken/42000_felderinfo.unl @@ -38,3 +38,19 @@ select null::char(1),'Keine Auwahl möglich' from xdummy\ \ /* <> */^hidden^^ 42009^Komponente^17^0^0^130^100^1^integer^30^0^1^<> select tid,name from systeminfo order by 2^ ^ ^ +42010^Hochschule^17^0^0^130^100^1^integer^30^0^1^<> --freemarker template\ +\ +\ +select 1 from xdummy where 0 < (select count(*) from db_version where his_system='sxc')\ +union select 0 from xdummy where \ + 0 = (select count(*) from db_version where his_system='sxc');\ +\ +\ +\ +<#if SXC_installed==1>\ +select apnr,kurztext from sxc_hochschulen_liste order by 2;\ +<#else>\ +select null::char(1),'Keine Auwahl möglich' from xdummy\ +\ +\ +/* <> */^hidden^ ^ diff --git a/src-modules/module/etl/masken/42000_masken_felder_bez.unl b/src-modules/module/etl/masken/42000_masken_felder_bez.unl index 0a61abe..5ff8962 100644 --- a/src-modules/module/etl/masken/42000_masken_felder_bez.unl +++ b/src-modules/module/etl/masken/42000_masken_felder_bez.unl @@ -8,3 +8,4 @@ 42000^42007^ 42000^42008^ 42000^42009^ +42000^42010^ diff --git a/src-modules/module/etl/schluesseltabellen/create_load_etl_sxc_stud_zugang_abgang_aggr.sql b/src-modules/module/etl/schluesseltabellen/create_load_etl_sxc_stud_zugang_abgang_aggr.sql new file mode 100644 index 0000000..8832764 --- /dev/null +++ b/src-modules/module/etl/schluesseltabellen/create_load_etl_sxc_stud_zugang_abgang_aggr.sql @@ -0,0 +1,28 @@ +--Freemarker Template + +--used in etl-job qa_project_upload +<#if SQLdialect='Postgres'> +drop table if exists tmp_sxc_stud_zugang_abgang_aggr; + + + +CREATE TABLE tmp_sxc_stud_zugang_abgang_aggr ( + hs_nr char(10) NOT NULL, + jahr integer NOT NULL, + anfangsbestand integer, + zugang integer, + zugang_ersteinschr integer, + abgang integer, + abgang_hauptpr integer, + abgang_ohne_hauptpr integer, + hauptpr_summe integer, + hauptpr_bleibt integer, + endbestand integer, + datenstand date +); + + + + + + diff --git a/src-modules/module/etl/schluesseltabellen/etl_manager_tab.unl b/src-modules/module/etl/schluesseltabellen/etl_manager_tab.unl index 774fb28..a6d9493 100644 --- a/src-modules/module/etl/schluesseltabellen/etl_manager_tab.unl +++ b/src-modules/module/etl/schluesseltabellen/etl_manager_tab.unl @@ -2,3 +2,4 @@ 2^SICHT^Sichten^0^sichten_unload^sichten_upload^SICHTEN_TID^42000^42004^1^ 3^QA_PROJECT^Testfälle^0^qa_project_unload^qa_project_upload^QA_PROJECT_ID^42000^42007^1^ 4^RPTA_COLUMN_LAYOUT^Spaltenlayouts^0^rpta_column_layout_unload^rpta_column_layout_upload^RPTA_COLUMN_LAYOUT_TID^42000^42008^1^ +5^SXC_STUD^SXC Studierendenströme^0^sxc_stud_zugang_abgang_aggr_unload^sxc_stud_zugang_abgang_aggr_upload^HS_NR^42000^42010^1^ diff --git a/src-modules/module/etl/schluesseltabellen/etl_step_fuellen.sql b/src-modules/module/etl/schluesseltabellen/etl_step_fuellen.sql index ece1c0a..bbcc857 100644 --- a/src-modules/module/etl/schluesseltabellen/etl_step_fuellen.sql +++ b/src-modules/module/etl/schluesseltabellen/etl_step_fuellen.sql @@ -12,7 +12,9 @@ {"uniquename":"sos_gewichtung_unload", "name":"Gewichtungen entladen", "systeminfo_id":270 ,"logfile":""}, {"uniquename":"qa_project_unload", "name":"Testfallprojekte entladen", "systeminfo_id":260 ,"logfile":""}, {"uniquename":"rpta_column_layout_unload", "name":"Spaltenlayout entladen", "systeminfo_id":330 ,"logfile":""}, - {"uniquename":"rpta_column_layout_upload", "name":"Spaltenlayout hochladen", "systeminfo_id":330 ,"logfile":""} + {"uniquename":"rpta_column_layout_upload", "name":"Spaltenlayout hochladen", "systeminfo_id":330 ,"logfile":""}, + {"uniquename":"sxc_stud_zugang_abgang_aggr_unload", "name":"Studierendenströme für SXC entladen", "systeminfo_id":360 ,"logfile":""}, + {"uniquename":"sxc_stud_zugang_abgang_aggr_upload", "name":"Studierendenströme für SXC hochladen", "systeminfo_id":360 ,"logfile":""} ] /> @@ -51,6 +53,16 @@ {"etl_job":"rpta_column_layout_upload","param_name":"RPTA_COLUMN_LAYOUT_TID", "name":"ID", "param_default":""}, {"etl_job":"rpta_column_layout_upload","param_name":"PATH_TO_INPUTFILE", "name":"Eingabedatei", "param_default":""}, {"etl_job":"rpta_column_layout_upload","param_name":"FORMAT", "name":"Format", "param_default":"XML"}, + + {"etl_job":"sxc_stud_zugang_abgang_aggr_unload","param_name":"HS_NR", "name":"Hochschule", "param_default":""}, + {"etl_job":"sxc_stud_zugang_abgang_aggr_unload","param_name":"PATH_TO_OUTPUTFILE", "name":"Ausgabedatei", "param_default":"$SUPERX_DIR/db/masken/rpta_column_layout_$RPTA_COLUMN_LAYOUT_UNIQUENAME.xml"}, + {"etl_job":"sxc_stud_zugang_abgang_aggr_unload","param_name":"FORMAT", "name":"Ausgabeformat", "param_default":"XML"}, + + {"etl_job":"sxc_stud_zugang_abgang_aggr_upload","param_name":"SYSTEMINFO_ID", "name":"Komponente", "param_default":""}, + {"etl_job":"sxc_stud_zugang_abgang_aggr_upload","param_name":"HS_NR", "name":"ID", "param_default":""}, + {"etl_job":"sxc_stud_zugang_abgang_aggr_upload","param_name":"PATH_TO_INPUTFILE", "name":"Eingabedatei", "param_default":""}, + {"etl_job":"sxc_stud_zugang_abgang_aggr_upload","param_name":"FORMAT", "name":"Format", "param_default":"XML"}, + {"etl_job":"sos_gewichtung_unload","param_name":"SYSTEMINFO_ID", "name":"Komponente", "param_default":""}, {"etl_job":"sos_gewichtung_unload","param_name":"PATH_TO_OUTPUTFILE", "name":"Ausgabedatei", "param_default":"$SUPERX_DIR/db/db/module/sos/schluesseltabellen/sichten_$SYSTEMINFO_ID.xml"}, @@ -132,7 +144,15 @@ {"etl_job":"rpta_column_layout_upload", "uniquename":"upload_rpta_column_layout_tab", "name":"tmp_rpta_column_layout hochladen", "type":"LOAD" }, {"etl_job":"rpta_column_layout_upload", "uniquename":"upload_rpta_column_tab", "name":"tmp_rpta_column hochladen", "type":"LOAD" }, {"etl_job":"rpta_column_layout_upload", "uniquename":"upload_rpta_column2layout_tab", "name":"tmp_rpta_column2layout hochladen", "type":"LOAD" }, - {"etl_job":"rpta_column_layout_upload", "uniquename":"trans_rpta_column_layout", "name":"rpta_column_layout füllen", "type":"DOSQL" } + {"etl_job":"rpta_column_layout_upload", "uniquename":"trans_rpta_column_layout", "name":"rpta_column_layout füllen", "type":"DOSQL" }, + + {"etl_job":"sxc_stud_zugang_abgang_aggr_unload", "uniquename":"sxc_stud_zugang_abgang_aggr_unload_ges", "name":"Studierendenströme für SXC entladen", "type":"MSG"}, + {"etl_job":"sxc_stud_zugang_abgang_aggr_unload", "uniquename":"unload_sxc_stud_zugang_abgang_aggr_tab", "name":"sxc_stud_zugang_abgang_aggr entladen", "type":"UNLOAD", "parent":"sxc_stud_zugang_abgang_aggr_unload_ges"}, + + {"etl_job":"sxc_stud_zugang_abgang_aggr_upload", "uniquename":"create_tmp_sxc_stud_zugang_abgang_aggr", "name":"Tabelle tmp_sxc_stud_zugang_abgang_aggr erzeugen", "type":"DOSQL" }, + {"etl_job":"sxc_stud_zugang_abgang_aggr_upload", "uniquename":"upload_sxc_stud_zugang_abgang_aggr_tab", "name":"tmp_sxc_stud_zugang_abgang_aggr hochladen", "type":"LOAD" }, + {"etl_job":"sxc_stud_zugang_abgang_aggr_upload", "uniquename":"trans_sxc_stud_zugang_abgang_aggr", "name":"sxc_stud_zugang_abgang_aggr füllen", "type":"DOSQL" } + ] /> <#assign etl_step_properties = [ @@ -279,7 +299,20 @@ {"etl_step":"unload_qa_mask_execution_tab","prop_name":"select_stmt", "prop_value":"SELECT E.name,E.userinfo_id,E.maskeninfo_id,E.is_active,E.stylesheet_id,E.contenttype,E.output_filename,E.systeminfo_id,E.uniquename FROM qa_mask_execution E where E.tid in (select P.mask_execution_id from qa_mask_execution2project P where P.project_id= $QA_PROJECT_ID ) order by 1;" }, {"etl_step":"unload_qa_mask_execution_assert_tab","prop_name":"select_stmt", "prop_value":"SELECT E.uniquename,A.rownr,A.colnr,A.result_value_min,A.result_value_max,A.is_active,A.caption FROM qa_mask_execution E, qa_mask_execution_assert A where E.tid=A.mask_execution_id and E.tid in (select P.mask_execution_id from qa_mask_execution2project P where P.project_id= $QA_PROJECT_ID ) order by 1;" }, - {"etl_step":"unload_qa_mask_execution2project_tab","prop_name":"select_stmt", "prop_value":"SELECT E.uniquename as mask_execution_uniquename,P.uniquename as project_uniquename,DP.issue_id FROM qa_mask_execution2project DP, qa_mask_execution E, qa_project P where DP.mask_execution_id=E.tid and DP.project_id=P.tid and DP.project_id= $QA_PROJECT_ID order by 1;" } + {"etl_step":"unload_qa_mask_execution2project_tab","prop_name":"select_stmt", "prop_value":"SELECT E.uniquename as mask_execution_uniquename,P.uniquename as project_uniquename,DP.issue_id FROM qa_mask_execution2project DP, qa_mask_execution E, qa_project P where DP.mask_execution_id=E.tid and DP.project_id=P.tid and DP.project_id= $QA_PROJECT_ID order by 1;" }, + + {"etl_step":"unload_sxc_stud_zugang_abgang_aggr_ges","prop_name":"msg", "prop_value":"Entlade Studierendenströme für SXC $HS_NR" }, + {"etl_step":"unload_sxc_stud_zugang_abgang_aggr_tab","prop_name":"select_stmt", "prop_value":"SELECT A.* from sxc_stud_zugang_abgang_aggr A where val(A.hs_nr) in ( $HS_NR ) order by 1;" }, + + {"etl_step":"create_tmp_sxc_stud_zugang_abgang_aggr","prop_name":"PATH_TO_INPUTFILE", "prop_value":"$SUPERX_DIR/db/module/etl/schluesseltabellen/create_load_etl_sxc_stud_zugang_abgang_aggr.sql" }, + + {"etl_step":"upload_sxc_stud_zugang_abgang_aggr_tab","prop_name":"target_table", "prop_value":"tmp_sxc_stud_zugang_abgang_aggr" }, + {"etl_step":"upload_sxc_stud_zugang_abgang_aggr_tab","prop_name":"format", "prop_value":"xml" }, + {"etl_step":"upload_sxc_stud_zugang_abgang_aggr_tab","prop_name":"search_path", "prop_value":"/etlAction/unload [@name=\"unload_sxc_stud_zugang_abgang_aggr_tab\"]/rs/row" }, + {"etl_step":"upload_sxc_stud_zugang_abgang_aggr_tab","prop_name":"path_to_inputfile", "prop_value":"$PATH_TO_INPUTFILE" }, + + {"etl_step":"trans_sxc_stud_zugang_abgang_aggr","prop_name":"PATH_TO_INPUTFILE", "prop_value":"$SUPERX_DIR/db/module/etl/schluesseltabellen/trans_sxc_stud_zugang_abgang_aggr.sql" } + diff --git a/src-modules/module/etl/schluesseltabellen/fm_templates.unl b/src-modules/module/etl/schluesseltabellen/fm_templates.unl index d19a859..2ff0490 100644 --- a/src-modules/module/etl/schluesseltabellen/fm_templates.unl +++ b/src-modules/module/etl/schluesseltabellen/fm_templates.unl @@ -1,4 +1,4 @@ -17^ETL_MAKROS^<#macro ETL_STEPS_FUELLEN>\ +157^ETL_MAKROS^<#macro ETL_STEPS_FUELLEN>\ <@etl_steps_def_check/>\ \ <#-- Hinterlegen von Defaultwerten für step_properties -->\ @@ -423,7 +423,7 @@ drop table tmp_etl_job_param;\ drop table tmp_etl_step_property;\ drop table tmp_etl_step_relation;\ \ -\ +<#if testfaelle?exists && testfaelle?has_content>\ <#foreach testfall in testfaelle>\ select 'testfall ${testfall.testcase}: ERFOLG'\ from xdummy\ @@ -436,7 +436,7 @@ where ${testfall.assertion}!=(${testfall.sql})\ \ \ --Ende Testfälle\ -\ +\ <#foreach etl_step_property in etl_step_properties>\ update etl_step_property set prop_value='${etl_step_property.prop_value}' where prop_name='${etl_step_property.prop_name}' and etl_step_id=(select S.tid from etl_step S where S.uniquename='${etl_step_property.etl_step}');\ \ diff --git a/src-modules/module/etl/schluesseltabellen/trans_rpta_column_layout.sql b/src-modules/module/etl/schluesseltabellen/trans_rpta_column_layout.sql index bd051af..00a69db 100644 --- a/src-modules/module/etl/schluesseltabellen/trans_rpta_column_layout.sql +++ b/src-modules/module/etl/schluesseltabellen/trans_rpta_column_layout.sql @@ -130,7 +130,7 @@ INSERT INTO tmp_rpta_column ) select R.tid, '${column.uniquename}', -<#if column.caption?exists> +<#if column.caption?exists && column.caption !=""> '${column.caption}', <#else> '${column.caption_der_spalte}', diff --git a/src-modules/module/etl/schluesseltabellen/trans_sxc_stud_zugang_abgang_aggr.sql b/src-modules/module/etl/schluesseltabellen/trans_sxc_stud_zugang_abgang_aggr.sql new file mode 100644 index 0000000..3ef7636 --- /dev/null +++ b/src-modules/module/etl/schluesseltabellen/trans_sxc_stud_zugang_abgang_aggr.sql @@ -0,0 +1,42 @@ +--freemarker template +<#include "SQL_lingua_franca"/> +<#include "SuperX_general"/> +<#include "RPTA-Makros"/> + +delete from sxc_stud_zugang_abgang_aggr +where hs_nr in (select distinct M.hs_nr +from tmp_sxc_stud_zugang_abgang_aggr M) +; + +insert into sxc_stud_zugang_abgang_aggr( + hs_nr, + jahr, + anfangsbestand, + zugang, + zugang_ersteinschr, + abgang, + abgang_hauptpr, + abgang_ohne_hauptpr, + hauptpr_summe, + hauptpr_bleibt, + endbestand, + datenstand) + select +hs_nr, +jahr, +anfangsbestand, +zugang, +zugang_ersteinschr, +abgang, +abgang_hauptpr, +abgang_ohne_hauptpr, +hauptpr_summe, +hauptpr_bleibt, +endbestand, +datenstand + from tmp_sxc_stud_zugang_abgang_aggr + ; + + +drop table tmp_sxc_stud_zugang_abgang_aggr; + diff --git a/superx/edit/etl/etl_manager.jsp b/superx/edit/etl/etl_manager.jsp index 465e61e..5bca3ef 100644 --- a/superx/edit/etl/etl_manager.jsp +++ b/superx/edit/etl/etl_manager.jsp @@ -144,6 +144,7 @@ var fldElem=document.getElementById(mydiv); function EtlMaskeComboLaden(fname,zeilenanzahl, caption,maskentid) { var editurl="/superx/edit/kern/maske_combo_laden.jsp?tid="+maskentid+ "&Feldname="+getEncoded(fname); + editurl +="&referrerForm=saveEtlXml"; editurl +="&zeilenanzahl="+zeilenanzahl+"¶ms="; neu2=window.open(editurl,"_blank","directories=no,location=no,menubar=no,scrollbars=yes,resizable=yes,toolbar=no,width=800,height=660"); return false;