Inhaltsverzeichnis
3.2 ENIVERSPIMS — Arbeitsaufträge
Stand: 2026-03-05
Übergeordnet: PIMS-Architektur — Gesamtübersicht Verwandt: 3.1 Prüfwesen | 3.3 Sicherheitsgespräche
Konzept: work.order als zentrales Koordinationsobjekt
work.order ist das zentrale Objekt in PIMS — es deckt alle Arten von Arbeiten ab:
| ART | Bedeutung | Anteil in ENIVERS ARBEIT | Herkunft |
|---|---|---|---|
| R | Reparatur | 59 % (20.448) | AMED Reparaturliste + ARBEIT |
| U | Wiederkehrende Überprüfung | 16 % (5.733) | WIS TimeTrain → hier |
| A | Wiederkehrende Arbeiten | 7.5 % (2.625) | ARBEIT |
| P | Projektauftrag | 6.3 % (2.208) | ARBEIT |
| S | Störungsbeseitigung | 4.2 % (1.473) | ARBEIT |
| W | Wartung | 2.6 % (922) | ARBEIT |
| N/B/V/K | Sonstige | 4.4 % | ARBEIT |
Vorteil gegenüber TimeTrain: Ein einziges Modell vereint Prüfaufträge (U), Reparaturaufträge (R) und Wartungsaufträge (W). Verknüpfungen zwischen ihnen (Prüfung → Mangel → Reparaturauftrag) bleiben im selben Schema sichtbar.
work.order
CREATE TABLE WORK.order ( id INT NOT NULL IDENTITY PRIMARY KEY, order_number VARCHAR(20) NULL, -- generierte Auftragsnummer -- Zuordnung anlage VARCHAR(10) NULL, -- Werk/Anlage (aus ARBEIT.ANLAGE: 'LDB1','LDB2') item_id INT NULL, -- FK → ENIVERSCAFM.asset.item branch_id INT NULL, -- FK → ENIVERSCAFM.org.branch emr_stelle NVARCHAR(50) NULL, -- EMR-Stelle / Bezeichnung (aus ARBEIT) -- Typ + Inhalt order_type VARCHAR(5) NOT NULL, -- FK → shared.list_item (list_type='ARBEIT_ART') title NVARCHAR(200) NOT NULL, -- Kurzbeschreibung (aus ARBEIT.ARBEIT 75 Zeichen) description NVARCHAR(MAX) NULL, -- Detailbeschreibung (aus ARBEIT.BEMERKUNG) work_status VARCHAR(5) NULL, -- FK → shared.list_item (list_type='WORK_STATUS') priority VARCHAR(5) NULL, -- FK → shared.list_item (list_type='WORK_PRIORITY') -- Termine date_received DATETIME2 NULL, -- Eingang (ARBEIT.EING_DAT) date_due DATETIME2 NULL, -- Fälligkeitstermin (ARBEIT.TERMIN) date_period_end DATETIME2 NULL, -- Zeitraumende (ARBEIT.ZEITRAUM) date_completed DATETIME2 NULL, -- Erledigt (ARBEIT.ERLED_DAT) date_installed DATETIME2 NULL, -- Inbetriebnahme (ARBEIT.INBETR_DAT) -- Personal requester_id INT NULL, -- Anforderer (ARBEIT.ANFORDERER) requester_name NVARCHAR(50) NULL, assignee_code VARCHAR(10) NULL, -- Bearbeiter-Kürzel (ARBEIT.BEARBEITER) department_code VARCHAR(5) NULL, -- Abteilung (ARBEIT.strArbAbteilung) -- Freigabe requires_approval BIT NOT NULL DEFAULT 0, approval_given BIT NULL, -- NULL=offen, 1=freigegeben, 0=abgelehnt approval_code VARCHAR(5) NULL, -- Wer hat freigegeben -- Aufwand effort_hours DECIMAL(8,2) NULL, -- ARBEIT.AUFWAND standzeit_min INT NULL, -- Stillstandszeit (ARBEIT.Standzeit) -- Verknüpfungen plan_id INT NULL, -- FK → work.plan parent_order_id INT NULL, -- FK → work.order (Folgeauftrag) -- Inspection-Verknüpfung (wenn ART='U') rule_id INT NULL, -- FK → inspection.rule -- Fault-Verknüpfung (wenn ART='R', aus Schadensmeldung) fault_report_id INT NULL, -- FK → fault.report -- Notizen + Arbeitsstand progress_notes NVARCHAR(MAX) NULL, -- ARBEIT.ARBEITSSTAND additional_notes NVARCHAR(MAX) NULL, -- ARBEIT.ZUSATZ_BEMERKUNG -- Migration legacy_id INT NULL, -- ARBEIT.Zahler oder Reparaturliste.LfdNr legacy_source VARCHAR(20) NULL, -- 'ENIVERS_ARBEIT' | 'AMED_REPA' | 'WIS_TT' -- Audit created_at DATETIME2 NOT NULL DEFAULT SYSUTCDATETIME(), updated_at DATETIME2 NOT NULL DEFAULT SYSUTCDATETIME(), created_by INT NULL, updated_by INT NULL )
Status-Werte (aus ENIVERS ARBEIT, normalisiert)
Aus ARBEIT.STATUS (Werte 1–8, Bedeutung aus Quellcode abzuleiten):
INSERT INTO shared.list_item (list_type, code, label, sort_order) VALUES ('WORK_STATUS', '1', 'Offen', 1), ('WORK_STATUS', '2', 'In Bearbeitung', 2), ('WORK_STATUS', '3', 'Erledigt', 3), ('WORK_STATUS', '4', 'Zurückgestellt', 4), ('WORK_STATUS', '5', 'Wartend auf Freigabe', 5), ('WORK_STATUS', '6', 'Storniert', 6), ('WORK_STATUS', '7', 'Geplant', 7), ('WORK_STATUS', '8', 'Archiviert', 8);
Hinweis: Genaue Semantik der Status-Codes ist anhand AMED/ENIVERS-Quellcode zu verifizieren.
work.order_cost — Kostenerfassung
Normalisiert aus ARBEIT (PL_KOS, Material, Fremdleistung, MON_KOS) in separate Zeilen:
CREATE TABLE WORK.order_cost ( id INT NOT NULL IDENTITY PRIMARY KEY, order_id INT NOT NULL, -- FK → work.order cost_type VARCHAR(20) NOT NULL, -- 'PLANUNG', 'MATERIAL', 'FREMDLEISTUNG', 'MONTAGE' amount DECIMAL(12,2) NOT NULL, currency CHAR(3) NOT NULL DEFAULT 'EUR', notes NVARCHAR(500) NULL )
| cost_type | Herkunft ARBEIT-Spalte | Beschreibung |
|---|---|---|
PLANUNG | PL_KOS | Geplante Gesamtkosten |
MATERIAL | Material | Materialkosten |
FREMDLEISTUNG | Fremdleistung | Externe Dienstleister |
MONTAGE | MON_KOS / AufwAuG | Montagekosten |
work.plan — Arbeitsplanung
Abgeleitet aus ENIVERS.tblArbeitPlan (Stillstandspläne, Revisionspläne):
CREATE TABLE WORK.plan ( id INT NOT NULL IDENTITY PRIMARY KEY, name VARCHAR(25) NOT NULL, -- tblArbeitPlan.strApName designation NVARCHAR(50) NULL, -- strApBezeichnung date_begin DATETIME2 NULL, date_end DATETIME2 NULL, department_code VARCHAR(5) NULL, is_shutdown BIT NOT NULL DEFAULT 0, -- strApStillstand branch_id INT NULL, is_inactive BIT NOT NULL DEFAULT 0, notes NVARCHAR(MAX) NULL, -- Migration legacy_id INT NULL, -- tblArbeitPlan.idArbeitPlan -- Audit created_at DATETIME2 NOT NULL DEFAULT SYSUTCDATETIME(), updated_at DATETIME2 NOT NULL DEFAULT SYSUTCDATETIME() )
fault.report — Schadensmeldungen
Zentraler Mangel-/Schadensbericht. Abgeleitet aus AMED Reparaturliste (100.159 Einträge).
CREATE TABLE fault.report ( id INT NOT NULL IDENTITY PRIMARY KEY, item_id INT NULL, -- FK → ENIVERSCAFM.asset.item -- Meldung report_date DATE NOT NULL, -- Datum der Meldung reporter_name NVARCHAR(50) NULL, -- Melder description NVARCHAR(500) NOT NULL, -- Schadensmeldung -- Betroffene Disziplinen (aus Reparaturliste: bit-Flags) discipline_mech BIT NOT NULL DEFAULT 0, discipline_emr BIT NOT NULL DEFAULT 0, discipline_piping BIT NOT NULL DEFAULT 0, discipline_other BIT NOT NULL DEFAULT 0, discipline_other_text NVARCHAR(255) NULL, -- Gefährdungspotential has_accident_potential BIT NOT NULL DEFAULT 0, -- bitUnfallpotential -- Status pro Disziplin status_mech SMALLINT NULL, status_emr SMALLINT NULL, status_piping SMALLINT NULL, status_other SMALLINT NULL, -- Abschluss date_completed DATE NULL, date_start DATE NULL, date_end DATE NULL, -- Freigabe approval_id INT NULL, -- Folge-Aufträge work_order_id INT NULL, -- FK → work.order (generierter Reparaturauftrag) -- Safety safety_check_type VARCHAR(5) NULL, -- FK → shared.list_item (list_type='SAFETY_CHECK') -- A=Risikoanalyse, S=Sicherheitsgespräch, C=Check -- Migration legacy_id INT NULL, -- Reparaturliste.LfdNr legacy_idgpb INT NULL, -- Reparaturliste.IDGPB -- Audit created_at DATETIME2 NOT NULL DEFAULT SYSUTCDATETIME(), updated_at DATETIME2 NOT NULL DEFAULT SYSUTCDATETIME() )
Safety-Check-Typen (aus AMED Sicherheitscheck-Tabelle)
INSERT INTO shared.list_item (list_type, code, label, sort_order) VALUES ('SAFETY_CHECK', 'A', 'Risikoanalyse', 1), ('SAFETY_CHECK', 'S', 'Sicherheitsgespräch', 2), ('SAFETY_CHECK', 'C', 'Sicherheitscheck', 3);
Verknüpfungsmodell
work.plan (Revision / Stillstand)
│
└─► work.order (plan_id)
│
┌─────────┼──────────────┐
│ │ │
▼ ▼ ▼
ART='U' ART='R' ART='W'
(Prüfung) (Reparatur) (Wartung)
│ ▲
│ │ fault_report_id
│ │
▼ │
inspection.result
│
└──► fault.report ──► work.order (ART='R')