# Einsatzgenerator Mitarbeiter ?



## spleiss22 (10. Mai 2010)

Hallo zusammen

Ich will eine API entwickeln die einen Einsatzgenerator beinhaltet.
Ich bin ein totaler anfänger in JSP, darum wende ich mich an euch.

Ich sollte Mitarbeiter erfassen können das ist nicht das Problem. 
Bei der erfassung der mitarbeiter gebe ich das Pensum ein und wähle an welchen tagen und um welche uhrzeit er arbeiten kann.

Anhand dieser Mitarbeiter Infos sollte mein API, einen Plan generieren wer wann arbeiten kan ?? 


z.B:

        MONTAG   DIENSTAG  MITWOCH DONNERSTAG ...
10- 12  meier    hans      muster  susanne

13- 18  hans     hanna     susi    peterli

Leider weiss ich nicht wo ich ansetzen soll. Wäre sehr froh um einige Tipps damit ich anfangen kann.

Danke im voraus.


----------



## The_S (11. Mai 2010)

Du gibst die Daten ein, speicherst Sie in bspw. einer Datenbank, wenn der Plan dann angefordert wird, fragst du die Daten wieder ab und bereitest sie in der Form auf, in der du sie benötigst, und gibst anschließend das Ergebnis in einer passenden Form (XML, HTML, Excel, PDF, ...) zurück.

Wenn du konkretere Antworten möchtest, müsstest du dann auch konkreter Fragen.


----------



## spleiss22 (11. Mai 2010)

Danke. 

Könnte ich z.b bei jedem Tag und jedem dazugehörigen Zeitabschnitt (11-12 Uhr) das ganze abfragen.

Zeige mir einen Mitarbeiter der am montag von 11-12 arbeiten kann.


```
SELECT Name, Vorname FROM tbl_MA WHERE arbeitstag = 'Montag' & Arbeitszeit='11-12';
```

Wäre eigentlich ja möglich ich müsste einfach für jeden Tag und jeden Zeitabschniit eine Abfrage machen. Bischen viel falls du eine idee hast wie ich das kürzer bzw. eleganter machen kann wäre ich froh auf deine Tipps.

Dan ergibt sich aber noch ein kleines Problem. Wenn 2 Mitarbeiter an diesem Tag um diese Zeit arbeiten können, erhalte ich 2 mitarbeiter. Am besten wäre wenn ich 2 erhalte einen per Zufall nehme. Irgendeine RANDOM Funktion.

Danke im Voraus.

mfg


----------



## The_S (11. Mai 2010)

spleiss22 hat gesagt.:


> Könnte ich z.b bei jedem Tag und jedem dazugehörigen Zeitabschnitt (11-12 Uhr) das ganze abfragen.



Na klar.



spleiss22 hat gesagt.:


> ```
> SELECT Name, Vorname FROM tbl_MA WHERE arbeitstag = 'Montag' & Arbeitszeit='11-12';
> ```



Äh ... mit Parametern und sinnigeren Bezeichnungen geht das viel einfacher 



spleiss22 hat gesagt.:


> Bischen viel falls du eine idee hast wie ich das kürzer bzw. eleganter machen kann wäre ich froh auf deine Tipps.



Parameter verwenden anstatt alles fest einzukodieren.



spleiss22 hat gesagt.:


> Dan ergibt sich aber noch ein kleines Problem. Wenn 2 Mitarbeiter an diesem Tag um diese Zeit arbeiten können, erhalte ich 2 mitarbeiter. Am besten wäre wenn ich 2 erhalte einen per Zufall nehme. Irgendeine RANDOM Funktion.



Naja, kannst ja beide auslesen und dann in Java per Random einen Auswählen. Auch wenn das ja jetzt nicht so toll ist, wenn da einfach einer zufällig gewählt wird  .


----------



## spleiss22 (11. Mai 2010)

Ich danke dir vielmals für deine konkreten und sehr verständlichen Antworten. Ich habe auch in vielen andere Foren nachgefrat, jedesmal das gleiche. WAS IST EIGENTLICH DEIN PROBLEM. ich wollte ja eigentlich nur paar tipps :lol:

nochmals danke ich werd dan mal damit anfangen falls ich irgendwo anstosse werde ich mich wieder melden :toll:

mfg


----------



## The_S (11. Mai 2010)

Mal davon abgesehen, dass ich deine Reaktion nicht so ganz nachvollziehen kann:



spleiss22 hat gesagt.:


> Ich danke dir vielmals für deine konkreten und sehr verständlichen Antworten



Fand ich schon. Für konkretere Antworten bitte konkreter Fragen. Und wenn du sie nicht verstehst, bitte noch das eine oder andere Java-Buch lesen. Oder in einer Sprache fragen, der du mächtig bist.



spleiss22 hat gesagt.:


> Ich habe auch in vielen andere Foren nachgefrat, jedesmal das gleiche.



Und da suchst du die Schuld noch bei anderen? 



spleiss22 hat gesagt.:


> WAS IST EIGENTLICH DEIN PROBLEM.



Ich hab keins  .



spleiss22 hat gesagt.:


> nochmals danke ich werd dan mal damit anfangen falls ich irgendwo anstosse werde ich mich wieder melden :toll:



hf, gl, bwm


----------



## spleiss22 (11. Mai 2010)

Ich suche nicht die schuld bei anderen. Aber egal 

Ich habe da gleich noch eine frage. Ich habe mich mal bei google nach Java DAO umgesehen. Ich will meine Mitarbeiter mit DAO verwalten (CREATE, UPDATE, DELETE, SELECT). 

Irgendwie verstehe ich das ganze nicht wie das fnktionieren soll. Bei Google habe ich zwar sachen gefunden aber muss man da wirklich so viel Code schreiben um ein DAO  zu erstellen.

thanks 
mfg


----------



## The_S (12. Mai 2010)

DAO heißt erst einmal nur Data Access Object - ein Objekt das den Zugriff auf Daten gewährt. Im Prinzip ist ein DAO erst einmal nichts anderes als eine Klasse, die nichts anderes macht, als Daten in eine Datenquelle zu schreiben oder draus auszulesen.

Sinnigerweise wird ein DAO durch ein Interface spezifiziert, damit es austauschbar ist. Außerdem gibt es in "größeren" Anwendungen meist auch mehrere DAOs, die jeweils für andere "Datenarten" zuständig sind.


----------



## number8 (12. Mai 2010)

Ich bin noch sehr müde deshalb frage ich: soll ein Arbeitszeitplan(unter Berücksichtigung von Nebenbedingungen) generiert werden oder einfach nur angezeigt werden welche Mitarbeiter wann verfügbar sind?


----------



## spleiss22 (12. Mai 2010)

Hallo

Der Arbeitsplan wird anhand verschiedenen Kriterien erstellt. Es muss gerecht aufgeteilt werden. Der Arbeiter muss anhand des Pensums (z.B. 50 %) arbeiten. Er darf nicht mehr arbeiten als 50 % in der Woche. EIn Arbeiter kann auch nicht gleichzeitig an 2 orten sein xD. Mehr gibt es eigentlich nicht.


----------



## fastjack (12. Mai 2010)

Dieses ganze Dienstplanung-Problem ist NP schwer, wenn ich mich recht zurückerrinnere, Rucksackproblem etc. Bisherige Lösungen arbeiten so, das sie dem Endnutzer eine Auswahl an Möglichkeiten bieten, aus der er dann die beste für sich wählen kann. Ich kenne professionell eingesetzte Dienstplansysteme, die einem den größten Mist anbieten. Als Beispiel Hänschen Müller, MO 10-16, 20-22 und FR 06-08 und 22-00. und so weiter. 
Ich denke Du solltest damit anfangen, dir ein Basisgerüst an Klassen auszudenken und darauf einen guten Algorithmus entwickeln, der unter Einbezug der Miterarbeiter-Fähigkeiten etc, eine gute Näherung errechnet. Dannach kannst Du Dir Gedanken machen, wie man das in der DB speichert. Der schwierige Teil hier ist der Algorithmus.


----------

