Timekeepings: Unterschied zwischen den Versionen
Adrian (Diskussion | Beiträge) |
Adrian (Diskussion | Beiträge) (→Aufbau) |
||
Zeile 19: | Zeile 19: | ||
Da die Zeitstempel sehr oft und überall abgefragt werden existiert im Objekt eine Art Caching und es wird dringend geraten die '''userTimestamp(...)''' Funktion zu benutzen. Sie gibt eine QDateTime Referenz zurück. Ihr erster Parameter legt fest ob man die Zeit in lokaler oder UTC-Zeit(default) möchte. Ihr zweiter Parameter, ob eine den eingestellten Aufrundungsregeln entsprechend veränderter Zeitstempel geliefert werden soll oder nicht(default). | Da die Zeitstempel sehr oft und überall abgefragt werden existiert im Objekt eine Art Caching und es wird dringend geraten die '''userTimestamp(...)''' Funktion zu benutzen. Sie gibt eine QDateTime Referenz zurück. Ihr erster Parameter legt fest ob man die Zeit in lokaler oder UTC-Zeit(default) möchte. Ihr zweiter Parameter, ob eine den eingestellten Aufrundungsregeln entsprechend veränderter Zeitstempel geliefert werden soll oder nicht(default). | ||
+ | |||
+ | Zum Setzen des user_timestamps existiert die '''setUserTimestampUTC(...)''' Funktion die einen korrekt formatierten Zeitstempel als QString erfordert. Z.B. durch | ||
+ | |||
+ | <code>QString isoFrom = from.toUTC().toString(Qt::ISODate);</code> | ||
== Erweiterte Timekeepings - CombinedTimekeeping == | == Erweiterte Timekeepings - CombinedTimekeeping == |
Version vom 2. Juli 2013, 18:00 Uhr
Diese Seite ist unvollständig und noch in Bearbeitung.
Ein Timekeeping ist ein Ereignis innerhalb des Arbeitszeiterfassungssystems.
Inhaltsverzeichnis
Entwicklernotizen
Ein Timekeeping ist ein Ereignis innerhalb des Arbeitszeiterfassungssystems. Im konkreten Fall kann der Mitarbeiter zum Beispiel "Arbeit Beginn" und "Arbeit Ende" stempeln (über unsere Station, die MAE o.ä.). Es ist hervorzuheben, dass diese Ereignisse nur einen Zeitpunkt repräsentieren, also keine Aussage über die Dauer bieten.
Aufbau
event
Ein Timekeeping ist neben seinem Zeitpunkt vor allem auch durch seinen Typ charakterisiert (z.B. "Arbeit", "Pause" etc.) und seinen Zustand (z.B. "Start" oder "Stop"). Diese beiden Sachen sind zusammen im "event"-Attribut des Timekeepings als String gespeichert (z.B. "work_start" oder "break_stop"). Zur besseren Verarbeitung dieser hat das Timekeeping intern zwei Structs definiert: "EventState" und "EventType" und über die getter-Funktionen eventType() und eventState() lässt sich für jedes Timekeeping der entsprechende Wert abfragen.
timestamps
Alle Timestamps aus dem XML sind in UTC-Zeit und müssen auch so wieder an den webservice übergeben werden. Dazu gehören
- created_at - Zeitpunkt der Erstellung in der Datenbank
- updated_at - Zeitpunkt der letzten Aktualisierung in der Datenbank
- user_timestamp - Zeitpunkt an dem der Benutzer/Mitarbeiter das Ereignis abgeschickt/gestempelt hat
- telematik_timestamp - Zeitpunkt an dem das entsprechende Telematik-System das Ereignis rausgeschickt hat
Der im OSCpc üblicherweise zu nutzende Timestamp ist der user_timestamp.
Da die Zeitstempel sehr oft und überall abgefragt werden existiert im Objekt eine Art Caching und es wird dringend geraten die userTimestamp(...) Funktion zu benutzen. Sie gibt eine QDateTime Referenz zurück. Ihr erster Parameter legt fest ob man die Zeit in lokaler oder UTC-Zeit(default) möchte. Ihr zweiter Parameter, ob eine den eingestellten Aufrundungsregeln entsprechend veränderter Zeitstempel geliefert werden soll oder nicht(default).
Zum Setzen des user_timestamps existiert die setUserTimestampUTC(...) Funktion die einen korrekt formatierten Zeitstempel als QString erfordert. Z.B. durch
QString isoFrom = from.toUTC().toString(Qt::ISODate);
Erweiterte Timekeepings - CombinedTimekeeping
Um
Folgende Ereignistypen sind in der Datenbank definiert und können vom Timekeeping angenommen werden
- work_start, work_stop (Arbeit)
- private_start, private_stop (Privat)
- driver_start, driver_stop (Fahrer)
- break_start, break_stop (Pause)
- customer_start, customer_stop (Kunde)
- waiting_start, waiting_stop (Wartend)
- holiday_start, holiday_stop (Urlaub)
- ill_start, ill_stop (Krankheit)
- alert (Alarm)
- function_1, function_2, function_3 (Funktion 1-3)
- garmin_id_1, garmin_id_2, garmin_id_3, garmin_id_4, garmin_id_5, garmin_id_6, garmin_id_7, garmin_id_8, garmin_driver_id
Beispiel des XML eines Timekeepings
<timekeeping generated-at="2013-07-02T17:30:37Z"> <world-x type="float">9.290938</world-x> <world-y type="float">49.077442</world-y> <remarks nil="true"/> <created-at type="datetime">2013-07-02T17:24:36Z</created-at> <system-uuid type="string">90DB8C71-297D-4F34-A3AB-B3840DCC42B3</system-uuid> <user-timestamp type="datetime">2013-07-02T17:24:36Z</user-timestamp> <uuid type="string">44D3611E-E33C-11E2-9064-12314303963F</uuid> <updated-at type="datetime">2013-07-02T17:24:36Z</updated-at> <garmin-uuid type="string">D89BE2ED-82F8-43E1-BB3E-3FFE32ED9A0C</garmin-uuid> <telematik-timestamp type="datetime">2013-07-02T17:24:28Z</telematik-timestamp> <event type="string">garmin_id_3</event> <coworker-uuid type="string">5906DB16-6D11-4ECF-AA09-CC35EC88C406</coworker-uuid> <description nil="true"/> <map-text type="string"> Staat: DE Land: Baden-Württemberg Landkreis: Heilbronn Postleitzahl: 74232 Stadt: Abstatt Strasse: Etrastraße 2 </map-text> </timekeeping>