From 5a2674331e184c148f490322e06d3714709446af Mon Sep 17 00:00:00 2001 From: Daniel Quathamer Date: Mon, 12 Feb 2024 09:13:29 +0100 Subject: [PATCH] =?UTF-8?q?Status=20und=20Prim=C3=A4rflag=20TSG=20bei=20l?= =?UTF-8?q?=C3=A4nger=20laufendem=20MSG=20anpassen=20#16?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../costage_st_studien_aggr_fuellen.sql | 109 +++++++++++++----- 1 file changed, 78 insertions(+), 31 deletions(-) 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 3a67f63..b6415bc 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 @@ -143,10 +143,7 @@ and A.bezug='S' select 20,timestamp_str(now()) from xdummy; -create index tmp_ix1 on tmp_studien(st_studiengang_nr); -create index tmp_ix2 on tmp_studien(st_studstamm_nr); create index tmp_ix3 on tmp_studien(studiengangs_typ_kb); -create index tmp_ix4 on tmp_studien(st_sem_nr); create index tmp_ix5 on tmp_studien(status_historie); create index tmp_ix6 on tmp_studien(primaerflag_studien); @@ -194,6 +191,13 @@ select 30,timestamp_str(now()) from xdummy; -- and H.st_studstamm_nr is null -- ; +create index tmp_ix2_1 on tmp_studien2(st_studiengang_nr); +create index tmp_ix2_2 on tmp_studien2(st_studstamm_nr); +create index tmp_ix2_3 on tmp_studien2(studiengangs_typ_kb); +create index tmp_ix2_4 on tmp_studien2(st_sem_nr); +create index tmp_ix2_7 on tmp_studien2(st_absz_nr); + + select 40,timestamp_str(now()) from xdummy; --Ermittlung msg bei TSG: @@ -270,6 +274,11 @@ create index tmp_ix222 on tmp_tsg2msg(primaerflag_studien); -- and tmp_studien2.studiengangs_typ_kb ='TSG' -- ; --1.prio: primärflag=1 + + +select 45,timestamp_str(now()) from xdummy; + + update tmp_studien2 set st_studiengang_nr_msg=M.st_studiengang_nr_msg, studienfach_sortierung=M.studienfach_sortierung, studiengangs_identifikator_msg=S.studiengangs_identifikator @@ -284,6 +293,10 @@ studiengangs_identifikator_msg=S.studiengangs_identifikator and T.st_studium_nr_msg=S.st_studium_nr and tmp_studien2.studiengangs_typ_kb ='TSG' and T.primaerflag_studien=1; + +select 46,timestamp_str(now()) from xdummy; + + --2. prio: ohne primärflag: update tmp_studien2 set st_studiengang_nr_msg=M.st_studiengang_nr_msg, studienfach_sortierung=M.studienfach_sortierung, @@ -337,11 +350,20 @@ and S.status_historie=1 select 70,timestamp_str(now()) from xdummy; +--TSG werden nicht mehr gebraucht in tmp_studien -> schneller +delete from tmp_studien where studiengangs_typ_kb !='MSG'; + +create index tmp_ix4 on tmp_studien(st_sem_nr); +create index tmp_ix1 on tmp_studien(st_studiengang_nr); +create index tmp_ix2 on tmp_studien(st_studstamm_nr); +create index tmp_ix7 on tmp_studien(studienstatustyp); +create index tmp_ix8 on tmp_studien(st_studiengang_nr_msg); +select 80,timestamp_str(now()) from xdummy; <#if K_COSTAGE_TSG_GENERATE == 1> ---was ist das min/max. Semester eines TSG? +--was ist das min/max. Semester eines TSG TODO langsam? select T.st_studiengang_nr as st_studiengang_nr_tsg, T.st_studstamm_nr, null::integer as st_studiengang_nr_msg_end, @@ -359,6 +381,9 @@ and ST.studienstatustyp in ('U','B','E','I','X','Z') --nur tatsächlich eingesch and ST.status_historie=1 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 ; + +select 90,timestamp_str(now()) from xdummy; + --letzten MSG zuweisen: update tmp_studien_msg_tsg set st_studiengang_nr_msg_end=ST.st_studiengang_nr from costage_st_studiengaenge_mtsg M, tmp_studien ST @@ -397,6 +422,8 @@ drop table if exists tmp_studien_msg_tsg_fehlend2; --Studiengangsdaten des TSG nachladen: +--Ein Studi kann einen TSG mehrmals schließen (z.B. Beurlaubung) +--daher wird das max. Semester genommen, und der Status dann nachgeladen: select F.semester, F.semester_anfang, F.semester_ende, @@ -418,19 +445,23 @@ T.st_studstamm_nr, F.st_studiengang_nr_msg_end, -- T.studiengangs_identifikator_msg, T.st_studiengang_nr_tsg, - T.hrst, - T.hssem, - T.studienstatustyp, - T.statustyp_tsg, +null::char(10) as hrst, +null::integer as hssem, +null::char(10) as studienstatustyp, +null::char(10) as statustyp_tsg, 1::integer as tsg_generated, - T.primaerflag, +-- T.primaerflag, T.hzb_art_nr, T.hzb_land_sub_r_nr , T.hzb_jahr, T.hzb_datum , T.hzb_note, -T.abm_art_s, + T.hzb_land_nr, +null::char(10) as abm_art_s, T.studienfach_sortierung, +null::timestamp as beginn_datum, +null::timestamp AS gueltig_ab, +null::integer as st_studienstatus_nr, max(T.semester) as letztes_tsg_semester, max(T.fachsemester) as fachsemester into temp tmp_studien_msg_tsg_fehlend2 @@ -438,9 +469,21 @@ from tmp_studien_msg_tsg_fehlend F, tmp_studien2 T where F.st_studstamm_nr=T.st_studstamm_nr and F.st_studiengang_nr_tsg=T.st_studiengang_nr_tsg and T.abm_art_s is not null -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 +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 ; +update tmp_studien_msg_tsg_fehlend2 set +hssem=S.hssem, +statustyp_tsg=S.statustyp_tsg, +abm_art_s=S.abm_art_s, +beginn_datum =S.beginn_datum, +gueltig_ab=S.gueltig_ab, +st_studienstatus_nr=S.st_studienstatus_nr + from tmp_studien2 S + where S.st_studiengang_nr_tsg=tmp_studien_msg_tsg_fehlend2.st_studiengang_nr_tsg + and S.st_studstamm_nr=tmp_studien_msg_tsg_fehlend2.st_studstamm_nr + and S.semester=tmp_studien_msg_tsg_fehlend2.letztes_tsg_semester + ; --fehlende Semester nachtragen: insert into tmp_studien2(semester, @@ -456,9 +499,9 @@ st_studstamm_nr, st_studiengang_nr, studiengangs_typ_kb, studienstatustyp, ---st_studienstatus_nr, ---beginn_datum, ---gueltig_ab, +st_studienstatus_nr, +beginn_datum, +gueltig_ab, matrikelnummer, geschlecht, ca12_staat, @@ -478,10 +521,12 @@ hzb_land_sub_r_nr , hzb_jahr, hzb_datum , hzb_note, +hzb_land_nr, abm_art_s, fachsemester, studienfach_sortierung, -letztes_tsg_semester) +letztes_tsg_semester +) select distinct semester, semester_anfang, semester_ende, @@ -495,9 +540,9 @@ st_studstamm_nr, st_studiengang_nr_tsg, F.studiengangs_typ_kb, studienstatustyp, ---st_studienstatus_nr, ---beginn_datum, ---gueltig_ab, +st_studienstatus_nr, +beginn_datum, +gueltig_ab, matrikelnummer, geschlecht, ca12_staat, @@ -517,6 +562,7 @@ hzb_land_sub_r_nr , hzb_jahr, hzb_datum , hzb_note, +hzb_land_nr, abm_art_s, fachsemester, studienfach_sortierung, @@ -526,20 +572,21 @@ where G.st_studiengang_nr=F.st_studiengang_nr_msg_end ; + select 110,timestamp_str(now()) from xdummy; --statustyp und hrst nachladen: --- update tmp_studien2 set studienstatustyp=S.studienstatustyp, --- hrst=S.hrst --- from tmp_studien S --- where tmp_studien2.st_studiengang_nr_msg=S.st_studiengang_nr --- and tmp_studien2.st_studstamm_nr=S.st_studstamm_nr --- and S.studiengangs_typ_kb ='MSG' --- and tmp_studien2.tsg_generated=1 --- and tmp_studien2.st_sem_nr=S.st_sem_nr --- --Defaultmäßig den letzten Status im Semester nehmen (status_historie=1) --- and S.status_historie=1 --- ; + update tmp_studien2 set studienstatustyp=S.studienstatustyp, + hrst=S.hrst + from tmp_studien S + where tmp_studien2.st_studiengang_nr_msg=S.st_studiengang_nr + and tmp_studien2.st_studstamm_nr=S.st_studstamm_nr + and S.studiengangs_typ_kb ='MSG' + and tmp_studien2.tsg_generated=1 + and tmp_studien2.st_sem_nr=S.st_sem_nr + --Defaultmäßig den letzten Status im Semester nehmen (status_historie=1) + and S.status_historie=1 + ; select 120,timestamp_str(now()) from xdummy; @@ -860,7 +907,7 @@ update costage_st_studien_aggr set abm_art_p=P.st_abm_art_kurzbezeichnung from costage_st_personen_abmeldungen P, costage_st_semester S, costage_st_abmeldungsarten A where S.st_sem_nr=P.st_sem_nr and S.semester_tid=costage_st_studien_aggr.semester -and P.st_studium_nr=costage_st_studien_aggr.st_studium_nr +and P.st_studstamm_nr=costage_st_studien_aggr.st_studstamm_nr and A.st_abm_art_kurzbezeichnung=P.st_abm_art_kurzbezeichnung and A.bezug='P' and costage_st_studien_aggr.semester >= ${beginn_semester} @@ -874,7 +921,7 @@ update costage_st_studien_aggr set urlaub_art=U.st_urlaub_typ_nr from costage_st_urlaube U, costage_st_semester S where S.st_sem_nr=U.st_sem_nr and S.semester_tid=costage_st_studien_aggr.semester -and U.st_studium_nr=costage_st_studien_aggr.st_studium_nr +and U.st_studstamm_nr=costage_st_studien_aggr.st_studstamm_nr and costage_st_studien_aggr.semester >= ${beginn_semester} ;