diff --git a/src-modules/module/costage/conf/costage.xml b/src-modules/module/costage/conf/costage.xml index ffdd9e8..b4cd4ab 100644 --- a/src-modules/module/costage/conf/costage.xml +++ b/src-modules/module/costage/conf/costage.xml @@ -197,8 +197,9 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[CO]" /> - - + + + @@ -570,11 +571,15 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[CO]" /> Wenn TSG vor MSG beendet wird, werden TSG-Sätze generiert - + Lookup via: st_studium_nr - costage_st_studien_spoversionen.st_studium_nr, hierbei die jeweils letzte (max(gueltig_ab) - + + + Lookup via: st_studium_nr - costage_st_studien_spoversionen.st_studium_nr, hierbei die jeweils letzte (max(gueltig_ab) + + Lookup via: st_studium_nr - costage_st_studien_spoversionen.st_studium_nr, hierbei die jeweils letzte (max(gueltig_ab) @@ -589,8 +594,8 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[CO]" /> - - + + ESG oder, bei TSG, der Status des MSG @@ -616,7 +621,21 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[CO]" /> - + + + + + + + + + + + + + + + @@ -634,15 +653,25 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[CO]" /> nur bei TSG - + + +TSG/ESG - + + + Lookup via: st_studium_nr - costage_st_studien_spoversionen.st_studium_nr, hierbei die jeweils letzte (max(gueltig_ab) + + Lookup via: st_studium_nr - costage_st_studien_spoversionen.st_studium_nr, hierbei die jeweils letzte (max(gueltig_ab) + + + - + + des Prüfungsdatums @@ -1168,7 +1197,17 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[CO]" /> Teilstudiengangsnummer zu der eine Abschlussarbeit zugeordnet ist - + + + + + + + + + + + diff --git a/src-modules/module/costage/hilfstabellen/costage_st_pruef_aggr_fuellen.sql b/src-modules/module/costage/hilfstabellen/costage_st_pruef_aggr_fuellen.sql index 4bb18b5..79e81f5 100644 --- a/src-modules/module/costage/hilfstabellen/costage_st_pruef_aggr_fuellen.sql +++ b/src-modules/module/costage/hilfstabellen/costage_st_pruef_aggr_fuellen.sql @@ -23,6 +23,7 @@ null::integer as semester, E.semester_tid as semester_veranst, null::integer as fachsemester, null::integer as fachsemester_tsg, +null::integer as st_studium_nr_tsg, null::varchar(255) as unikey, L.leistung_nr, L.leistungstyp_nr, @@ -60,10 +61,16 @@ null::float as note_msg, null::integer as pnr, null::integer as leistung_nr_msg, null::integer as st_studiengang_nr_msg, +null::varchar as studienidentifikator_esg_msg, null::date as leistungsdatum_msg, null::integer as semester_msg, -L.spov_abschluss as po_stp_stp_version_kb , -null::char(10) as studiengangs_typ_kb +L.spov_abschluss as po_stp_stp_version_kb_esg_tsg_msg, +null::varchar as po_stp_stp_version_kb, +null::varchar as po_stp_stp_version_kb_tsg, +null::char(10) as studiengangs_typ_kb, +0::integer as abschlussarbeit, +null:: CHAR(10) as skz_key_abschlussarbeit, +null::VARCHAR(255) as po_stp_stp_version_kb_abschlussarbeit into temp tmp_pruef FROM costage_st_semester E, costage_leistungen_typen T, costage_leistungen L, costage_st_studierendenstammdaten S where E.semester_id=L.veranstaltung_semester @@ -100,6 +107,7 @@ E.semester_tid as semester, null::integer as semester_veranst, null::integer as fachsemester, null::integer AS fachsemester_tsg, +null::integer as st_studium_nr_tsg, null::varchar(255) as unikey, L.leistung_nr, L.leistungstyp_nr, @@ -137,10 +145,16 @@ null::float as note_msg, null::integer as pnr, null::integer as leistung_nr_msg, null::integer as st_studiengang_nr_msg, +null::varchar as studienidentifikator_esg_msg, null::date as leistungsdatum_msg, null::integer as semester_msg, -L.spov_abschluss, -null::char(10) as studiengangs_typ_kb +L.spov_abschluss as po_stp_stp_version_kb_esg_tsg_msg, +null::Varchar as po_stp_stp_version_kb, +null::varchar as po_stp_stp_version_kb_tsg, +null::char(10) as studiengangs_typ_kb, +0::integer as abschlussarbeit, +null:: CHAR(10) as skz_key_abschlussarbeit, +null::VARCHAR(255) as po_stp_stp_version_kb_abschlussarbeit FROM costage_st_semester E, costage_leistungen_typen T, costage_leistungen L, costage_st_studierendenstammdaten S where L.leistungsdatum between E.semester_anfang and E.semester_ende and L.veranstaltung_semester is null @@ -168,13 +182,32 @@ where S.st_studium_nr=tmp_pruef.st_studium_nr and S.st_studstamm_nr=tmp_pruef.st_studstamm_nr and tmp_pruef.leistungsdetailtyp_kb!='TSAB' ; -update tmp_pruef set st_studiengang_nr_tsg=S.st_studiengang_nr +update tmp_pruef set st_studiengang_nr_tsg=S.st_studiengang_nr, +st_studium_nr_tsg=S.st_studium_nr from costage_st_studien S where S.st_studium_nr=tmp_pruef.st_studium_nr and S.st_studstamm_nr=tmp_pruef.st_studstamm_nr and tmp_pruef.leistungsdetailtyp_kb='TSAB' ; +--studiengangs_typ_kb ermitteln: +update tmp_pruef set studiengangs_typ_kb=G.studiengangs_typ_kb +from costage_st_studiengaenge G +where G.st_studiengang_nr=tmp_pruef.st_studiengang_nr; + +update tmp_pruef set studiengangs_typ_kb=G.studiengangs_typ_kb +from costage_st_studiengaenge G +where G.st_studiengang_nr=tmp_pruef.st_studiengang_nr_tsg; + +--bei TSG die Nr. des pers. Studiums zuweisen, in dem die Abschlussarbeit war: +update tmp_pruef set abschlussarbeit=1 +from costage_leistungen L +where L.leistungsdetailtyp_kb='BAKARBN' +and tmp_pruef.st_studium_nr_tsg=L.abs_fach_st_studium_nr +and tmp_pruef.studiengangs_typ_kb='TSG' +and tmp_pruef.leistungsdetailtyp_kb='TSAB' +; + --Studiengangs-TID ermitteln: update tmp_pruef set studiengang_tid=D.tid from costage_dim_studiengang D @@ -204,6 +237,17 @@ and S.matrikelnummer=tmp_pruef.matrikelnummer and leistungsdetailtyp_kb ='TSAB' ; +--bei TSAB die Nr. des persönlichen Studiums aus dem Studienverlauf holen: +update tmp_pruef set st_studium_nr=S.st_studium_nr, +st_studiengang_nr=S.st_studiengang_nr, +studienidentifikator=S.studiengangs_identifikator +from costage_st_studien_aggr S +where S.semester=tmp_pruef.semester +and S.st_studiengang_nr_tsg=tmp_pruef.st_studiengang_nr_tsg +and S.matrikelnummer=tmp_pruef.matrikelnummer +and leistungsdetailtyp_kb ='TSAB' +; + --Prüfung kann nach letztem eingeschr. Semester sein, daher zuerst letztes Sem. ermitteln: select S.st_studium_nr, S.matrikelnummer, @@ -242,8 +286,8 @@ st_studienstatus_nr=S.st_studienstatus_nr, --fachsemester = S.fachsemester, --wird oben ermittelt, ab 0.6 nicht mehr aus letztem Studiums-Semester studiengang_nr=S.studiengang_nr, st_studiengang_nr=S.st_studiengang_nr, -fach_nr=S.fach_nr, -unikey=S.unikey +fach_nr=S.fach_nr --, +--unikey=S.unikey from tmp_max_sem M, costage_st_studien_aggr S where S.matrikelnummer=M.matrikelnummer and S.st_studium_nr=M.st_studium_nr @@ -252,6 +296,7 @@ and S.st_studium_nr=tmp_pruef.st_studium_nr and S.matrikelnummer=tmp_pruef.matrikelnummer and leistungsdetailtyp_kb !='TSAB' ; +--TODO: bei MSG leer, bei EST und TSG gefüllt drop table tmp_max_sem; @@ -267,7 +312,10 @@ update tmp_pruef set leistung_nr_msg=T.leistung_nr, leistungsdatum_msg=T.leistungsdatum, semester_msg=T.semester, leistungsstatus_map_kb_msg=T.leistungsstatus_map_kb, -note_msg=(case when T.pv_notenskala_typ_kb in ('DE1','DE2','DE3','DE4','DE5','DE6','DE7') or T.pv_notenskala_typ_kb is null then T.note_zahl else null::float end) +note_msg=(case when T.pv_notenskala_typ_kb in ('DE1','DE2','DE3','DE4','DE5','DE6','DE7') or T.pv_notenskala_typ_kb is null then T.note_zahl else null::float end), +studienidentifikator_esg_msg=T.studienidentifikator, +st_studium_nr=T.st_studium_nr, +po_stp_stp_version_kb=T.po_stp_stp_version_kb_esg_tsg_msg from tmp_pruef2 T where tmp_pruef.st_studiengang_nr=T.st_studiengang_nr and tmp_pruef.leistungsdetailtyp_kb ='TSAB' @@ -275,6 +323,24 @@ and T.matrikelnummer=tmp_pruef.matrikelnummer ; +--Fallback wenn der MSG bei TSG nicht gefunden wird, weil der MSG gewechselt hat oder der TSG im jew. Semester der Prüfung geschlossen wurde: +--nach allen verfügbaren MSG gehen +update tmp_pruef set leistung_nr_msg=T.leistung_nr, +leistungsdatum_msg=T.leistungsdatum, +semester_msg=T.semester, +leistungsstatus_map_kb_msg=T.leistungsstatus_map_kb, +note_msg=(case when T.pv_notenskala_typ_kb in ('DE1','DE2','DE3','DE4','DE5','DE6','DE7') or T.pv_notenskala_typ_kb is null then T.note_zahl else null::float end), +studienidentifikator_esg_msg=T.studienidentifikator, +st_studium_nr=T.st_studium_nr, +po_stp_stp_version_kb=T.po_stp_stp_version_kb_esg_tsg_msg +from tmp_pruef2 T, costage_st_studiengaenge_mtsg M +where tmp_pruef.st_studiengang_nr_tsg=M.st_studiengang_nr_tsg +and M.st_studiengang_nr_msg=T.st_studiengang_nr +and tmp_pruef.leistungsdetailtyp_kb ='TSAB' +and tmp_pruef.leistung_nr_msg is null +and T.matrikelnummer=tmp_pruef.matrikelnummer +; + --Leistungsdatum determiniert Semester auch bei MSG: -- update tmp_pruef set semester=E.semester_tid -- FROM costage_st_semester E @@ -285,7 +351,8 @@ and T.matrikelnummer=tmp_pruef.matrikelnummer update tmp_pruef set leistung_nr_msg=leistung_nr, leistungsdatum_msg=leistungsdatum, semester_msg=semester, -leistungsstatus_map_kb_msg=leistungsstatus_map_kb +leistungsstatus_map_kb_msg=leistungsstatus_map_kb, +studienidentifikator_esg_msg=studienidentifikator where tmp_pruef.leistungsdetailtyp_kb !='TSAB' ; --Fachsemester bei MSG gibt es in CO nicht. Daher die Regel: @@ -322,7 +389,44 @@ where G.st_studiengang_nr=tmp_pruef.st_studiengang_nr and K.st_skz_nr=G.st_skz_nr and tmp_pruef.unikey is null ; +--Nun bei TSG: +update tmp_pruef set unikey=K.unikey +from costage_st_studiengaenge G, costage_st_studienkennzahlen K +where G.st_studiengang_nr=tmp_pruef.st_studiengang_nr_tsg +and K.st_skz_nr=G.st_skz_nr +and tmp_pruef.unikey is null +; + + +--MSG Prüfungen können keine Fachnr. haben, daher entfernen: +update tmp_pruef set fach_nr=null +where tmp_pruef.leistungsdetailtyp_kb!='TSAB' +and exists (select G.st_studiengang_nr +from costage_st_studiengaenge G +where G.st_studiengang_nr=tmp_pruef.st_studiengang_nr +and G.studiengangs_typ_kb='MSG') +; + +--bei MSG das Fach und SPO-Version der abschlussarbeit ermitteln: + +--zuerst Kopie nur mit TSG der Abschlussarbeit: +select * into temp tmp_pruef3 +from tmp_pruef +where leistungsdetailtyp_kb ='TSAB' +and abschlussarbeit=1 +; +create index tmp_ix_123 on tmp_pruef3(studiengang_tid); +create index tmp_ix_1234 on tmp_pruef3(st_studium_nr); + + +update tmp_pruef set skz_key_abschlussarbeit=G.skz_key, +po_stp_stp_version_kb_abschlussarbeit=T.po_stp_stp_version_kb +from tmp_pruef3 T, costage_dim_studiengang G +where G.tid=T.studiengang_tid +and T.st_studium_nr=tmp_pruef.st_studium_nr +and tmp_pruef.studiengangs_typ_kb='MSG' +; delete from costage_st_pruef_aggr @@ -330,6 +434,7 @@ where semester >= ${beginn_semester} or semester_tsg >= ${beginn_semester}; insert into costage_st_pruef_aggr(st_studium_nr, +st_studium_nr_tsg, st_studstamm_nr, matrikelnummer, semester, @@ -339,9 +444,11 @@ insert into costage_st_pruef_aggr(st_studium_nr, st_studiengang_nr, st_studiengang_nr_tsg, studiengang_nr, + studiengangs_typ_kb, fach_nr, unikey, studienidentifikator, + studienidentifikator_tsg, fachsemester, fachsemester_tsg, leistungstyp_nr, @@ -350,6 +457,7 @@ insert into costage_st_pruef_aggr(st_studium_nr, abschnitt, stp_sp_nr, po_stp_stp_version_kb, + po_stp_stp_version_kb_tsg, note, note_tsg, credits, @@ -361,9 +469,12 @@ insert into costage_st_pruef_aggr(st_studium_nr, leistung_nr_tsg, leistungsdatum, leistungsdatum_tsg, + skz_key_abschlussarbeit, + po_stp_stp_version_kb_abschlussarbeit, summe) select st_studium_nr, + st_studium_nr_tsg, st_studstamm_nr, matrikelnummer, (case when leistungsdetailtyp_kb='TSAB' then semester_msg @@ -375,9 +486,12 @@ select st_studiengang_nr, st_studiengang_nr_tsg, studiengang_nr, + studiengangs_typ_kb, fach_nr, unikey, - substring(studienidentifikator from 1 for 255), + substring(studienidentifikator_esg_msg from 1 for 255) as studienidentifikator, + (case when leistungsdetailtyp_kb='TSAB' then substring(studienidentifikator from 1 for 255) + else null::varchar(255) end) as studienidentifikator_tsg, fachsemester, fachsemester_tsg, leistungstyp_nr, @@ -385,7 +499,9 @@ select pnr, abschnitt, stp_sp_nr, - po_stp_stp_version_kb, + (case when leistungsdetailtyp_kb='TSAB' then po_stp_stp_version_kb else po_stp_stp_version_kb_esg_tsg_msg end) as po_stp_stp_version_kb, + (case when leistungsdetailtyp_kb='TSAB' then po_stp_stp_version_kb_esg_tsg_msg + else null::varchar end) as po_stp_stp_version_kb_tsg , (case when leistungsdetailtyp_kb='TSAB' then note_msg else ( case when pv_notenskala_typ_kb in ('DE1','DE2','DE3','DE4','DE5','DE6','DE7') @@ -409,6 +525,8 @@ select else leistungsdatum end) as leistungsdatum , (case when leistungsdetailtyp_kb='TSAB' then leistungsdatum else null::date end) as leistungsdatum_tsg , + skz_key_abschlussarbeit, + po_stp_stp_version_kb_abschlussarbeit, 1 as summe from tmp_pruef --group by leistungsdatum,studiengangs_typ_kb,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 @@ -420,12 +538,12 @@ update costage_st_pruef_aggr set studiengang_nr=S.studiengang_nr, st_studiengang_nr=S.st_studiengang_nr, st_studiengang_nr_tsg=S.st_studiengang_nr_tsg, -fach_nr=S.fach_nr, +--fach_nr=S.fach_nr, unikey=S.unikey, fachsemester_tsg=S.fachsemester from costage_st_studien_aggr S where 1=1 -and S.st_studium_nr_tsg=costage_st_pruef_aggr.st_studium_nr +and S.st_studium_nr_tsg=costage_st_pruef_aggr.st_studium_nr_tsg and S.matrikelnummer=costage_st_pruef_aggr.matrikelnummer and costage_st_pruef_aggr.leistungsdetailtyp_kb ='TSAB' and costage_st_pruef_aggr.semester_tsg=S.semester @@ -433,6 +551,7 @@ and costage_st_pruef_aggr.semester_tsg=S.semester drop table tmp_pruef; drop table tmp_pruef2; +drop table tmp_pruef3; diff --git a/src-modules/module/costage/hilfstabellen/costage_st_studien_aggr_fuellen.sql b/src-modules/module/costage/hilfstabellen/costage_st_studien_aggr_fuellen.sql index 217b4c8..3dc0d55 100644 --- a/src-modules/module/costage/hilfstabellen/costage_st_studien_aggr_fuellen.sql +++ b/src-modules/module/costage/hilfstabellen/costage_st_studien_aggr_fuellen.sql @@ -121,7 +121,15 @@ st_studienstatus_nr, beginn_datum, gueltig_ab, semester, +<#if K_CO_interpret_primaerflag==1> primaerflag_studien, +<#else> + +dense_rank () over (partition by semester, st_studstamm_nr,studiengang_nr order by + (studiengangs_identifikator) + ) + as primaerflag_studien, + hrst, null::char(10) as abm_art_s into temp tmp_studien_msg @@ -156,12 +164,31 @@ from tmp_studien T left outer join costage_st_hauptstudien H and H.st_studium_nr=T.st_studium_nr and H.st_sem_nr=T.st_sem_nr) where T.status_historie=1 +<#if K_CO_interpret_primaerflag==1> and T.studiengangs_typ_kb in ('ESG','TSG') + <#else> + and T.studiengangs_typ_kb in ('ESG') + and T.primaerflag_studien=0 ; - +<#if K_CO_interpret_primaerflag==0> + --Ohne Primärflag:: +insert into tmp_studien_esg_tsg +select T.*, +primaerflag_studien as primaerflag, +null::integer as letztes_tsg_semester, +null::integer as st_studium_nr_msg +from tmp_studien T + where T.status_historie=1 + and T.studiengangs_typ_kb in ('TSG') +-- and T.primaerflag_studien=0 + ; + -update tmp_studien_esg_tsg set st_studium_nr_msg=MSG.st_studium_nr +update tmp_studien_esg_tsg set st_studium_nr_msg=MSG.st_studium_nr +<#if K_CO_interpret_primaerflag==0> +,fach_nr=MTSG.studienfach_sortierung + from tmp_studien_msg MSG, costage_st_studiengaenge_mtsg MTSG where tmp_studien_esg_tsg.studiengangs_typ_kb in ('TSG') and tmp_studien_esg_tsg.semester=MSG.semester @@ -175,8 +202,10 @@ and MSG.primaerflag_studien=1 select 20,timestamp_str(now()) from xdummy; -update tmp_studien_esg_tsg set st_studium_nr_msg=MSG.st_studium_nr -from tmp_studien_msg MSG, costage_st_studiengaenge_mtsg MTSG +update tmp_studien_esg_tsg set st_studium_nr_msg=MSG.st_studium_nr <#if K_CO_interpret_primaerflag==0> +,fach_nr=MTSG.studienfach_sortierung + + from tmp_studien_msg MSG, costage_st_studiengaenge_mtsg MTSG where tmp_studien_esg_tsg.st_studium_nr_msg is null and tmp_studien_esg_tsg.studiengangs_typ_kb in ('TSG') and tmp_studien_esg_tsg.semester=MSG.semester @@ -184,7 +213,7 @@ and tmp_studien_esg_tsg.semester=MSG.semester and tmp_studien_esg_tsg.st_studiengang_nr=MTSG.st_studiengang_nr_tsg and tmp_studien_esg_tsg.st_absz_nr=MSG.st_absz_nr and MSG.st_studiengang_nr=MTSG.st_studiengang_nr_msg -and MSG.primaerflag_studien=0 +and MSG.primaerflag_studien!=1 ; select 30,timestamp_str(now()) from xdummy; @@ -296,6 +325,16 @@ and MTSG.st_studiengang_nr_msg=MSG.st_studiengang_nr and ETSG.studiengangs_typ_kb in ('TSG'); +<#if K_CO_interpret_primaerflag==0> +update tmp_studien_tsg set primaerflag_studien=1 +where fach_Nr=1 +and primaerflag_studien_msg=1; + +update tmp_studien_tsg set studiengang_nr=1 +where primaerflag_studien_msg=1; + + + create index tmp_ix3 on tmp_studien(studiengangs_typ_kb); create index tmp_ix5 on tmp_studien(status_historie); create index tmp_ix6 on tmp_studien(primaerflag_studien); @@ -759,9 +798,21 @@ where H.st_studstamm_nr=tmp_studien2.st_studstamm_nr and H.st_sem_nr=tmp_studien2.st_sem_nr ; +<#if K_CO_interpret_primaerflag==1> update tmp_studien2 set studiengang_nr=1 where primaerflag=1; +<#else> + +update tmp_studien2 set studiengang_nr=1 where fach_nr=1 +and primaerflag_studien_msg=1; + +update tmp_studien2 set studiengang_nr=1 where primaerflag=1 +and studiengangs_typ_kb ='ESG' +and studiengang_nr is null; + + + drop table if exists tmp_primaer_msg; --Wenn Studium mit Primärflag ein TSG ist, wird die studiengang_nr auf alle anderen TSG des MSG ausgedehnt: select st_studstamm_nr,semester,st_studiengang_nr_msg @@ -772,9 +823,21 @@ and st_studiengang_nr_msg is not null --and primaerflag=1 and primaerflag_studien_msg=1 ; +create index tmp_ixz1 on tmp_primaer_msg(st_studstamm_nr); +create index tmp_ixz12 on tmp_primaer_msg(semester); +create index tmp_ixz13 on tmp_primaer_msg(st_studiengang_nr_msg); --select * from tmp_primaer_msg; +select 145,timestamp_str(now()) from xdummy; + + +select * into temp tmp_studien3 from tmp_studien2; +create index tmp_ix4443 on tmp_studien3(st_studstamm_nr); +create index tmp_ix4443a on tmp_studien3(semester); +create index tmp_ix4443b on tmp_studien3(studiengang_nr); + + update tmp_studien2 set studiengang_nr=1 where primaerflag=0 and studiengangs_typ_kb ='TSG' and primaerflag_studien_msg=1 @@ -784,9 +847,19 @@ where T.st_studstamm_nr=tmp_studien2.st_studstamm_nr and T.semester=tmp_studien2.semester and T.st_studiengang_nr_msg=tmp_studien2.st_studiengang_nr_msg ) +--es kann schon passieren dass ein vorheriger ESG das Primärflag hat, +--während alle generierten TSG kein Primärflag haben können +--daher hier nicht den studiengang_nr=1 nehmen: +and not exists(select T.st_studstamm_nr,T.semester +from tmp_studien3 T +where T.st_studstamm_nr =tmp_studien2.st_studstamm_nr +and T.semester=T.semester +and T.studiengang_nr=1) ; select 150,timestamp_str(now()) from xdummy; +drop table if exists tmp_studien3; + --zweite Prio: TSG Primärflag drop table if exists tmp_primaer_msg; @@ -862,13 +935,15 @@ unikey, kz_rueck_beur_ein, endedat, endedat_tsg, -null::char(10) as po_stp_stp_version_kb, +null::varchar(255) as po_stp_stp_version_kb, +null::varchar(255) as po_stp_stp_version_kb_tsg, null::integer as po_regelstudienzeit, -null::integer as kz_rueck_beur_ein_tsg, +null::integer as kz_rueck_beur_ein_tsg, +null::date as spo_max_gueltig_ab_tsg, max(SPO.gueltig_ab) as spo_max_gueltig_ab into temp tmp_studien3 from tmp_studien2 T left outer join costage_st_studien_spoversionen SPO -on (SPO.st_studium_nr=T.st_studium_nr +on (SPO.st_studium_nr=T.st_studium_nr_msg and SPO.gueltig_ab < T.semester_ende) group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45 ,46, 47,48,49 --,50,51,52 ; @@ -878,18 +953,97 @@ select 160,timestamp_str(now()) from xdummy; update tmp_studien3 set po_stp_stp_version_kb= SPO.po_stp_stp_version_kb, po_regelstudienzeit=SPO.po_regelstudienzeit from costage_st_studien_spoversionen SPO -where SPO.st_studium_nr=tmp_studien3.st_studium_nr +where SPO.st_studium_nr=tmp_studien3.st_studium_nr_msg and tmp_studien3.spo_max_gueltig_ab =SPO.gueltig_ab; -update tmp_studien3 set kz_rueck_beur_ein_tsg=(select val(astat) +select 162,timestamp_str(now()) from xdummy; + +--nun TSG SPO Version +--SPO-Version (letzte im jew. Semester) ermitteln: +select +semester, +semester_anfang, +semester_ende, +st_absz_nr, +st_skz_nr, +studiengangs_identifikator, +studiengangs_bezeichnung, +st_sem_nr, +T.st_studium_nr, +T.st_studium_nr_msg, +st_studstamm_nr, +studienstatustyp, +st_studienstatus_nr, +beginn_datum, +T.gueltig_ab, +matrikelnummer, +geschlecht, +ca12_staat, +second_nationality, +fachkennzeichen, +studienform_statistik_code, +st_studiengang_nr_msg, +studiengangs_identifikator_msg, +st_studiengang_nr, +hrst, +hssem, +statustyp_tsg, +tsg_generated, +primaerflag, +hzb_art_nr, +hzb_land_sub_r_nr , +hzb_jahr, +hzb_datum , +hzb_note, +hzb_land_nr, +abm_art_s, +abm_art_s_msg, +fachsemester, +praxissemester, +klinsem, +studienfach_sortierung, +letztes_tsg_semester, +studiengangs_typ_kb, +fach_nr, +studiengang_nr, +unikey, +kz_rueck_beur_ein, +endedat, +endedat_tsg, +T.po_stp_stp_version_kb, +null::varchar(255) as po_stp_stp_version_kb_tsg, +null::integer as po_regelstudienzeit, +null::integer as kz_rueck_beur_ein_tsg, +--null::date as spo_max_gueltig_ab_tsg, +max(SPO.gueltig_ab) as spo_max_gueltig_ab_tsg +into temp tmp_studien4 +from tmp_studien3 T left outer join costage_st_studien_spoversionen SPO +on (SPO.st_studium_nr=T.st_studium_nr +and SPO.gueltig_ab < T.semester_ende) +group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45 ,46, 47,48,49 ,50 --,51,52 +; + +select 164,timestamp_str(now()) from xdummy; + +update tmp_studien4 set po_stp_stp_version_kb_tsg= SPO.po_stp_stp_version_kb +from costage_st_studien_spoversionen SPO +where SPO.st_studium_nr=tmp_studien4.st_studium_nr +and tmp_studien4.spo_max_gueltig_ab_tsg =SPO.gueltig_ab +and tmp_studien4.studiengangs_typ_kb='TSG'; + +select 166,timestamp_str(now()) from xdummy; + + +update tmp_studien4 set kz_rueck_beur_ein_tsg=(select val(astat) from cifx where key=400 -and apnr=tmp_studien3.statustyp_tsg +and apnr=tmp_studien4.statustyp_tsg ); select 170,timestamp_str(now()) from xdummy; drop table tmp_studien2; +drop table tmp_studien3; delete from costage_st_studien_aggr @@ -897,7 +1051,7 @@ delete from costage_st_studien_aggr where ${COSTAGE_STUDENT_FILTER} and semester >= ${beginn_semester}; -create index ix_tmp_studien2 on tmp_studien3(kz_rueck_beur_ein) +create index ix_tmp_studien2 on tmp_studien4(kz_rueck_beur_ein) ; insert into costage_st_studien_aggr( st_studium_nr, @@ -937,6 +1091,7 @@ st_studium_nr_tsg, abm_art_s, abm_art_s_tsg, po_stp_stp_version_kb, + po_stp_stp_version_kb_tsg, po_regelstudienzeit, studiengangs_identifikator, studiengangs_identifikator_tsg, @@ -1001,13 +1156,14 @@ select (case when studiengangs_typ_kb='TSG' then st_studium_nr_msg (case when studiengangs_typ_kb='TSG' then abm_art_s else null::char(10) end) as abm_art_s_tsg , po_stp_stp_version_kb, + po_stp_stp_version_kb_tsg, po_regelstudienzeit, (case when studiengangs_typ_kb='TSG' then studiengangs_identifikator_msg else studiengangs_identifikator end) as studiengangs_identifikator, (case when studiengangs_typ_kb='TSG' then studiengangs_identifikator else null::varchar(255) end) as studiengangs_identifikator_tsg, 1 as summe - from tmp_studien3 + from tmp_studien4 where kz_rueck_beur_ein is not null ; @@ -1051,6 +1207,7 @@ st_studium_nr_tsg, abm_art_s, abm_art_s_tsg, po_stp_stp_version_kb, + po_stp_stp_version_kb_tsg, po_regelstudienzeit, studiengangs_identifikator, studiengangs_identifikator_tsg, @@ -1116,13 +1273,14 @@ cast (NULL as int) as studiengang_nr2, (case when studiengangs_typ_kb='TSG' then abm_art_s else null::char(10) end) as abm_art_s_tsg , po_stp_stp_version_kb, + po_stp_stp_version_kb_tsg, po_regelstudienzeit, (case when studiengangs_typ_kb='TSG' then studiengangs_identifikator_msg else studiengangs_identifikator end) as studiengangs_identifikator, (case when studiengangs_typ_kb='TSG' then studiengangs_identifikator else null::varchar(255) end) as studiengangs_identifikator_tsg, 1 as summe - from tmp_studien3 + from tmp_studien4 where kz_rueck_beur_ein is null ; select 180,timestamp_str(now()) from xdummy; @@ -1241,7 +1399,7 @@ select 300,timestamp_str(now()) from xdummy; -- and costage_st_studien_aggr.studiengangs_typ_kb='TSG' -- ; -drop table tmp_studien3; +drop table tmp_studien4; drop table tmp_primaer_msg; diff --git a/src-modules/module/costage/masken/43080_maskeninfo.unl b/src-modules/module/costage/masken/43080_maskeninfo.unl index a1c7842..97b0b7c 100644 --- a/src-modules/module/costage/masken/43080_maskeninfo.unl +++ b/src-modules/module/costage/masken/43080_maskeninfo.unl @@ -9,60 +9,52 @@ <#include "SQL_multitable_output"/>\ \ \ -\ +\ +>,"<>",.vars["Weitere TabellenObject"].allKeys)}\ \ )\ - order by 2;]]>\ + order by 1;]]>\ \ ->,"<>",.vars["Weitere TabellenObject"].allKeys)} )\ -and foreignkey_tab in ('costage_st_pruef_aggr'\ +and foreignkey_tab in ('-xy'\ ${DatenblattTables(<>,"<>",.vars["Weitere TabellenObject"].allKeys)})\ ;]]>\ \ ->,"<>",.vars["Weitere TabellenObject"].allKeys)}\ )\ and currentlyused=1\ ${DatenblattFields(<>,"<>",FelderObject.allKeys)}\ order by 2,3;]]>\ \ ->,"<>",.vars["Weitere TabellenObject"].allKeys)}\ - )\ - and currentlyused=1\ - ${DatenblattFields(<>,"<>",FelderObject.allKeys)}\ - order by 2,3;]]>\ -\ \ \ -<@generate_multitable_list />\ -<@generate_field_list_multitable aggregationsfeld="summe" aggregatfunktion="sum(" />\ -<@generate_foreign_fields_multitable />\ -\ -\ <#assign filter="\ /* and hrst in (<>) */\ /* AND leistungsdetailtyp_kb in (<>) */\ @@ -82,9 +74,11 @@ SELECT name,\ <#assign filter=filter+" and costage_st_pruef_aggr.matrikelnummer in (<>)"?replace("'","")/>\ \ \ +<#assign postprocessing="" />\ +\ --Feld Auswertungsebene Prüfungen\ --Was wird ausgewertet? Welche Leistungsdetailtypen sin betroffen? Welches Prüfungsdatum/Semester soll ausgewertet werden?\ ---G=Gesamtabschluss=BAKN, MAGN, STEX, ERGAB Prüfungsdatum/Semester\ +--G=Gesamtabschluss='BAKN','MAGN','STEX','ERGAB','RIGZP' Prüfungsdatum/Semester\ --F=Absolvent*innenfachfälle=TSAB Prüfungsdatum/Semester des MSG\ --T=Teilstudienabschluss=TSAB Prüfungsdatum/Semester\ \ @@ -100,13 +94,14 @@ SELECT name,\ \ <#assign ldt_filter="1=1" />\ <#if <>=="G">\ -<#assign ldt_filter="leistungsdetailtyp_kb in ('BAKN', 'MAGN', 'STEX', 'ERGAB')" />\ +<#assign ldt_filter="leistungsdetailtyp_kb in ('BAKN','MAGN','STEX','ERGAB','RIGZP')" />\ <#assign semester_feld="semester" />\ \ \ +\ \ <#if <>=="F">\ -<#assign ldt_filter="leistungsdetailtyp_kb in ('TSAB')" />\ +<#assign ldt_filter="(leistungsdetailtyp_kb in ('TSAB') or (leistungsdetailtyp_kb in ('BAKN','MAGN','STEX','ERGAB','RIGZP') and ${basetable}.studiengangs_typ_kb!='MSG'))" />\ <#assign semester_feld="semester" />\ \ <#if <>=="T">\ @@ -121,47 +116,31 @@ SELECT name,\ \ <#assign filter=filter+" and "+ldt_filter + " and " + semester_filter +" and " + fach_filter />\ \ - <@generate_resultset_multitable tabellen=table_list\ -p_show_keys=<>\ -p_field_list_select=field_list_select\ -p_foreign_fields=foreign_fields\ -p_filter=filter\ -p_field_list_groupby=field_list_groupby\ -p_join_clause=join_clause\ +<@generateDatenblatt \ +p_basetable = basetable\ +p_joinTables = getJoinTables\ +p_joinWhereClauses = getJoinWhereClauses\ +p_selectClause = getSelectClause\ +p_aggregationsfeld ="summe"\ +p_aggregatfunktion = "sum("\ +p_filter = filter\ +p_show_keys= <>\ +p_postProcessing= postprocessing\ />^--Freemarker Template \ -\ -select 'costage_st_pruef_aggr' from xdummy\ ->,"<>",.vars["Weitere TabellenObject"].allKeys)/>;\ -select '${restrict?replace("\\x0027","\\x0027\\x0027")}' from xdummy;]]>\ -\ ->,"<>",FelderObject.allKeys)}\ -order by 1;]]>\ -\ -\ XIL List\ sizable_columns horizontal_scrolling\ white_space_color=COLOR_WHITE fixed_columns=1\ min_heading_height=35\ <#assign i=1 />\ -<#if get_felder?has_content >\ -<#foreach myfield in get_felder>\ +<#if getSelectClause?has_content >\ +<#foreach myfield in getSelectClause>\ <#assign i=i+1 />\ -Column CID=${i} heading_text="${myfield.key}" explanation="${myfield.strukturStr}" center_heading\ +Column CID=${i} heading_text="${myfield.caption}" explanation="" center_heading\ row_selectable col_selectable rightJust heading_platform readonly\ width=20\ -<#if myfield.name != '' && <>==1>\ +<#if myfield.foreignkey_tab != '' && <>==1>\ <#assign i=i+1 />\ -Column CID=${i} heading_text="${myfield.key}\\n(Schlüssel)" explanation="Schlüssel des Feldes ${myfield.key}" center_heading\ +Column CID=${i} heading_text="${myfield.caption}\\n(Schlüssel)" explanation="" center_heading\ row_selectable col_selectable rightJust heading_platform readonly\ width=20\ \ diff --git a/src-modules/module/costage/rohdaten/costage_unload.xml b/src-modules/module/costage/rohdaten/costage_unload.xml index 8ab18ed..5ac6e6f 100644 --- a/src-modules/module/costage/rohdaten/costage_unload.xml +++ b/src-modules/module/costage/rohdaten/costage_unload.xml @@ -189,6 +189,7 @@ SELECT S.st_sem_nr, S.semester_anfang, S.semester_ende, S.semester_bezeichnung, + S.semester_bezeichnung_en, S.studienjahr FROM px_st_semester_v S where to_number('20' || replace(replace(S.semester_id,'S','1'),'W','2')) >= $COSTAGE_start_st_sem @@ -734,7 +735,7 @@ SELECT leistung_nr, zusatzleistung_flag, leistungsstatus_nr, null ,--leistungsstatus_map_kb, - null --abs_fach_st_studium_nr + abs_fach_st_studium_nr FROM px_leistungen_v --da das Semester bei Leistungen nicht immer gefuellt ist bzw. der Datum der Leistung nach dem Studium sein kann, hier keine Where Bedingung aufs Startsemester ; diff --git a/src-modules/module/costage/rohdaten_sos/sos_costage_unload.xml b/src-modules/module/costage/rohdaten_sos/sos_costage_unload.xml index 6964c32..20668b1 100644 --- a/src-modules/module/costage/rohdaten_sos/sos_costage_unload.xml +++ b/src-modules/module/costage/rohdaten_sos/sos_costage_unload.xml @@ -204,6 +204,8 @@ G.skz_key as stg, G.fachkennzeichen, '' ,--fb, F.po_stp_stp_version_kb as pversion, +F.po_stp_stp_version_kb as spoversion, +F.po_stp_stp_version_kb_tsg as pversion_tsg, F.semester, F.studiengang_nr, F.fach_nr, @@ -243,7 +245,9 @@ F.kz_rueck_beur_ein_tsg, endedat_tsg, abm_art_s as abmeldegrund, abm_art_s_tsg as abmeldegrund_tsg, -G.studiengangs_identifikator as degree_program_uniquename +F.studiengangs_identifikator as degree_program_uniquename, +F.studiengangs_identifikator_tsg as degree_program_uniquename_tsg, +F.st_studium_nr_tsg as degree_program_id_tsg FROM costage_dim_studiengang G, costage_st_studien_aggr F WHERE G.tid=F.studiengang_tid @@ -299,14 +303,17 @@ G.abschluss_code as abschluss, --else P.semester end) as semester, P.semester, P.leistungsdatum, -G.skz_key as stg, +(case when P.studiengangs_typ_kb='MSG' and skz_key_abschlussarbeit is not null then skz_key_abschlussarbeit +else G.skz_key end) as stg, null::integer as vert, null::integer as schwp, string_not_null(G.fachkennzeichen), P.note, null::char(7), --pruefungsamt_nr P.abschnitt as pnr, -P.po_stp_stp_version_kb as pversion, +(case when leistungsdetailtyp_kb='TSAB' then P.po_stp_stp_version_kb_tsg +when P.studiengangs_typ_kb='MSG' and po_stp_stp_version_kb_abschlussarbeit is not null then po_stp_stp_version_kb_abschlussarbeit +else P.po_stp_stp_version_kb end) as pversion, P.leistungsstatus_map_kb as pstatus, P.fachsemester, P.leistungsdetailtyp_kb as part, @@ -327,11 +334,14 @@ null::CHAR(1), --stuart G.stufrm, null::CHAR(1), --stutyp P.st_studium_nr as degree_program_id, +P.st_studium_nr_tsg as degree_program_id_tsg, semester_tsg, leistungsdatum_tsg, leistungsstatus_map_kb_tsg as pstatus_tsg, note_tsg, -fachsemester_tsg as fach_sem_zahl_tsg +fachsemester_tsg as fach_sem_zahl_tsg , +P.studienidentifikator, +P.studienidentifikator_tsg FROM costage_st_pruef_aggr P, costage_dim_studiengang G where G.tid=P.studiengang_tid and ($EXTERNAL_SUBJECTS ='true' @@ -1014,7 +1024,7 @@ SELECT distinct substring(G.studiengangs_identifikator from 1 for 10) ,--abstgv, null::integer, -- ects, G.skz_name FROM costage_dim_studiengang G, costage_st_studien_aggr A - where A.st_studiengang_nr=G.st_studiengang_nr + where G.tid=A.studiengang_tid and ($EXTERNAL_SUBJECTS ='true' or G.unikey=(select H.hs_nr::char(10) from hochschulinfo H) ) diff --git a/src-modules/module/costage/rohdaten_zul/zul_costage_unload.xml b/src-modules/module/costage/rohdaten_zul/zul_costage_unload.xml index 54f8637..846098e 100644 --- a/src-modules/module/costage/rohdaten_zul/zul_costage_unload.xml +++ b/src-modules/module/costage/rohdaten_zul/zul_costage_unload.xml @@ -158,7 +158,7 @@ null,--bew_efh, null, --zvs_ekritpaket_18, null --zvs_spezkrit FROM - costage_bw_antr_aggr B left outer join costage_st_studierendenstammdaten_neu S + costage_bw_antr_aggr B left outer join costage_st_studierendenstammdaten S on (S.st_studstamm_nr=B.st_studstamm_nr) left outer join costage_st_laender L @@ -276,7 +276,8 @@ A.nr as satzid, null, --B.eingangdat null, -- pversion null, --zvs_ekritpaket_01, - null --zvs_ekritpaket_02 + null , --zvs_ekritpaket_02 + null --updated_admission_relevant_data_at FROM costage_bw_antr_aggr A, costage_st_studiengaenge G where A.st_studiengang_nr=G.st_studiengang_nr and A.bw_typ_kb !='MBW' @@ -294,7 +295,7 @@ or exists(select id from sx_repository R where R.id='COSTAGE_STORT' and aktiv=1) hzb-Saetze aus zul diff --git a/src-modules/module/costage/schluesseltabellen/konstanten_fuellen.sql b/src-modules/module/costage/schluesseltabellen/konstanten_fuellen.sql index be033de..3329b71 100755 --- a/src-modules/module/costage/schluesseltabellen/konstanten_fuellen.sql +++ b/src-modules/module/costage/schluesseltabellen/konstanten_fuellen.sql @@ -98,6 +98,31 @@ beschreibung, 'Datenquelle, Entladestartzeitpunkt, -umfang', 310); + + insert into tmp_konstanten(apnr, +beschreibung, + defaultvalue, + description, + systeminfo_id, + doku_link, + read_only, + wertebereich, + ab_version, + gruppe, + sachgebiete_id) + values (1, +'CO_interpret_primaerflag', + 1, + 'Primärflag auswerten', + 310, + + 'https://www.superx-projekt.de/doku/costage_modul/admin/f_Konstanten.htm', + +1 , +'1,Ja'|| ${newline} || '0,Nein', + '0.7', + 'Datenquelle, Entladestartzeitpunkt, -umfang', + 310); --vorhandene Schlüssel Metadaten updaten: <#if SQLdialect='Postgres'>