diff --git a/demos/demo_example_finale/demo_arbeitsauftrag.py b/demos/demo_example_finale/demo_arbeitsauftrag.py new file mode 100644 index 0000000000000000000000000000000000000000..3ec7c106cdff5fdb142682255fd0b1370b55364b --- /dev/null +++ b/demos/demo_example_finale/demo_arbeitsauftrag.py @@ -0,0 +1,57 @@ +from demos.demo_example_finale.utils import save_and_print_aas_obj +from model.enums import Auftragsstatus +from model.generic_model import Arbeitsauftrag, ZuFaellendeBaeume +from model.models import Koordinate + +if __name__ == '__main__': + coord1 = Koordinate(x=12.132925613639593, y=49.04954714847827, crs="EPSG:4326") # todo implement CRS + coord2 = Koordinate(x=12.114363040065479, y=49.04887650011801, crs="EPSG:4326") + coord3 = Koordinate(x=12.112590150688762, y=49.03921011545453, crs="EPSG:4326") + + stehender_baum_1 = ZuFaellendeBaeume.Baumliste.StehenderBaum( + hoehe=float(19), # in metres + bhd=float(5), # in metres + baumart="fi", # e.g. fichte + position=ZuFaellendeBaeume.Baumliste.StehenderBaum.Position(coord1), + category="Fällen" + ) + + stehender_baum_2 = ZuFaellendeBaeume.Baumliste.StehenderBaum( + hoehe=float(20), # in metres + bhd=float(4), # in metres + baumart="fi", # e.g. fichte + position=ZuFaellendeBaeume.Baumliste.StehenderBaum.Position(coord2), + category="Fällen" + ) + + stehender_baum_3 = ZuFaellendeBaeume.Baumliste.StehenderBaum( + hoehe=float(25), # in metres + bhd=float(4), # in metres + baumart="bi", # e.g. birke + position=ZuFaellendeBaeume.Baumliste.StehenderBaum.Position(coord3), + category="Einsammeln" + ) + baumliste = [stehender_baum_1, stehender_baum_2, stehender_baum_3] # nicht sortenrein + + zu_faellende_baeume = ZuFaellendeBaeume( + id_="1", # todo what to fill in in id_? -> random uuid? + position=None, # im ForestManager sind die positionen in der Baumliste + baumliste=baumliste, + beschreibung="", + umring=ZuFaellendeBaeume.Umring( # todo Umring sollte optional sein + beschreibung="", + name="", + koordinaten=ZuFaellendeBaeume.Umring.Koordinaten(koordinate=[]) # empty + ) + ) + + arbeitsauftrag = Arbeitsauftrag(id_="1", # todo what to fill in in id_? -> random uuid? + hiebsnummer=Arbeitsauftrag.Hiebsnummer(value="Hieb1"), # string input + kurzbeschreibung="Bitte Bäume fällen.", # string input + sicherheitshinweise="Sicherheitshinweise", # string input + naturschutzhinweise=None, # string input + sortimente=None, # Sortimente werden vom Forestmanager nicht unterstützt + zuFaellendeBaeume=zu_faellende_baeume, + auftragsstatus=str(Auftragsstatus.Gesendet)) + + save_and_print_aas_obj("Arbeitsauftrag", arbeitsauftrag) diff --git a/demos/demo_example_finale/output/Arbeitsauftrag.json b/demos/demo_example_finale/output/Arbeitsauftrag.json new file mode 100644 index 0000000000000000000000000000000000000000..7b82cd04497d6bdc07c8e31e126059b0feb8a3a0 --- /dev/null +++ b/demos/demo_example_finale/output/Arbeitsauftrag.json @@ -0,0 +1,738 @@ +{ + "idShort": "Arbeitsauftrag", + "modelType": "Submodel", + "id": "1", + "semanticId": { + "type": "GlobalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "https://admin-shell.io/kwh40/forestml40/Arbeitsauftrag/0/1" + } + ] + }, + "submodelElements": [ + { + "idShort": "Hiebsnummer", + "modelType": "Property", + "semanticId": { + "type": "GlobalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "https://admin-shell.io/kwh40/forestml40/Arbeitsauftrag/0/1/Hiebsnummer" + } + ] + }, + "qualifiers": [ + { + "value": "One", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": "Hieb1", + "valueType": "xs:string" + }, + { + "idShort": "Kurzbeschreibung", + "modelType": "Property", + "semanticId": { + "type": "GlobalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "https://admin-shell.io/kwh40/forestml40/Arbeitsauftrag/0/1/Kurzbeschreibung" + } + ] + }, + "qualifiers": [ + { + "value": "One", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": "Bitte B\u00e4ume f\u00e4llen.", + "valueType": "xs:string" + }, + { + "idShort": "Sicherheitshinweise", + "modelType": "Property", + "semanticId": { + "type": "GlobalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "https://admin-shell.io/kwh40/forestml40/Arbeitsauftrag/0/1/Sicherheitshinweise" + } + ] + }, + "qualifiers": [ + { + "value": "ZeroToOne", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": "Sicherheitshinweise", + "valueType": "xs:string" + }, + { + "idShort": "Auftragsstatus", + "modelType": "Property", + "semanticId": { + "type": "GlobalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "https://admin-shell.io/kwh40/forestml40/Arbeitsauftrag/0/1/Auftragsstatus" + } + ] + }, + "qualifiers": [ + { + "value": "ZeroToOne", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": "Auftragsstatus.Gesendet", + "valueType": "xs:string" + }, + { + "idShort": "ZuFaellendeBaeume", + "modelType": "ReferenceElement", + "semanticId": { + "type": "GlobalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "https://admin-shell.io/kwh40/forestml40/Arbeitsauftrag/0/1/ZuFaellendeBaeume" + } + ] + }, + "qualifiers": [ + { + "value": "ZeroToOne", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": { + "idShort": "ZuFaellendeBaeume", + "modelType": "Submodel", + "id": "1", + "semanticId": { + "type": "GlobalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "https://admin-shell.io/kwh40/forestml40/ZuFaellendeBaeume/0/1" + } + ] + }, + "submodelElements": [ + { + "idShort": "Umring", + "modelType": "SubmodelElementCollection", + "semanticId": { + "type": "GlobalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "https://admin-shell.io/kwh40/forestml40/ZuFaellendeBaeume/0/1/Umring" + } + ] + }, + "value": [ + { + "idShort": "Koordinaten", + "modelType": "SubmodelElementList", + "semanticId": { + "type": "GlobalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "https://admin-shell.io/kwh40/forestml40/ZuFaellendeBaeume/0/1/Umring/Koordinaten" + } + ] + }, + "qualifiers": [ + { + "value": "One", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "orderRelevant": true, + "typeValueListElement": "SubmodelElementCollection" + } + ] + }, + { + "idShort": "StehenderBaum0", + "category": "F\u00e4llen", + "modelType": "SubmodelElementCollection", + "semanticId": { + "type": "GlobalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "https://admin-shell.io/kwh40/forestml40/ZuFaellendeBaeume/0/1/Baumliste/StehenderBaum" + } + ] + }, + "qualifiers": [ + { + "value": "ZeroToMany", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": [ + { + "idShort": "Hoehe", + "modelType": "Property", + "semanticId": { + "type": "GlobalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "https://admin-shell.io/kwh40/forestml40/ZuFaellendeBaeume/0/1/Baumliste/StehenderBaum/Hoehe" + } + ] + }, + "qualifiers": [ + { + "value": "ZeroToOne", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": "19.0", + "valueType": "xs:double" + }, + { + "idShort": "bhd", + "modelType": "Property", + "semanticId": { + "type": "GlobalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "https://admin-shell.io/kwh40/forestml40/ZuFaellendeBaeume/0/1/Baumliste/StehenderBaum/bhd" + } + ] + }, + "qualifiers": [ + { + "value": "ZeroToOne", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": "5.0", + "valueType": "xs:double" + }, + { + "idShort": "Baumart", + "modelType": "Property", + "semanticId": { + "type": "GlobalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "https://admin-shell.io/kwh40/forestml40/ZuFaellendeBaeume/0/1/Baumliste/StehenderBaum/Baumart" + } + ] + }, + "qualifiers": [ + { + "value": "ZeroToOne", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": "fi", + "valueType": "xs:string" + }, + { + "idShort": "Position", + "modelType": "SubmodelElementCollection", + "semanticId": { + "type": "GlobalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "https://admin-shell.io/kwh40/forestml40/ZuFaellendeBaeume/0/1/Baumliste/StehenderBaum/Position" + } + ] + }, + "qualifiers": [ + { + "value": "ZeroToOne", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": [ + { + "idShort": "Koordinate", + "modelType": "SubmodelElementCollection", + "qualifiers": [ + { + "value": "OneToMany", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": [ + { + "idShort": "x", + "modelType": "Property", + "qualifiers": [ + { + "value": "ZeroToOne", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": "12.132925613639593", + "valueType": "xs:double" + }, + { + "idShort": "y", + "modelType": "Property", + "qualifiers": [ + { + "value": "ZeroToOne", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": "49.04954714847827", + "valueType": "xs:double" + }, + { + "idShort": "alt", + "modelType": "Property", + "qualifiers": [ + { + "value": "ZeroToOne", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "valueType": "xs:double" + }, + { + "idShort": "crs", + "modelType": "Property", + "qualifiers": [ + { + "value": "ZeroToOne", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": "EPSG:4326", + "valueType": "xs:string" + } + ] + } + ] + } + ] + }, + { + "idShort": "StehenderBaum1", + "category": "F\u00e4llen", + "modelType": "SubmodelElementCollection", + "semanticId": { + "type": "GlobalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "https://admin-shell.io/kwh40/forestml40/ZuFaellendeBaeume/0/1/Baumliste/StehenderBaum" + } + ] + }, + "qualifiers": [ + { + "value": "ZeroToMany", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": [ + { + "idShort": "Hoehe", + "modelType": "Property", + "semanticId": { + "type": "GlobalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "https://admin-shell.io/kwh40/forestml40/ZuFaellendeBaeume/0/1/Baumliste/StehenderBaum/Hoehe" + } + ] + }, + "qualifiers": [ + { + "value": "ZeroToOne", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": "20.0", + "valueType": "xs:double" + }, + { + "idShort": "bhd", + "modelType": "Property", + "semanticId": { + "type": "GlobalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "https://admin-shell.io/kwh40/forestml40/ZuFaellendeBaeume/0/1/Baumliste/StehenderBaum/bhd" + } + ] + }, + "qualifiers": [ + { + "value": "ZeroToOne", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": "4.0", + "valueType": "xs:double" + }, + { + "idShort": "Baumart", + "modelType": "Property", + "semanticId": { + "type": "GlobalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "https://admin-shell.io/kwh40/forestml40/ZuFaellendeBaeume/0/1/Baumliste/StehenderBaum/Baumart" + } + ] + }, + "qualifiers": [ + { + "value": "ZeroToOne", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": "fi", + "valueType": "xs:string" + }, + { + "idShort": "Position", + "modelType": "SubmodelElementCollection", + "semanticId": { + "type": "GlobalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "https://admin-shell.io/kwh40/forestml40/ZuFaellendeBaeume/0/1/Baumliste/StehenderBaum/Position" + } + ] + }, + "qualifiers": [ + { + "value": "ZeroToOne", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": [ + { + "idShort": "Koordinate", + "modelType": "SubmodelElementCollection", + "qualifiers": [ + { + "value": "OneToMany", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": [ + { + "idShort": "x", + "modelType": "Property", + "qualifiers": [ + { + "value": "ZeroToOne", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": "12.114363040065479", + "valueType": "xs:double" + }, + { + "idShort": "y", + "modelType": "Property", + "qualifiers": [ + { + "value": "ZeroToOne", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": "49.04887650011801", + "valueType": "xs:double" + }, + { + "idShort": "alt", + "modelType": "Property", + "qualifiers": [ + { + "value": "ZeroToOne", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "valueType": "xs:double" + }, + { + "idShort": "crs", + "modelType": "Property", + "qualifiers": [ + { + "value": "ZeroToOne", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": "EPSG:4326", + "valueType": "xs:string" + } + ] + } + ] + } + ] + }, + { + "idShort": "StehenderBaum2", + "category": "Einsammeln", + "modelType": "SubmodelElementCollection", + "semanticId": { + "type": "GlobalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "https://admin-shell.io/kwh40/forestml40/ZuFaellendeBaeume/0/1/Baumliste/StehenderBaum" + } + ] + }, + "qualifiers": [ + { + "value": "ZeroToMany", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": [ + { + "idShort": "Hoehe", + "modelType": "Property", + "semanticId": { + "type": "GlobalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "https://admin-shell.io/kwh40/forestml40/ZuFaellendeBaeume/0/1/Baumliste/StehenderBaum/Hoehe" + } + ] + }, + "qualifiers": [ + { + "value": "ZeroToOne", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": "25.0", + "valueType": "xs:double" + }, + { + "idShort": "bhd", + "modelType": "Property", + "semanticId": { + "type": "GlobalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "https://admin-shell.io/kwh40/forestml40/ZuFaellendeBaeume/0/1/Baumliste/StehenderBaum/bhd" + } + ] + }, + "qualifiers": [ + { + "value": "ZeroToOne", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": "4.0", + "valueType": "xs:double" + }, + { + "idShort": "Baumart", + "modelType": "Property", + "semanticId": { + "type": "GlobalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "https://admin-shell.io/kwh40/forestml40/ZuFaellendeBaeume/0/1/Baumliste/StehenderBaum/Baumart" + } + ] + }, + "qualifiers": [ + { + "value": "ZeroToOne", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": "bi", + "valueType": "xs:string" + }, + { + "idShort": "Position", + "modelType": "SubmodelElementCollection", + "semanticId": { + "type": "GlobalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "https://admin-shell.io/kwh40/forestml40/ZuFaellendeBaeume/0/1/Baumliste/StehenderBaum/Position" + } + ] + }, + "qualifiers": [ + { + "value": "ZeroToOne", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": [ + { + "idShort": "Koordinate", + "modelType": "SubmodelElementCollection", + "qualifiers": [ + { + "value": "OneToMany", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": [ + { + "idShort": "x", + "modelType": "Property", + "qualifiers": [ + { + "value": "ZeroToOne", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": "12.112590150688762", + "valueType": "xs:double" + }, + { + "idShort": "y", + "modelType": "Property", + "qualifiers": [ + { + "value": "ZeroToOne", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": "49.03921011545453", + "valueType": "xs:double" + }, + { + "idShort": "alt", + "modelType": "Property", + "qualifiers": [ + { + "value": "ZeroToOne", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "valueType": "xs:double" + }, + { + "idShort": "crs", + "modelType": "Property", + "qualifiers": [ + { + "value": "ZeroToOne", + "kind": "ConceptQualifier", + "valueType": "xs:string", + "type": "Cardinality" + } + ], + "value": "EPSG:4326", + "valueType": "xs:string" + } + ] + } + ] + } + ] + } + ] + } + } + ] +} \ No newline at end of file diff --git a/modellierung/holzhandel_sequenz.puml b/modellierung/holzhandel_sequenz.puml index 6e75aa78c4d4329e57ec22792c49d6e24656b047..ebbf1e21f6913ce689cac5293a3dad1454662abf 100644 --- a/modellierung/holzhandel_sequenz.puml +++ b/modellierung/holzhandel_sequenz.puml @@ -37,7 +37,7 @@ Waldbesitzer -> WaldmanagerApp: Beobachtung eintragen activate WaldmanagerApp WaldmanagerApp -> DZ_Wald: Speichern der Beobachtung note over DZ_Wald #00FF00 - -> FM: wie in Modellierung, Beispiel in demos/demo_example_finale + -> FM: Umring sollte optional sein, Beispiel in demos/demo_example_finale end note activate DZ_Wald DZ_Wald --> WaldmanagerApp: gespeichert @@ -64,6 +64,14 @@ Waldbesitzer -> WaldmanagerApp: Arbeitsauftrag für Maßnahme erstellen activate WaldmanagerApp Waldbesitzer -> WaldmanagerApp: zu fällende Bäume zu Arbeitsauftrag hinzufügen WaldmanagerApp -> DZ_Wald: speichern des Arbeitsauftrags + note over DZ_Wald #00FF00 + -> FM: Umring sollte optional sein, + + Sortimente werden vom FM nicht unterstützt + (nur Eingabe von zu fällenden Bäumen und empfangen/updaten des Auftragsstatus), + + Beispiel in demos/demo_example_finale + end note activate DZ_Wald DZ_Wald --> WaldmanagerApp: Fertig deactivate DZ_Wald @@ -205,6 +213,10 @@ activate Holzhandelsplattform activate DZ_Wald Holzhandelsplattform <-- DZ_Wald: Holzlistenstatus deactivate DZ_Wald + note over WaldmanagerApp #00FF00 + -> FM: Möglichst einfach, keine Zeit mehr für Implementierung Verkaufslos + -> simple Benachrichtigung über Verkauf anzeigen + end note Holzhandelsplattform -> DZ_Wald: Update Verkaufsstatus in Verkaufslos activate DZ_Wald DZ_Wald -> WaldmanagerApp: Update Verkaufsstatus in Verkaufslos (Benachrichtigung / Event?)