Compare commits

..

10 Commits

  1. 18
      src-modules/module/costage/conf/costage.xml
  2. 12
      src-modules/module/costage/datentabellen/trans_costage_leistungen.sql
  3. 16
      src-modules/module/costage/datentabellen/trans_costage_st_studierendenstammdaten.sql
  4. 41
      src-modules/module/costage/hilfstabellen/costage_st_pruef_aggr_fuellen.sql
  5. 122
      src-modules/module/costage/hilfstabellen/costage_st_studien_aggr_fuellen.sql
  6. 22
      src-modules/module/costage/rohdaten/costage_unload.xml
  7. 2
      src-modules/module/costage/rohdaten/db-co.properties.sam
  8. 102
      src-modules/module/costage/rohdaten_sos/sos_costage_unload.xml
  9. 20
      src-modules/module/costage/rohdaten_zul/zul_costage_unload.xml
  10. 32
      src-modules/module/costage/schluesseltabellen/konstanten_fuellen.sql
  11. 18
      src-modules/module/costage/schluesseltabellen/sx_repository.unl

18
src-modules/module/costage/conf/costage.xml

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<module name="costage" version="0.5" sachgebiet_id="310"
<module name="costage" version="0.6b" sachgebiet_id="310"
sachgebiet="CO Basisdaten" systeminfo_id="310"
system="CO Basisdaten" thema="CO Basisdaten" thema_parent="Studierende, Prüfungen">
<database name="superx" system="superx">
@ -483,6 +483,10 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[CO]" /> @@ -483,6 +483,10 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[CO]" />
<column name="second_nationality" type ="INTEGER" size ="4" default ="" notnull ="false" description="Amtl. Schluessel fuer zweite Staatsangehoerigkeit" currentlyUsed="false"/>
<column name="d_exmatr" type ="DATE" size ="4" default ="" notnull ="false" description="Datum der Exmatr. (obsolet)"/>
<column name="semester_max" type ="INTEGER" size ="4" default ="" notnull ="false" description="Letztes eingeschriebenes Semester" currentlyUsed=""/>
<column name="abm_art_p" type ="CHAR" size ="10" default ="" notnull ="false" description="Art Abmeldung (personbezogen)" >
<sourcefield table="costage_st_personen_abmeldungen" name="st_abm_art_kurzbezeichnung" sourcesystem="co" />
<comment>Lookup via: st_sem_nr - costage_st_personen_abmeldungen.st_studstamm_nr/st_sem_nr - costage_st_semester.semester_tid / costage_st_personen_abmeldungen.person_flag='J'</comment>
</column>
</columns>
<indexes></indexes>
<primaryKeys><rs>
@ -590,6 +594,13 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[CO]" /> @@ -590,6 +594,13 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[CO]" />
<sourcefield table="costage_st_personen_abmeldungen" name="st_abm_art_kurzbezeichnung" sourcesystem="co" />
<comment>Lookup via: st_studium_nr/st_sem_nr - costage_st_personen_abmeldungen.st_studium_nr/st_sem_nr - costage_st_semester.semester_tid / costage_st_abmeldungsarten.bezug='S'</comment>
</column>
<!--<column name="abm_datum_p" type ="DATE" size ="10" default ="" notnull ="false" description="Datum der Abmeldung (personbezogen)" >
<sourcefield table="costage_st_personen_abmeldungen" name="st_abm_art_kurzbezeichnung" sourcesystem="co" />
<comment>Lookup via: st_studium_nr/st_sem_nr - costage_st_personen_abmeldungen.st_studium_nr/st_sem_nr - costage_st_semester.semester_tid / costage_st_personen_abmeldungen.person_flag='J'</comment>
</column>-->
<column name="praxissemester" type ="INTEGER" size ="4" default ="" notnull ="false" description="Praxissemester" />
<column name="klinsem" type ="INTEGER" size ="4" default ="" notnull ="false" description="Klinische Semester" />
<column name="st_studium_nr_msg" type ="INTEGER" size ="8" default ="" notnull ="false" description="Studium des MSG (ID)" />
</columns>
<indexes>
@ -629,6 +640,10 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[CO]" /> @@ -629,6 +640,10 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[CO]" />
<column name="leistungsdatum_msg" type ="DATE" size ="7" default ="" notnull ="false" description="Prüfungsdatum MSG"/>
<column name="semester_msg" type ="INTEGER" size ="8" default ="" notnull ="false" description="Semester MSG" />
<column name="summe" type ="INTEGER" size ="2" default ="" notnull ="false" description="Summe" />
<column name="po_stp_stp_version_kb" type ="CHAR" size ="10" default ="" notnull ="false" description="SPO-Version" >
<sourcefield table="costage_st_studien_spoversionen" name="po_stp_stp_version_kb" sourcesystem="co" />
<comment>Lookup via: st_studium_nr - costage_st_studien_spoversionen.st_studium_nr, hierbei die jeweils letzte (max(gueltig_ab) </comment>
</column>
</columns>
<indexes>
<index name="ix_costage_st_pruef_aggr1" unique="false">
@ -1925,6 +1940,7 @@ parent="CO Basisdaten">Abfragen zu Studienplänen und Ordnungen</thema> @@ -1925,6 +1940,7 @@ parent="CO Basisdaten">Abfragen zu Studienplänen und Ordnungen</thema>
<nativeaction sql="" scriptfile="$COSTAGE_PFAD/datentabellen/trans_costage_lehrveranstaltungen.sql" database=""/>
<nativeaction sql="" scriptfile="$COSTAGE_PFAD/datentabellen/trans_costage_lv_teilnehmende.sql" database=""/>
<nativeaction sql="" scriptfile="$COSTAGE_PFAD/datentabellen/trans_costage_st_hochschulsemester.sql" database=""/>
<nativeaction sql="" scriptfile="$COSTAGE_PFAD/datentabellen/trans_costage_leistungen.sql" database=""/>
</action>
</etl-step>

12
src-modules/module/costage/datentabellen/trans_costage_leistungen.sql

@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
--freemarker template
--(c) 2025 D.Quathamer
<#if COSTAGE_LEISTUNGSSTATUS_MAP?exists>
update costage_leistungen set leistungsstatus_map_kb=${COSTAGE_LEISTUNGSSTATUS_MAP}
;
</#if>

16
src-modules/module/costage/datentabellen/trans_costage_st_studierendenstammdaten.sql

@ -18,6 +18,7 @@ d_geburt DATE , @@ -18,6 +18,7 @@ d_geburt DATE ,
ca12_staat INTEGER ,
second_nationality INTEGER ,
d_exmatr DATE ,
abm_art_p char(10),
semester_max INTEGER
)
;
@ -57,7 +58,7 @@ insert into tmp_st_studierendenstammdaten( @@ -57,7 +58,7 @@ insert into tmp_st_studierendenstammdaten(
-- ca12_staat,
-- second_nationality,
d_geburt,
d_exmatr,
-- d_exmatr,
semester_max)
select
S.st_studstamm_nr,
@ -77,7 +78,6 @@ when S.geschlecht='W' then 2 @@ -77,7 +78,6 @@ when S.geschlecht='W' then 2
when S.geschlecht='X' then 3
else 4 end)::smallint as geschlecht,
date(S.geburtsdatum) as d_geburt,
date(S.abmeldungsdatum) as d_exmatr,
M.semester_max
FROM costage_st_laender L, costage_st_studierendenstammdaten_neu S left outer join tmp_max M
on (M.st_studstamm_nr=S.st_studstamm_nr)
@ -85,6 +85,16 @@ where L.st_land_nr=S.st_land1_nr @@ -85,6 +85,16 @@ where L.st_land_nr=S.st_land1_nr
and S.matrikelnummer is not null
;
--TODO: statt semesterende das tatsächliche Abmeldungsdatum
update tmp_st_studierendenstammdaten set d_exmatr=date(S.semester_ende),
abm_art_p=A.st_abm_art_kurzbezeichnung
from costage_st_personen_abmeldungen A,costage_st_semester S
where A.st_sem_nr=S.st_sem_nr
and A.st_studstamm_nr=tmp_st_studierendenstammdaten.st_studstamm_nr
and S.semester_tid=tmp_st_studierendenstammdaten.semester_max
and A.person_flag='J';
update tmp_st_studierendenstammdaten set ca12_staat=val(L.statistik_code)
from costage_st_laender L
where L.st_land_nr=tmp_st_studierendenstammdaten.st_land1_nr;
@ -115,6 +125,7 @@ insert into costage_st_studierendenstammdaten( @@ -115,6 +125,7 @@ insert into costage_st_studierendenstammdaten(
second_nationality,
d_geburt,
d_exmatr,
abm_art_p,
semester_max)
select
st_studstamm_nr,
@ -134,6 +145,7 @@ st_studstamm_nr, @@ -134,6 +145,7 @@ st_studstamm_nr,
second_nationality,
d_geburt,
d_exmatr,
abm_art_p,
semester_max
FROM tmp_st_studierendenstammdaten
;

41
src-modules/module/costage/hilfstabellen/costage_st_pruef_aggr_fuellen.sql

@ -57,7 +57,8 @@ null::integer as pnr, @@ -57,7 +57,8 @@ null::integer as pnr,
null::integer as leistung_nr_msg,
null::integer as st_studiengang_nr_msg,
null::date as leistungsdatum_msg,
null::integer as semester_msg
null::integer as semester_msg,
null::char(10) as po_stp_stp_version_kb
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
@ -149,6 +150,15 @@ from costage_st_studien S @@ -149,6 +150,15 @@ 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
;
--Fachsemester bei TSAB aus Sem. des Prüfungsdatums holen:
update tmp_pruef set
fachsemester = S.fachsemester
from costage_st_studien_aggr S
where S.semester=tmp_pruef.semester
and S.st_studium_nr=tmp_pruef.st_studium_nr
and S.matrikelnummer=tmp_pruef.matrikelnummer
and tmp_pruef.leistungsdetailtyp_kb='TSAB'
;
--Prüfung kann nach letztem eingeschr. Semester sein, daher zuerst letztes Sem. ermitteln:
select S.st_studium_nr,
@ -168,11 +178,12 @@ group by 1,2 @@ -168,11 +178,12 @@ group by 1,2
--Dann Studium vom letzten Semester in den Prüfungs-Datensatz schreiben:
update tmp_pruef set
st_studienstatus_nr=S.st_studienstatus_nr,
fachsemester = S.fachsemester,
--fachsemester = S.fachsemester, --wird oben ermittelt, ab 0.6 nicht mehr aus letztem Studiums-Semester
studiengang_nr=S.studiengang_nr,
fach_nr=S.fach_nr,
unikey=S.unikey,
st_studiengang_nr_msg=S.st_studiengang_nr_msg
st_studiengang_nr_msg=S.st_studiengang_nr_msg,
po_stp_stp_version_kb=S.po_stp_stp_version_kb
from tmp_max_sem M, costage_st_studien_aggr S
where S.matrikelnummer=M.matrikelnummer
and S.st_studium_nr=M.st_studium_nr
@ -213,6 +224,24 @@ leistungsdatum_msg=leistungsdatum, @@ -213,6 +224,24 @@ leistungsdatum_msg=leistungsdatum,
semester_msg=semester
where tmp_pruef.leistungsdetailtyp_kb !='TSAB'
;
--Fachsemester bei MSG gibt es in CO nicht. Daher die Regel:
--die Fachsemesterzahl sollte die höchste FS-Zahl aus allen TSG enthalten:
select matrikelnummer,st_studiengang_nr_msg,max(semester) as semester_max,max(fachsemester) as fachsem_max
into temp tmp_fachsem_msg
from tmp_pruef
where leistungsdetailtyp_kb='TSAB'
and st_studiengang_nr_msg is not null
group by 1,2;
update tmp_pruef set fachsemester=T.fachsem_max
from tmp_fachsem_msg T
where T.matrikelnummer=tmp_pruef.matrikelnummer
and T.st_studiengang_nr_msg=tmp_pruef.st_studiengang_nr
and T.semester_max <=tmp_pruef.semester
and tmp_pruef.leistungsdetailtyp_kb='BAKN'
;
drop table tmp_fachsem_msg;
--unikey setzen, wenn noch nicht vorhanden (z.B. bei MSG):
update tmp_pruef set unikey=K.unikey
@ -222,6 +251,8 @@ and K.st_skz_nr=G.st_skz_nr @@ -222,6 +251,8 @@ and K.st_skz_nr=G.st_skz_nr
and tmp_pruef.unikey is null
;
delete from costage_st_pruef_aggr
where semester >= ${beginn_semester};
@ -243,6 +274,7 @@ insert into costage_st_pruef_aggr(st_studium_nr, @@ -243,6 +274,7 @@ insert into costage_st_pruef_aggr(st_studium_nr,
pnr,
abschnitt,
stp_sp_nr,
po_stp_stp_version_kb,
note,
credits,
leistungsdatum,
@ -272,6 +304,7 @@ select @@ -272,6 +304,7 @@ select
pnr,
abschnitt,
stp_sp_nr,
po_stp_stp_version_kb,
case when pv_notenskala_typ_kb in ('DE1','DE2','DE3','DE4','DE5','DE6','DE7') or pv_notenskala_typ_kb is null then note_zahl else null::float end as note,
credits,
leistungsdatum,
@ -283,7 +316,7 @@ select @@ -283,7 +316,7 @@ select
semester_msg,
count(*)
from tmp_pruef
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,24,25,26,27;
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,24,25,26,27,28;
drop table tmp_pruef;
drop table tmp_pruef2;

122
src-modules/module/costage/hilfstabellen/costage_st_studien_aggr_fuellen.sql

@ -41,7 +41,9 @@ null::integer as st_studiengang_nr_msg_primaerflag, @@ -41,7 +41,9 @@ null::integer as st_studiengang_nr_msg_primaerflag,
--null::integer as studienfach_sortierung,
null::char(10) as hrst,
null::integer as fachsemester,
null::integer as praxissemester,
null::integer as hssem,
null::integer as klinsem,
(case when SG.studiengangs_typ_kb in ('TSG') then SA.studienstatustyp else null::char(10) end) as statustyp_tsg,
(case when ST.hauptstudium_flag='J' then 1::smallint else 0::smallint end) as primaerflag_studien,
0::smallint as tsg_generated,
@ -61,7 +63,7 @@ null::integer as hzb_jahr, @@ -61,7 +63,7 @@ null::integer as hzb_jahr,
null::date as hzb_datum ,
null::decimal(14,7) as hzb_note,
null::char(10) as abm_art_s,
rank () over (partition by SM.st_sem_nr, S.st_studstamm_nr, SG.studiengangs_identifikator order by SA.gueltig_ab desc) as status_historie
rank () over (partition by SM.st_sem_nr, S.st_studstamm_nr, SG.studiengangs_identifikator order by SA.gueltig_ab desc,SA.studienstatustyp desc) as status_historie
--rank () over (partition by SM.st_sem_nr, S.st_studstamm_nr, SG.studiengangs_identifikator order by (case when SA.gueltig_ab =SM.semester_ende then date_val('01.01.1900') else SA.gueltig_ab end) desc) as status_historie
into temp tmp_studien
FROM costage_st_studierendenstammdaten S,
@ -86,7 +88,7 @@ and (SA.studienstatustyp not in ('Z','X') or ( @@ -86,7 +88,7 @@ and (SA.studienstatustyp not in ('Z','X') or (
and SA.gueltig_ab <= today()
and date(SA.gueltig_ab) < date(SM.semester_ende)
)) --Studis außer erst/neueinschr/rückmeld/beurlaubt werden in der Semestermitte exmatr. zum Endedatum Semesterende, wenn dieses Datum in der Zukunft liegt soll der Studi mit dem vorherigen Status erscheinen
--and SA.studienstatustyp not in ('a','o')
and SA.studienstatustyp not in ('a','o','z')
--group by 1,2,3,4,5,6,7,8,9,10,11,12,13
and ${COSTAGE_STUDENT_FILTER}
and SM.semester_tid >= ${beginn_semester}
@ -145,7 +147,8 @@ drop table if exists tmp_studien_esg_tsg; @@ -145,7 +147,8 @@ drop table if exists tmp_studien_esg_tsg;
select *,
1::integer as primaerflag,
null::integer as letztes_tsg_semester,
null::integer as st_studium_nr_msg
null::integer as st_studium_nr_msg,
null::date as endedat_tsg
into temp tmp_studien_esg_tsg from tmp_studien T
where T.studiengangs_typ_kb in ('ESG','TSG')
and T.status_historie=1
@ -205,6 +208,30 @@ and F.st_sem_nr=tmp_studien_esg_tsg.st_sem_nr @@ -205,6 +208,30 @@ and F.st_sem_nr=tmp_studien_esg_tsg.st_sem_nr
and F.fachsemestertyp='FS'
;
select 35,timestamp_str(now()) from xdummy;
--praxissemester:
update tmp_studien_esg_tsg
set praxissemester=F.fachsemester
from costage_st_fachsemester F
where F.st_studium_nr=tmp_studien_esg_tsg.st_studium_nr
and F.st_sem_nr=tmp_studien_esg_tsg.st_sem_nr
and F.fachsemestertyp='PS'
;
select 36,timestamp_str(now()) from xdummy;
--klinsem
update tmp_studien_esg_tsg
set klinsem=F.fachsemester
from costage_st_fachsemester F
where F.st_studium_nr=tmp_studien_esg_tsg.st_studium_nr
and F.st_sem_nr=tmp_studien_esg_tsg.st_sem_nr
and F.fachsemestertyp='KS'
;
select 40,timestamp_str(now()) from xdummy;
update tmp_studien_esg_tsg
@ -236,6 +263,27 @@ and A.st_abm_art_kurzbezeichnung=P.st_abm_art_kurzbezeichnung @@ -236,6 +263,27 @@ and A.st_abm_art_kurzbezeichnung=P.st_abm_art_kurzbezeichnung
and A.bezug='S'
;
select 55,timestamp_str(now()) from xdummy;
--Endedatum bei TSG nachladen bei Abmeldungen:
update tmp_studien_esg_tsg set endedat_tsg=SA.gueltig_ab
from costage_st_studienstatus SA
where SA.st_studium_nr=tmp_studien_esg_tsg.st_studium_nr
and SA.st_sem_nr=tmp_studien_esg_tsg.st_sem_nr
and SA.studienstatustyp in ('Z','X')
and tmp_studien_esg_tsg.abm_art_s is not null
;
select 57,timestamp_str(now()) from xdummy;
update tmp_studien_esg_tsg set endedat=SA.gueltig_ab
from costage_st_studienstatus SA
where SA.st_studium_nr=tmp_studien_esg_tsg.st_studium_nr
and SA.st_sem_nr=tmp_studien_esg_tsg.st_sem_nr
and SA.studienstatustyp in ('Z','X')
and tmp_studien_esg_tsg.studiengangs_typ_kb='ESG'
and tmp_studien_esg_tsg.abm_art_s is not null
;
select 60,timestamp_str(now()) from xdummy;
@ -378,14 +426,17 @@ null::timestamp as beginn_datum, @@ -378,14 +426,17 @@ null::timestamp as beginn_datum,
null::timestamp AS gueltig_ab,
null::integer as st_studienstatus_nr,
null::integer as primaerflag_studien_msg,
null::integer as st_studium_nr_msg,
max(T.semester) as letztes_tsg_semester,
max(T.fachsemester) as fachsemester
max(T.fachsemester) as fachsemester,
max(T.praxissemester) as praxissemester,
max(T.klinsem) as klinsem
into temp tmp_studien_msg_tsg_fehlend2
from tmp_studien_msg_tsg_fehlend F, tmp_studien_tsg T
where F.st_studstamm_nr=T.st_studstamm_nr
and F.st_studiengang_nr_tsg=T.st_studiengang_nr
and T.semester=F.endsemester_tsg
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
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
;
update tmp_studien_msg_tsg_fehlend2 set
@ -395,7 +446,8 @@ abm_art_s=S.abm_art_s, @@ -395,7 +446,8 @@ abm_art_s=S.abm_art_s,
abm_art_s_msg=S.abm_art_s_msg,
beginn_datum =S.beginn_datum,
gueltig_ab=S.gueltig_ab,
st_studienstatus_nr=S.st_studienstatus_nr
st_studienstatus_nr=S.st_studienstatus_nr,
st_studium_nr_msg=S.st_studium_nr_msg
from tmp_studien_tsg S
where S.st_studiengang_nr=tmp_studien_msg_tsg_fehlend2.st_studiengang_nr_tsg
and S.st_studstamm_nr=tmp_studien_msg_tsg_fehlend2.st_studstamm_nr
@ -449,9 +501,12 @@ hzb_land_nr, @@ -449,9 +501,12 @@ hzb_land_nr,
abm_art_s,
abm_art_s_msg,
fachsemester,
praxissemester,
klinsem,
studienfach_sortierung,
letztes_tsg_semester,
primaerflag_studien_msg
primaerflag_studien_msg,
st_studium_nr_msg
)
select distinct semester,
semester_anfang,
@ -490,9 +545,12 @@ hzb_land_nr, @@ -490,9 +545,12 @@ hzb_land_nr,
abm_art_s,
abm_art_s_msg,
fachsemester,
praxissemester,
klinsem,
studienfach_sortierung,
letztes_tsg_semester,
primaerflag_studien_msg
primaerflag_studien_msg,
st_studium_nr_msg
from tmp_studien_msg_tsg_fehlend2 F, costage_st_studiengaenge G
where G.st_studiengang_nr=F.st_studiengang_nr_msg
;
@ -543,6 +601,7 @@ studiengangs_identifikator, @@ -543,6 +601,7 @@ studiengangs_identifikator,
studiengangs_bezeichnung,
st_sem_nr,
st_studium_nr,
st_studium_nr_msg,
st_studstamm_nr,
studienstatustyp,
st_studienstatus_nr,
@ -571,6 +630,8 @@ hzb_land_nr, @@ -571,6 +630,8 @@ hzb_land_nr,
abm_art_s,
abm_art_s_msg,
fachsemester,
praxissemester,
klinsem,
studienfach_sortierung,
letztes_tsg_semester,
primaerflag_studien_msg,
@ -578,7 +639,9 @@ primaerflag_studien_msg, @@ -578,7 +639,9 @@ primaerflag_studien_msg,
null::integer as fach_nr,
null::integer as studiengang_nr,
null::char(10) as unikey,
null::integer as kz_rueck_beur_ein
null::integer as kz_rueck_beur_ein,
endedat,
endedat_tsg
into temp tmp_studien2
from tmp_studien_tsg;
@ -619,9 +682,12 @@ hzb_note, @@ -619,9 +682,12 @@ hzb_note,
hzb_land_nr,
abm_art_s,
fachsemester,
praxissemester,
klinsem,
studienfach_sortierung,
letztes_tsg_semester,
studiengangs_typ_kb
studiengangs_typ_kb,
endedat
)
select
semester,
@ -660,9 +726,12 @@ hzb_note, @@ -660,9 +726,12 @@ hzb_note,
hzb_land_nr,
abm_art_s,
fachsemester,
praxissemester,
klinsem,
1::integer as studienfach_sortierung,
letztes_tsg_semester,
studiengangs_typ_kb
studiengangs_typ_kb,
endedat
from tmp_studien_esg_tsg E
where E.studiengangs_typ_kb='ESG';
@ -742,6 +811,7 @@ studiengangs_identifikator, @@ -742,6 +811,7 @@ studiengangs_identifikator,
studiengangs_bezeichnung,
st_sem_nr,
T.st_studium_nr,
T.st_studium_nr_msg,
st_studstamm_nr,
studienstatustyp,
st_studienstatus_nr,
@ -770,6 +840,8 @@ hzb_land_nr, @@ -770,6 +840,8 @@ hzb_land_nr,
abm_art_s,
abm_art_s_msg,
fachsemester,
praxissemester,
klinsem,
studienfach_sortierung,
letztes_tsg_semester,
studiengangs_typ_kb,
@ -777,6 +849,8 @@ fach_nr, @@ -777,6 +849,8 @@ fach_nr,
studiengang_nr,
unikey,
kz_rueck_beur_ein,
endedat,
endedat_tsg,
null::char(10) as po_stp_stp_version_kb,
null::integer as po_regelstudienzeit,
null::integer as kz_rueck_beur_ein_tsg,
@ -785,7 +859,7 @@ into temp tmp_studien3 @@ -785,7 +859,7 @@ 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
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
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 160,timestamp_str(now()) from xdummy;
@ -816,6 +890,7 @@ create index ix_tmp_studien2 on tmp_studien3(kz_rueck_beur_ein) @@ -816,6 +890,7 @@ create index ix_tmp_studien2 on tmp_studien3(kz_rueck_beur_ein)
;
insert into costage_st_studien_aggr(
st_studium_nr,
st_studium_nr_msg,
st_studstamm_nr,
matrikelnummer,
st_studiengang_nr,
@ -827,6 +902,8 @@ st_studium_nr, @@ -827,6 +902,8 @@ st_studium_nr,
hrst,
semester,
fachsemester,
praxissemester,
klinsem,
hssem,
primaerflag,
studiengang_nr,
@ -854,6 +931,7 @@ st_studium_nr, @@ -854,6 +931,7 @@ st_studium_nr,
)
select st_studium_nr,
st_studium_nr_msg,
st_studstamm_nr,
matrikelnummer,
st_studiengang_nr,
@ -865,6 +943,8 @@ select st_studium_nr, @@ -865,6 +943,8 @@ select st_studium_nr,
hrst,
semester,
fachsemester,
praxissemester,
klinsem,
hssem,
primaerflag,
--Nun ist studiengang_nr=1 definiert. Die restlichen werden mit RANK ermittelt:
@ -883,9 +963,11 @@ select st_studium_nr, @@ -883,9 +963,11 @@ select st_studium_nr,
beginn_datum as anfdat,
(case when studienstatustyp not in ('Z','X') then gueltig_ab
else null::date end) as ruebeudat,
(case when studienstatustyp in ('Z','X') then gueltig_ab
(case when endedat is not null then endedat
when studienstatustyp in ('Z','X') then gueltig_ab
else null::date end) as endedat,
(case when statustyp_tsg in ('Z','X') then gueltig_ab
(case when endedat_tsg is not null then endedat_tsg
when statustyp_tsg in ('Z','X') then gueltig_ab
else null::date end) as endedat_tsg,
studienform_statistik_code as stufrm,
kz_rueck_beur_ein,
@ -910,6 +992,7 @@ select st_studium_nr, @@ -910,6 +992,7 @@ select st_studium_nr,
-- from above to accomodate ranking in studiengangNummer field
insert into costage_st_studien_aggr(
st_studium_nr,
st_studium_nr_msg,
st_studstamm_nr,
matrikelnummer,
st_studiengang_nr,
@ -921,6 +1004,8 @@ st_studium_nr, @@ -921,6 +1004,8 @@ st_studium_nr,
hrst,
semester,
fachsemester,
praxissemester,
klinsem,
hssem,
primaerflag,
studiengang_nr,
@ -948,6 +1033,7 @@ st_studium_nr, @@ -948,6 +1033,7 @@ st_studium_nr,
)
select st_studium_nr,
st_studium_nr_msg,
st_studstamm_nr,
matrikelnummer,
st_studiengang_nr,
@ -959,6 +1045,8 @@ select st_studium_nr, @@ -959,6 +1045,8 @@ select st_studium_nr,
hrst,
semester,
fachsemester,
praxissemester,
klinsem,
hssem,
primaerflag,
--Nun ist studiengang_nr=1 definiert. Die restlichen werden mit RANK ermittelt:
@ -978,9 +1066,11 @@ cast (NULL as int) as studiengang_nr2, @@ -978,9 +1066,11 @@ cast (NULL as int) as studiengang_nr2,
beginn_datum as anfdat,
(case when studienstatustyp not in ('Z','X') then gueltig_ab
else null::date end) as ruebeudat,
(case when studienstatustyp in ('Z','X') then gueltig_ab
(case when endedat is not null then endedat
when studienstatustyp in ('Z','X') then gueltig_ab
else null::date end) as endedat,
(case when statustyp_tsg in ('Z','X') then gueltig_ab
(case when endedat_tsg is not null then endedat_tsg
when statustyp_tsg in ('Z','X') then gueltig_ab
else null::date end) as endedat_tsg,
studienform_statistik_code as stufrm,
kz_rueck_beur_ein,

22
src-modules/module/costage/rohdaten/costage_unload.xml

@ -733,9 +733,9 @@ SELECT leistung_nr, @@ -733,9 +733,9 @@ SELECT leistung_nr,
anerkannt_flag,
zusatzleistung_flag,
leistungsstatus_nr,
leistungsstatus_map_kb,
abs_fach_st_studium_nr
FROM sx_leistungen_v
null ,--leistungsstatus_map_kb,
null --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
;
]]>
@ -932,6 +932,22 @@ FROM px_studienplankontexte_v @@ -932,6 +932,22 @@ FROM px_studienplankontexte_v
where 1=0
;
]]>
</extraction-sql>
</unload-job>
<unload-job id="px_bewerb_mzb_v" target-table="costage_bewerb_mzb" extraction-script="" transfer-unload-file="unl/costage_bewerb_mzb.unl" >
<comment>Bewerbungen zugeordnete MZB</comment>
<extraction-sql sourcesystem="co" database="" version="">
<![CDATA[
SELECT
bw_bewerbng_nr,
mzb_typ_kb,
abschluss_status_flag,
abschluss_note
FROM
px_bewerb_mzb_v
;
]]>
</extraction-sql>
</unload-job>

2
src-modules/module/costage/rohdaten/db-co.properties.sam

@ -3,7 +3,7 @@ driverName=oracle.jdbc.OracleDriver @@ -3,7 +3,7 @@ driverName=oracle.jdbc.OracleDriver
maxIdle=
logLevelXML=FINEST
maxActive=
connectionName=CO_INTERFACE_PX_SUPERX
connectionName=CO_INTERFACE_PUBLIC_EXTERNAL
minIdle=5
logLevelSQL=FINEST
connectionURL=jdbc\:oracle\:thin\:@192.168.0.11\:1521\:coprod

102
src-modules/module/costage/rohdaten_sos/sos_costage_unload.xml

@ -98,7 +98,7 @@ null::integer ,--poplz, @@ -98,7 +98,7 @@ null::integer ,--poplz,
null::integer ,--poort,
date(aufnahmedatum) as immdat,
null::integer ,--beugrund as gdbu,
null::char(1) as gdex,
abm_art_p as gdex,
ca12_staat,
null::integer as bland,
null::char(1) ,--hssem,
@ -212,12 +212,12 @@ F.urlaub_art::char(10) as gdbu, @@ -212,12 +212,12 @@ F.urlaub_art::char(10) as gdbu,
F.abm_art_p as gdex,
F.fachsemester::integer,
F.hrst,
null::integer as klinsem,
F.klinsem,
F.hssem,
'' ,--stuart,
(case when praxissemester >0 then '3' else '' end) as stuart,
'' ,--stutyp,
F.stufrm,
'' ,--stort,
G.stort_nr ,--stort,
F.ruebeudat,
null::char(1) ,--semgewicht,
null::char(1) ,--stggewicht,
@ -236,14 +236,18 @@ null::char(1) as field_of_study, @@ -236,14 +236,18 @@ null::char(1) as field_of_study,
primaerflag as primaerfach,
unikey ,
po_regelstudienzeit ,-- individual_number_of_semesters
F.st_studium_nr as degree_program_id ,
coalesce(F.st_studium_nr_msg,F.st_studium_nr) as degree_program_id ,
null::char(10) as hssem_valid,
null::Char(10) as k_field_of_study_subj_id,
F.kz_rueck_beur_ein_tsg,
endedat_tsg,
abm_art_s_msg as abmeldegrund,
abm_art_s as abmeldegrund_tsg,
F.studiengangs_identifikator_msg as degree_program_uniquename
(case when G.studiengangs_typ_kb='TSG' then abm_art_s_msg
else abm_art_s end) as abmeldegrund,
(case when G.studiengangs_typ_kb='TSG' then abm_art_s
else null::char(10)
end) as abmeldegrund_tsg,
(case when G.studiengangs_typ_kb='TSG' then F.studiengangs_identifikator_msg
else G.studiengangs_identifikator end) as degree_program_uniquename
FROM costage_st_studiengaenge G, costage_st_studien_aggr F
WHERE G.st_studiengang_nr=F.st_studiengang_nr
@ -288,18 +292,18 @@ P.studiengang_nr, @@ -288,18 +292,18 @@ P.studiengang_nr,
P.fach_nr,
G.abschluss,
P.semester,
P.leistungsdatum,
(case when leistungsdetailtyp_kb!='TSAB' then P.leistungsdatum else null::date end),
G.skz_key as stg,
null::integer as vert,
null::integer as schwp,
string_not_null(G.fachkennzeichen),
round(P.note::decimal(15,4),2) as note,
(case when leistungsdetailtyp_kb!='TSAB' then round(P.note::decimal(15,4),2) else null::decimal end) as note,
null::integer as vken1,
null::char(7), --pruefungsamt_nr
P.abschnitt as pnr,
val(G.pversion),
P.leistungsstatus_map_kb as pstatus,
P.fachsemester ,
P.po_stp_stp_version_kb as pversion,
(case when leistungsdetailtyp_kb!='TSAB' then P.leistungsstatus_map_kb else null::char(10) end) as pstatus,
(case when leistungsdetailtyp_kb!='TSAB' then P.fachsemester else null::integer end) as fachsemester,
P.leistungsdetailtyp_kb as part,
P.leistung_nr,
null::integer as pversuch,
@ -332,11 +336,11 @@ null::char(1) as ut_top_k_elementtype_id, @@ -332,11 +336,11 @@ null::char(1) as ut_top_k_elementtype_id,
null::char(1) as child_ut_top_unit_id,
null::char(1) as child_ut_top_unit_stat,
null::char(1) as k_unit_purpose_id,
null::char(1) as sem_der_pruefung_exa,
null::char(1) as d_abg_pruefung_exa,
null::char(1) as pstatus_tsg,
null::char(1) as note_tsg,
null::char(1) as fach_sem_zahl_tsg
(case when leistungsdetailtyp_kb='TSAB' then semester else null::integer end) as sem_der_pruefung_exa,
(case when leistungsdetailtyp_kb='TSAB' then leistungsdatum else null::date end) as d_abg_pruefung_exa,
(case when leistungsdetailtyp_kb='TSAB' then leistungsstatus_map_kb else null::char(10) end) as pstatus_tsg,
(case when leistungsdetailtyp_kb='TSAB' then note else null::float end) as note_tsg,
(case when leistungsdetailtyp_kb='TSAB' then fachsemester else null::integer end) as fach_sem_zahl_tsg
FROM costage_st_pruef_aggr P, costage_st_studiengaenge G
where G.st_studiengang_nr=P.st_studiengang_nr
AND P.semester >= $start_pruef_sem
@ -853,7 +857,53 @@ null as lid, @@ -853,7 +857,53 @@ null as lid,
null as parent_lid,
null as sortorder
FROM costage_st_studiengaenge
;
union
--stuart
SELECT
616,
0,
'3',--praxissem,
'Praxis' as ktxt,
'Praxissemester' as dtxt,
'Praxissemester' as ltxt ,
'3' as astat,
' ',
'3',--Praxissemester,
' ',
' ',
null::date as gueltig_von,
null::date as gueltig_bis,
'3', --sourcesystem_id
' ' , --hiskey_id
' ' , --struktur_c
null as lid,
null as parent_lid,
null as sortorder
FROM xdummy
union
SELECT
9002,
-1,
leistungsdetailtyp_kb as apnr,
substring(name_de from 1 for 10),--ktxt,
substring(name_de from 1 for 255) as dtxt,
substring(name_de from 1 for 255) as ltxt,
null::char(10) as astat,
null::char(10) as parent,
leistungsdetailtyp_kb,--sortc1 wird später uniquename
' ',
null as sprache,
null::date as gueltig_von,
null::date as gueltig_bis,
leistungsdetailtyp_kb::varchar(255), --sourcesystem_id
' ', --hiskey_id
'A', --struktur_c
null as lid,
null as parent_lid,
null as sortorder
FROM costage_leistungen_detail_typen
WHERE leistungsdetailtyp_kb is not null
]]>
</extraction-sql>
@ -1014,8 +1064,18 @@ select * from k_stg where 1=0; @@ -1014,8 +1064,18 @@ select * from k_stg where 1=0;
</unload-job>
<unload-job id="sos_labzuord" extraction-table="" extraction-script="" transfer-unload-file="unl/sos_labzuord.unl" >
<extraction-sql sourcesystem="co" database="" version="">
<![CDATA[
select * from k_stg where 1=0;
<![CDATA[ select
matrikelnummer as mtknr,
leistung_nr as labnr,
null::char(1) as artzuordnung,
null::char(1) as pordnrzu,
leistung_nr_msg as labnrzu,
null::char(1) as bonus,
null::char(1) as malus
from costage_st_pruef_aggr
where leistung_nr_msg != leistung_nr
--AND semester >= $start_pruef_sem
;
]]>
</extraction-sql>
</unload-job>

20
src-modules/module/costage/rohdaten_zul/zul_costage_unload.xml

@ -52,9 +52,9 @@ null,--bew_efh, @@ -52,9 +52,9 @@ null,--bew_efh,
null,--bew_vorname,
null,--bew_gebname,
null,--bew_gebort,
d_geburt as bew_gebdat,
geschlecht as geschl,
ca12_staat as staat,
date(S.geburtsdatum) as bew_gebdat,
S.geschlecht as geschl,
val(L.statistik_code) as staat,
null,--pozusatz,
null,--postrasse,
null,--poplz,
@ -126,7 +126,7 @@ null,--bew_efh, @@ -126,7 +126,7 @@ null,--bew_efh,
null,--zusastrasse,
null,--zusaort,
null,--ord_kuenstname,
ca12_staat as gebland,
val(L.statistik_code) as gebland,
null,--dokvorname,
null,--bew_zvs_zusatz,
null,--bew_bewnrhist,
@ -158,10 +158,12 @@ null,--bew_efh, @@ -158,10 +158,12 @@ null,--bew_efh,
null, --zvs_ekritpaket_18,
null --zvs_spezkrit
FROM
costage_bw_antr_aggr B,costage_st_studierendenstammdaten S
where S.st_studstamm_nr=B.st_studstamm_nr
and B.bw_typ_kb !='MBW'
;
costage_bw_antr_aggr B left outer join costage_st_studierendenstammdaten_neu S
on (S.st_studstamm_nr=B.st_studstamm_nr)
left outer join
costage_st_laender L
on( L.st_land_nr=S.st_land1_nr)
where B.bw_typ_kb !='MBW'
]]>
</extraction-sql>
@ -186,7 +188,7 @@ A.fachsemester as stgsem, @@ -186,7 +188,7 @@ A.fachsemester as stgsem,
null,--stgspz,
null,--dowunsch1,
null,--dowunsch2,
null, --antr_stort,
(case when exists(select id from sx_repository R where R.id='COSTAGE_STORT' and aktiv=1) then G.stort_nr else null::char(10) end ) as antr_stort,
null,--haerteantr,
null,--haerte,
null,--haertegrd,

32
src-modules/module/costage/schluesseltabellen/konstanten_fuellen.sql

@ -41,7 +41,7 @@ beschreibung, @@ -41,7 +41,7 @@ beschreibung,
'Teilstudiengänge Status aus MSG ausdehnen',
310,
'',--doku link
'https://www.superx-projekt.de/doku/costage_modul/admin/f_Konstanten.htm',--doku link
0,
'1,Ja'|| ${newline} || '0,Nein',
'>0.3',
@ -65,14 +65,38 @@ beschreibung, @@ -65,14 +65,38 @@ beschreibung,
'Anzahl der Semester, für die rückwirkend Einzelprüfungen berechnet werden',
310,
'Modul_Studienerfolg_Admin-HISinOne.xhtml#Konstanten',
'https://www.superx-projekt.de/doku/costage_modul/admin/f_Konstanten.htm',
0 ,
null::Char(1),
'2023.06',
'0.3',
'Datenquelle, Entladestartzeitpunkt, -umfang',
120);
310);
insert into tmp_konstanten(apnr,
beschreibung,
defaultvalue,
description,
systeminfo_id,
doku_link,
read_only,
wertebereich,
ab_version,
gruppe,
sachgebiete_id)
values (0,
'SOS_CO_allow_external',
0,
'Erlaube externe Hochschuldaten',
310,
'https://www.superx-projekt.de/doku/costage_modul/admin/f_Konstanten.htm',
0 ,
'1,Ja'|| ${newline} || '0,Nein',
'0.5',
'Datenquelle, Entladestartzeitpunkt, -umfang',
310);
--vorhandene Schlüssel Metadaten updaten:

18
src-modules/module/costage/schluesseltabellen/sx_repository.unl

@ -1,2 +1,20 @@ @@ -1,2 +1,20 @@
1^COSTAGE_STUDENT_FILTER^1=1^Filter Studierende für CO^Hier werden Studierende für Auswertungen aus CO gefiltert^^COSTAGE_STUD_FILTER^^^310^1^0^0^^1^01.01.1900^31.12.3000^
2^COSTAGE_STORT^^Standorte^Hier werden Standorte konfiguriert^^COSTAGE_STORT^^^310^1^0^0^^0^01.01.1900^31.12.3000^
2^COSTAGE_LEISTUNGSSTATUS_MAP^case when leistungstyp_nr=1 --reale Prüfung\
and leistungsstatus_nr=1 --in Bearbeitung\
then 'AN' --angemeldet\
when leistungstyp_nr=1 --reale Prüfung\
and leistungsstatus_nr=5 --gelöscht\
then 'AB' --abgemeldet\
when note_negativ_flag='J' \
and leistungstyp_nr in (4,9) -- AP Abschlussprüfung, AAP anerkannte Abschlussprüfung\
then 'EN' --endgültig nicht bestanden\
when note_negativ_flag='J' \
then 'NB' --nicht bestanden\
when note='Q' --keine Beurteilung\
and note_zusatz='Q' --Rücktritt mit anerkanntem Grund\
then 'R' --Rücktritt von der Prüfungsanmeldung\
when note='Q' --keine Beurteilung\
then 'NE' --nicht erschienen\
else 'BE' --bestanden\
end^Leistungsstatus-Gruppen (CO)^Hier werden Leistungsstatus-Gruppen (CO) konfiguriert. Beispiel der UZK für sx_leistungen_v^^COSTAGE_LEISTUNGSSTATUS^^^310^1^0^0^^1^01.01.1900^31.12.3000^

Loading…
Cancel
Save