Schnittstelle CampusOnline (TU Graz) zu SuperX-Modul COSTAGE http://www.superx-projekt.de/doku/costage_modul/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

281 lines
7.7 KiB

--freemarker template
<sqlvars>
<sqlvar name="beginn_semester"><![CDATA[
<#assign anz_sem=5 />
<#if COSTAGE_einzpruef_anz_sem?exists && COSTAGE_einzpruef_anz_sem?string!="">
<#assign anz_sem=COSTAGE_einzpruef_anz_sem />
</#if>
select min(S.tid) from semester S where S.sem_beginn >= today()-(182*${anz_sem})
;
]]>
</sqlvar>
</sqlvars>
--Leistungen mit Veranstaltung -> Semester:
SELECT
L.st_studium_nr,
S.st_studstamm_nr,
val(L.matrikelnummer) as matrikelnummer,
null::integer as st_studiengang_nr,
null::integer as studiengang_nr,
null::integer as fach_nr,
null::integer as st_studienstatus_nr,
null::integer as semester,
E.semester_tid as semester_veranst,
E.st_sem_nr,
null::integer as fachsemester,
null::varchar(255) as unikey,
L.leistung_nr,
L.leistungstyp_nr,
L.leistungsdetailtyp_kb,
L.studienidentifikator,
L.spov_abschluss,
L.stp_sp_nr,
L.veranstaltung_nummer,
L.veranstaltung_semester,
L.veranstaltung_titel,
L.veranstaltung_art,
L.semesterstunden,
L.unterrichtseinheiten,
L.thema_individuell,
L.pv_notenskala_nr,
L.note,
L.note_name,
L.note_zahl,
L.pv_pruef_zusatz_typen_nr,
L.note_zusatz,
L.note_zusatz_name,
L.note_positiv_flag,
L.note_negativ_flag,
L.pv_notenskala_typ_nr,
L.pv_notenskala_typ_kb,
L.pv_notenskala_typ_name,
L.credits,
date(L.leistungsdatum) as leistungsdatum,
L.anerkannt_flag,
L.zusatzleistung_flag,
L.leistungsstatus_nr,
L.leistungsstatus_map_kb,
null::integer as abschnitt,
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
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
and T.leistungstyp_nr=L.leistungstyp_nr
and S.matrikelnummer::varchar(255)=L.matrikelnummer
-- TSAB/AB:
--and T.kurzbezeichnung in ('AP','AAP') --Abschlussprüfung/Anerkannte Abschlussprüfung
and L.leistungsstatus_nr in (4,2) --Letztgültig/Final/gültige Leistung
--px_leistungen_status_typen_v:
--4^F^Letztgültig^Final^
--1^P^in Bearbeitung^in process^
--2^V^gültige Leistung^valid^
--3^I^ungültige Leistung^invalid^
--5^D^gelöscht^deleted^
and E.semester_tid >= ${beginn_semester}
;
--Leistungen ohne Veranstaltungssemester gehen über Prüfungsdatum:
insert into tmp_pruef
SELECT
L.st_studium_nr,
S.st_studstamm_nr,
val(L.matrikelnummer) as matrikelnummer,
null::integer as st_studiengang_nr,
null::integer as studiengang_nr,
null::integer as fach_nr,
null::integer as st_studienstatus_nr,
E.semester_tid as semester,
null::integer as semester_veranst,
null::integer as st_sem_nr,
null::integer as fachsemester,
null::varchar(255) as unikey,
L.leistung_nr,
L.leistungstyp_nr,
L.leistungsdetailtyp_kb,
L.studienidentifikator,
L.spov_abschluss,
L.stp_sp_nr,
L.veranstaltung_nummer,
L.veranstaltung_semester,
L.veranstaltung_titel,
L.veranstaltung_art,
L.semesterstunden,
L.unterrichtseinheiten,
L.thema_individuell,
L.pv_notenskala_nr,
L.note,
L.note_name,
L.note_zahl,
L.pv_pruef_zusatz_typen_nr,
L.note_zusatz,
L.note_zusatz_name,
L.note_positiv_flag,
L.note_negativ_flag,
L.pv_notenskala_typ_nr,
L.pv_notenskala_typ_kb,
L.pv_notenskala_typ_name,
L.credits,
date(L.leistungsdatum) as leistungsdatum,
L.anerkannt_flag,
L.zusatzleistung_flag,
L.leistungsstatus_nr,
L.leistungsstatus_map_kb,
2::integer as abschnitt, --provisorisch erstmal nur Hauptprüfungen
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
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
and T.leistungstyp_nr=L.leistungstyp_nr
and S.matrikelnummer::varchar(255)=L.matrikelnummer
-- TSAB/AB:
--and T.kurzbezeichnung in ('AP','AAP') --Abschlussprüfung/Anerkannte Abschlussprüfung
and L.leistungsstatus_nr in (4,2) --Letztgültig/Final/gültige Leistung
and E.semester_tid >= ${beginn_semester}
;
update tmp_pruef set semester=E.semester_tid
FROM costage_st_semester E
where tmp_pruef.leistungsdatum between E.semester_anfang and E.semester_ende
and tmp_pruef.semester is null;
update tmp_pruef set st_sem_nr=E.st_sem_nr
FROM costage_st_semester E
where tmp_pruef.leistungsdatum between E.semester_anfang and E.semester_ende
and tmp_pruef.st_sem_nr is null;
update tmp_pruef set semester_veranst=semester
where semester_veranst is null;
--Fachsem. nachladen:
update tmp_pruef
set fachsemester=F.fachsemester
from costage_st_fachsemester F
where F.st_studium_nr=tmp_pruef.st_studium_nr
and F.st_sem_nr=tmp_pruef.st_sem_nr
and F.fachsemestertyp='FS'
;
--Studiengang nachladen
update tmp_pruef set st_studiengang_nr=S.st_studiengang_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
;
--unikey nachladen:
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
and K.st_skz_nr=G.st_skz_nr
;
--verknüpfen mit SPO Kontext:
select P.*,
G.context_type,
G.stp_knoten_nr_sichtbar,
G.ghk_nr,
G.st_studium_nr as spo_st_studium_nr,
null::varchar(255) as ghk_typ_kurzbezeichnung
into temp tmp_pruef2
from tmp_pruef P left outer join costage_studienplankontexte G
on (P.leistung_nr=G.leistungs_nr)
;
update tmp_pruef2 set ghk_typ_kurzbezeichnung=G.typ_kurzbezeichnung
from costage_gleichheitsknoten G
where G.ghk_nr=tmp_pruef2.ghk_nr
;
truncate table costage_st_einzpruef_aggr;
insert into costage_st_einzpruef_aggr(st_studium_nr,
st_studstamm_nr,
matrikelnummer,
semester,
semester_veranst,
st_studiengang_nr,
st_studiengang_nr_msg,
studiengang_nr,
fach_nr,
unikey,
studienidentifikator,
fachsemester,
leistung_nr,
leistungstyp_nr,
leistungsdetailtyp_kb,
pnr,
abschnitt,
stp_sp_nr,
veranstaltung_nummer,
veranstaltung_titel,
veranstaltung_art,
semesterstunden,
unterrichtseinheiten,
thema_individuell,
note,
credits,
leistungsdatum,
anerkannt_flag,
zusatzleistung_flag,
leistungsstatus_nr,
leistungsstatus_map_kb,
leistung_nr_msg,
leistungsdatum_msg,
semester_msg,
context_type,
stp_knoten_nr_sichtbar,
ghk_nr,
spo_st_studium_nr,
ghk_typ_kurzbezeichnung,
summe)
select
st_studium_nr,
st_studstamm_nr,
matrikelnummer,
semester,
semester_veranst,
st_studiengang_nr,
st_studiengang_nr_msg,
studiengang_nr,
fach_nr,
unikey,
substring(studienidentifikator from 1 for 255),
fachsemester,
leistung_nr,
leistungstyp_nr,
leistungsdetailtyp_kb,
pnr,
abschnitt,
stp_sp_nr,
veranstaltung_nummer,
substring(veranstaltung_titel from 1 for 255),
veranstaltung_art,
semesterstunden,
unterrichtseinheiten,
substring(thema_individuell from 1 for 255),
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,
anerkannt_flag,
zusatzleistung_flag,
leistungsstatus_nr,
leistungsstatus_map_kb,
leistung_nr_msg,
leistungsdatum_msg,
semester_msg,
context_type,
stp_knoten_nr_sichtbar,
ghk_nr,
spo_st_studium_nr,
ghk_typ_kurzbezeichnung,
count(*)
from tmp_pruef2
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,29,30,31,32,33,34,35,36,37,38,39;
drop table tmp_pruef;
drop table tmp_pruef2;