From 4a3fa6f28cfad067f1bbe7edafc97005c4bb3f1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Mon, 19 Oct 2009 14:01:04 +0000 Subject: [PATCH] --- vilesci/lehre/check/verplanungsuebersicht.php | 131 ++++++++++++++---- 1 file changed, 107 insertions(+), 24 deletions(-) diff --git a/vilesci/lehre/check/verplanungsuebersicht.php b/vilesci/lehre/check/verplanungsuebersicht.php index ac62de540..f2355bdbf 100644 --- a/vilesci/lehre/check/verplanungsuebersicht.php +++ b/vilesci/lehre/check/verplanungsuebersicht.php @@ -1,12 +1,32 @@ - - - - - - - - , + * Andreas Oesterreicher , + * Rudolf Hangl and + * Gerald Simane-Sequens + */ +/* + * Liefert eine Statistik ueber folgende Daten des LV-Plans: + * - Wie viele Lehreinheiten sind verplant + * - Wie viele Stunden sind verplant + * - Wie viel % der Stunden sind mehrfach verplant + * aufgesplittet nach Studiensemester, Studiengang und Ausbildungssemester + */ require_once('../../../config/vilesci.config.inc.php'); require_once('../../../include/studiengang.class.php'); require_once('../../../include/studiensemester.class.php'); @@ -34,6 +54,15 @@ else $stsem_obj = new studiensemester(); $stsem_obj->getAll(); +echo ' + + + + + + +'; + echo '

Übersicht - Verplanung der Lehreinheiten ('.$variable->variable->db_stpl_table.')

'; echo '
Studiensemester
'; $gesamt=0; $gesamt_verplant=0; $gesamt_ps=0; -$gesamt_ps_verplant=0; +$gesamt_ps_offen=0; $content=''; -function drawprogress($prozent) + +//Zeichnet den Fortschrittsbalken +function drawprogress($prozent, $ueberplanung=0) { $color='red'; if($prozent>=80) @@ -64,13 +95,22 @@ function drawprogress($prozent) $bordercolor='2px solid red'; else $bordercolor='1px solid black'; - return '
 '.$prozent.'%
'; + + $content = '
 '.$prozent.'%
'; + if($ueberplanung>0) + $content.= '
 +'.$ueberplanung.'% Überbuchung
'; + $content.= '
'; + return $content; } + +//Alle Studiengaenge durchlaufen $content.= "\n"; -$content.= "\n"; +$content.= "\n"; foreach($stg->result as $row_stg) { $content.= "\n'; + + //Anzahl der Lehreinheiten holen $qry = "SELECT count(*) as anzahl, semester FROM lehre.tbl_lehrveranstaltung JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id) WHERE studiengang_kz='$row_stg->studiengang_kz' AND studiensemester_kurzbz='$stsem' @@ -81,17 +121,17 @@ foreach($stg->result as $row_stg) if($result_sem = $db->db_query($qry)) { - //echo $qry; - while($row_sem = $db->db_fetch_object($result_sem)) { $content.= ''; - //echo $qry; } $content.=''; } @@ -164,9 +239,17 @@ foreach($stg->result as $row_stg) } } $content.= '
Studiengang/SemesterLehreinheitenStunden
Studiengang/SemesterLehreinheitenStunden

".$row_stg->kuerzel.'

'; $content.= $row_sem->semester.'.Semester '; + + //Anzahl der verplanten Lehreinheiten holen $qry = "SELECT count(*) as verplant FROM lehre.tbl_lehreinheit JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) WHERE studiengang_kz='$row_stg->studiengang_kz' AND studiensemester_kurzbz='$stsem' AND semester='$row_sem->semester' AND tbl_lehreinheit.lehre AND lehreinheit_id IN (SELECT lehreinheit_id FROM lehre.tbl_".$variable->variable->db_stpl_table." WHERE lehreinheit_id=tbl_lehreinheit.lehreinheit_id) AND lehreinheit_id IN(SELECT lehreinheit_id FROM lehre.tbl_lehreinheitmitarbeiter WHERE lehreinheit_id=tbl_lehreinheit.lehreinheit_id)"; - //echo $qry; + if($result_verplant = $db->db_query($qry)) { if($row_verplant = $db->db_fetch_object($result_verplant)) @@ -106,6 +146,7 @@ foreach($stg->result as $row_stg) } $content.= ''; + //Planstunden holen $qry = "SELECT sum(planstunden) as planstunden FROM lehre.tbl_lehreinheit @@ -121,13 +162,13 @@ foreach($stg->result as $row_stg) { if($row_ps = $db->db_fetch_object($result_ps)) { - $gesamt_ps+=$row_ps->planstunden; $ps = $row_ps->planstunden; } } + //verplante Stunden aus LVPlan holen $qry = "SELECT count(*) as verplant - FROM (SELECT distinct datum, stunde, tbl_lehreinheit.unr, tbl_".$variable->variable->db_stpl_table.".mitarbeiter_uid + FROM (SELECT distinct datum, stunde, tbl_lehreinheit.lehreinheit_id, tbl_".$variable->variable->db_stpl_table.".mitarbeiter_uid FROM lehre.tbl_lehreinheit JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) @@ -140,21 +181,55 @@ foreach($stg->result as $row_stg) tbl_lehreinheit.lehre ) a"; $stdverplant=0; - //echo $qry; + if($result_std = $db->db_query($qry)) { if($row_std = $db->db_fetch_object($result_std)) { - $gesamt_ps_verplant+=$row_std->verplant; $stdverplant = $row_std->verplant; } } + + //offene Stunden ermitteln + $qry = " + SELECT distinct lehreinheit_id, planstunden, mitarbeiter_uid FROM lehre.tbl_lehreinheit JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) JOIN lehre.tbl_lehreinheitmitarbeiter USING(lehreinheit_id) + WHERE studiengang_kz='$row_stg->studiengang_kz' AND semester='$row_sem->semester' AND studiensemester_kurzbz='$stsem' AND tbl_lehreinheit.lehre"; + + $offen=0; + if($result_std = $db->db_query($qry)) + { + while($row_std = $db->db_fetch_object($result_std)) + { + $qry = "SELECT count(*) as anzahl FROM lehre.tbl_".$variable->variable->db_stpl_table." WHERE lehreinheit_id='$row_std->lehreinheit_id' AND mitarbeiter_uid='$row_std->mitarbeiter_uid'"; + if($result_o = $db->db_query($qry)) + { + if($row_o = $db->db_fetch_object($result_o)) + { + if($row_o->anzahl<$row_std->planstunden) + $offen+=$row_std->planstunden-$row_o->anzahl; + } + } + } + } + + + $gesamt_ps+=$ps; + $gesamt_ps_offen+=$offen; $content.= "($stdverplant/$ps)"; - $prozent = round($stdverplant*100/$ps,2); - $content.= ''; - $content.=drawprogress($prozent); + $prozent = round(($ps-$offen)*100/$ps,2); + + //Ueberbuchung berechnen + /* + Es werden teilweise Stunden mehrfach verplant damit Lektoren die Stunden der anderen + Lektoren der gleichen LV sehen koennen. Deshalb ist es auch notwendig die offenen Stunden aus der DB zu holen + anstatt zu berechnen + */ + $prozentueber = round(($stdverplant-$ps+$offen)*100/$ps,2); + + $content.= ''; + $content.=drawprogress($prozent, $prozentueber); + $content.= 'offene Stunden: '.$offen; $content.='
  
'; +//Prozent der gesamten verplanten Lehreinheiten berechnen und anzeigen $prozent = round($gesamt_verplant*100/$gesamt,2); -echo "

\n
Gesamtstatus: (".$gesamt_verplant.'/'.$gesamt.')'; +echo "

\n
Lehreinheiten: (".$gesamt_verplant.'/'.$gesamt.')'; echo drawprogress($prozent); +echo "
"; +//Prozent der gesamten verplanten Stunden berechnen und anzeigen +$gesamt_ps_verplant = ($gesamt_ps-$gesamt_ps_offen); +$prozent = round($gesamt_ps_verplant*100/$gesamt_ps,2); +echo "Stunden: (".$gesamt_ps_verplant.'/'.$gesamt_ps.')'; +echo drawprogress($prozent); + echo "
\n
"; echo $content; ?>