Details gefixt

This commit is contained in:
Wir
2024-11-05 15:58:42 +01:00
parent 775135e6b3
commit 17b64357a0

View File

@@ -16,13 +16,13 @@
"import importlib\n", "import importlib\n",
"importlib.reload(neo)\n", "importlib.reload(neo)\n",
"\n", "\n",
"plant = neo.Plant.from_id(\"76f89f82-1238-43bb-b34f-796a92d491a2\")\n", "#plant = neo.Asset.Plant.from_id(\"76f89f82-1238-43bb-b34f-796a92d491a2\")\n",
"print(plant.name)\n", "#print(plant.name)\n",
"\n", "\n",
"\n", "\n",
"seedings = neo.Seeding.get_list()\n", "seedings = neo.Log.Seeding.get_list()\n",
"for seeding in seedings:\n", "for seeding in seedings:\n",
" plant = seeding.getPlant()\n", " plant = seeding.plant\n",
" equipment = seeding.equipment[0]\n", " equipment = seeding.equipment[0]\n",
" quantity1 = seeding.quantities[0]\n", " quantity1 = seeding.quantities[0]\n",
" quantity2 = seeding.quantities[1]\n", " quantity2 = seeding.quantities[1]\n",
@@ -45,6 +45,50 @@
" print(f\"Q2 units: {quantity2.units.name}\")" " print(f\"Q2 units: {quantity2.units.name}\")"
] ]
}, },
{
"cell_type": "code",
"execution_count": null,
"id": "c1bf2175-65f7-4704-8d39-15a08849c9ae",
"metadata": {
"jupyter": {
"source_hidden": true
}
},
"outputs": [],
"source": [
"import neofarm.lib as neo\n",
"import importlib\n",
"importlib.reload(neo)\n",
"\n",
"#plant = neo.Asset.Plant.from_id(\"76f89f82-1238-43bb-b34f-796a92d491a2\")\n",
"#print(plant.name)\n",
"\n",
"\n",
"seedings = neo.Log.Purchase.get_list()\n",
"for seeding in seedings:\n",
" plant = seeding.plant\n",
" #equipment = seeding.equipment[0]\n",
" quantity1 = seeding.quantities[0]\n",
" # quantity2 = seeding.quantities[1]\n",
" print(f\"name: {seeding.name}\")\n",
" print(f\"timestamp: {seeding.timestamp}\")\n",
" #print(f\"plant name: {plant.name}\")\n",
" #print(f\"plant crop: {plant.crop[0].name}\")\n",
" #print(f\"plant loc: {plant.location[0].name}\")\n",
" #print(f\"equipment: {equipment.name}\")\n",
" print(f\"isMovement: {seeding.isMovement}\")\n",
" print(f\"Q1 type: {quantity1.type}\")\n",
" print(f\"Q1 measure: {quantity1.measure}\")\n",
" print(f\"Q1 value: {quantity1.value}\")\n",
" print(f\"Q1 units: {quantity1.units.name}\")\n",
" print(f\"Q1 inv adj: {quantity1.inventory_adjustment}\")\n",
" print(f\"Q1 inv ass: {quantity1.inventory_asset.name}\")\n",
" print(f\"Q2 type: {quantity2.type}\")\n",
" print(f\"Q2 measure: {quantity2.measure}\")\n",
" print(f\"Q2 value: {quantity2.value}\")\n",
" print(f\"Q2 units: {quantity2.units.name}\")"
]
},
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
@@ -158,8 +202,8 @@
" print(f\"quant_measure: {input.quantities[0].measure}\")\n", " print(f\"quant_measure: {input.quantities[0].measure}\")\n",
" print(f\"quant_value: {input.quantities[0].value}\")\n", " print(f\"quant_value: {input.quantities[0].value}\")\n",
" print(f\"quant_inventory_adjustment: {input.quantities[0].inventory_adjustment}\")\n", " print(f\"quant_inventory_adjustment: {input.quantities[0].inventory_adjustment}\")\n",
" print(f\"quant_value: {input.quantities[0].unit_price}\")\n", " #print(f\"quant_value: {input.quantities[0].unit_price}\")\n",
"\n", " print(f\"unit_name: {input.quantities[0].units.name}\")\n",
" \t\n", " \t\n",
"#log Seeding \n", "#log Seeding \n",
" logs = asset.get_logs_of_type(neo.Log.Seeding)\n", " logs = asset.get_logs_of_type(neo.Log.Seeding)\n",
@@ -246,70 +290,214 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": 1,
"id": "ce30a9db-735e-4174-ad56-0f0079ab04c6", "id": "649e4d8e-c3a9-4d5f-9bdf-9427f416fca9",
"metadata": { "metadata": {
"collapsed": true,
"jupyter": { "jupyter": {
"outputs_hidden": true,
"source_hidden": true "source_hidden": true
}
}, },
"outputs": [], "scrolled": true
"source": [ },
"#alle logs von einem Plant in Tabelle\n", "outputs": [
"import neofarm.lib as neo\n", {
"import pandas as pd\n", "name": "stdout",
"from datetime import datetime\n", "output_type": "stream",
"\n", "text": [
"if __name__ == \"__main__\":\n", "PlantName: W-Raps Helmacker Plant 24/25\n"
" asset = neo.Asset.Plant.from_id(\"76f89f82-1238-43bb-b34f-796a92d491a2\")\n",
" \n",
" # Definiere den Pflanzennamen\n",
" PlantName = \"W-Raps Helmacker Plant 24/25\"\n",
" print(f\"PlantName: {PlantName}\")\n",
" \n",
" # Erstelle eine Liste, in der die Log-Daten für die Tabelle gesammelt werden\n",
" data = []\n",
"\n",
" # Funktion, um die Logs zu verarbeiten und zur Tabelle hinzuzufügen\n",
" def process_logs(logs, log_type):\n",
" for log in logs:\n",
" formatted_date = datetime.fromisoformat(log.timestamp).strftime(\"%d.%m.%y %H:%M\")\n",
" equipment_name = log.equipment[0].name if log.equipment else \"\"\n",
" location_name = log.location[0].name if hasattr(log, 'location') and log.location else \"\"\n",
" data.append({\n",
" #\"PlantName\": PlantName,\n",
" \"LogType\": log_type,\n",
" \"Name\": log.name,\n",
" \"Timestamp\": formatted_date,\n",
" \"Equipment\": equipment_name,\n",
" \"Location\": location_name\n",
" })\n",
"\n",
" # Verarbeite die verschiedenen Log-Typen\n",
" process_logs(asset.get_logs_of_type(neo.Log.Maintenance), \"Maintenance\")\n",
" process_logs(asset.get_logs_of_type(neo.Log.Seeding), \"Seeding\")\n",
" process_logs(asset.get_logs_of_type(neo.Log.Input), \"Input\")\n",
" process_logs(asset.get_logs_of_type(neo.Log.Medical), \"Medical\")\n",
" process_logs(asset.get_logs_of_type(neo.Log.Harvest), \"Harvest\")\n",
" process_logs(asset.get_logs_of_type(neo.Log.Sale), \"Sale\")\n",
"\n",
" # Erstelle ein DataFrame aus den gesammelten Daten und zeige es an\n",
" df = pd.DataFrame(data)\n",
" display(df)\n"
] ]
}, },
{ {
"cell_type": "code", "data": {
"execution_count": null, "text/html": [
"id": "649e4d8e-c3a9-4d5f-9bdf-9427f416fca9", "<div>\n",
"metadata": { "<style scoped>\n",
"jupyter": { " .dataframe tbody tr th:only-of-type {\n",
"source_hidden": true " vertical-align: middle;\n",
} " }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>PlantName</th>\n",
" <th>LogType</th>\n",
" <th>Name</th>\n",
" <th>Timestamp</th>\n",
" <th>Equipment</th>\n",
" <th>Location</th>\n",
" <th>QuantType</th>\n",
" <th>QuantMeasure</th>\n",
" <th>QuantValue</th>\n",
" <th>QuantInventoryAdjustment</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>W-Raps Helmacker Plant 24/25</td>\n",
" <td>Maintenance</td>\n",
" <td>Scheibeneggen Helmacker Maintenance 24/25</td>\n",
" <td>28.07.24 11:34</td>\n",
" <td>Scheibenegge Catros</td>\n",
" <td>None</td>\n",
" <td>quantity--price</td>\n",
" <td>time</td>\n",
" <td>2</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>W-Raps Helmacker Plant 24/25</td>\n",
" <td>Seeding</td>\n",
" <td>W-Raps Otello KWS Helmacker Seeding 24/25</td>\n",
" <td>22.08.24 22:00</td>\n",
" <td>Sähmaschine Cataya</td>\n",
" <td>Helmacker</td>\n",
" <td>quantity--standard</td>\n",
" <td>weight</td>\n",
" <td>50</td>\n",
" <td>decrement</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>W-Raps Helmacker Plant 24/25</td>\n",
" <td>Seeding</td>\n",
" <td>W-Raps Otello KWS Helmacker Seeding 24/25</td>\n",
" <td>22.08.24 22:00</td>\n",
" <td>Sähmaschine Cataya</td>\n",
" <td>Helmacker</td>\n",
" <td>quantity--standard</td>\n",
" <td>area</td>\n",
" <td>3.02</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>W-Raps Helmacker Plant 24/25</td>\n",
" <td>Input</td>\n",
" <td>Innovert Raps Input 24/25</td>\n",
" <td>12.10.24 13:18</td>\n",
" <td>Spritze</td>\n",
" <td>None</td>\n",
" <td>quantity--standard</td>\n",
" <td>volume</td>\n",
" <td>10</td>\n",
" <td>decrement</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>W-Raps Helmacker Plant 24/25</td>\n",
" <td>Input</td>\n",
" <td>Innovert Raps Input 24/25</td>\n",
" <td>03.11.24 23:00</td>\n",
" <td>Spritze</td>\n",
" <td>None</td>\n",
" <td>quantity--standard</td>\n",
" <td>volume</td>\n",
" <td>10</td>\n",
" <td>decrement</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>W-Raps Helmacker Plant 24/25</td>\n",
" <td>Medical</td>\n",
" <td>Schneckenkorn Medical 24/25</td>\n",
" <td>30.08.24 06:42</td>\n",
" <td>Schneckenkornstreuer Leinfelder</td>\n",
" <td>None</td>\n",
" <td>quantity--standard</td>\n",
" <td>weight</td>\n",
" <td>10</td>\n",
" <td>decrement</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>W-Raps Helmacker Plant 24/25</td>\n",
" <td>Harvest</td>\n",
" <td>W-Raps Helmacker Harvest 24/25</td>\n",
" <td>20.10.24 10:11</td>\n",
" <td>Mähdrescher Leinfelder</td>\n",
" <td>None</td>\n",
" <td>quantity--standard</td>\n",
" <td>weight</td>\n",
" <td>5</td>\n",
" <td>increment</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>W-Raps Helmacker Plant 24/25</td>\n",
" <td>Sale</td>\n",
" <td>W-Raps Sale 24/25</td>\n",
" <td>28.10.24 07:54</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>quantity--price</td>\n",
" <td>weight</td>\n",
" <td>5</td>\n",
" <td>decrement</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" PlantName LogType \\\n",
"0 W-Raps Helmacker Plant 24/25 Maintenance \n",
"1 W-Raps Helmacker Plant 24/25 Seeding \n",
"2 W-Raps Helmacker Plant 24/25 Seeding \n",
"3 W-Raps Helmacker Plant 24/25 Input \n",
"4 W-Raps Helmacker Plant 24/25 Input \n",
"5 W-Raps Helmacker Plant 24/25 Medical \n",
"6 W-Raps Helmacker Plant 24/25 Harvest \n",
"7 W-Raps Helmacker Plant 24/25 Sale \n",
"\n",
" Name Timestamp \\\n",
"0 Scheibeneggen Helmacker Maintenance 24/25 28.07.24 11:34 \n",
"1 W-Raps Otello KWS Helmacker Seeding 24/25 22.08.24 22:00 \n",
"2 W-Raps Otello KWS Helmacker Seeding 24/25 22.08.24 22:00 \n",
"3 Innovert Raps Input 24/25 12.10.24 13:18 \n",
"4 Innovert Raps Input 24/25 03.11.24 23:00 \n",
"5 Schneckenkorn Medical 24/25 30.08.24 06:42 \n",
"6 W-Raps Helmacker Harvest 24/25 20.10.24 10:11 \n",
"7 W-Raps Sale 24/25 28.10.24 07:54 \n",
"\n",
" Equipment Location QuantType \\\n",
"0 Scheibenegge Catros None quantity--price \n",
"1 Sähmaschine Cataya Helmacker quantity--standard \n",
"2 Sähmaschine Cataya Helmacker quantity--standard \n",
"3 Spritze None quantity--standard \n",
"4 Spritze None quantity--standard \n",
"5 Schneckenkornstreuer Leinfelder None quantity--standard \n",
"6 Mähdrescher Leinfelder None quantity--standard \n",
"7 None None quantity--price \n",
"\n",
" QuantMeasure QuantValue QuantInventoryAdjustment \n",
"0 time 2 None \n",
"1 weight 50 decrement \n",
"2 area 3.02 None \n",
"3 volume 10 decrement \n",
"4 volume 10 decrement \n",
"5 weight 10 decrement \n",
"6 weight 5 increment \n",
"7 weight 5 decrement "
]
}, },
"outputs": [], "metadata": {},
"output_type": "display_data"
}
],
"source": [ "source": [
"#Alle logs zu plant mit quantities untereinander\n", "#Alle logs zu plant mit quantities untereinander tabelle\n",
"import neofarm.lib as neo\n", "import neofarm.lib as neo\n",
"import pandas as pd\n", "import pandas as pd\n",
"from datetime import datetime\n", "from datetime import datetime\n",
@@ -385,7 +573,7 @@
}, },
"outputs": [], "outputs": [],
"source": [ "source": [
"#Alle logs zu plant mit quantities nebeneinander\n", "#Alle logs zu plant mit quantities nebeneinander tabelle\n",
"import neofarm.lib as neo\n", "import neofarm.lib as neo\n",
"import pandas as pd\n", "import pandas as pd\n",
"from datetime import datetime\n", "from datetime import datetime\n",
@@ -465,7 +653,11 @@
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"id": "c1b73098-08f3-43fd-9bf0-d3d628b15e0d", "id": "c1b73098-08f3-43fd-9bf0-d3d628b15e0d",
"metadata": {}, "metadata": {
"jupyter": {
"source_hidden": true
}
},
"outputs": [], "outputs": [],
"source": [ "source": [
"#Alle logs zu plant mit quantities nebeneinander in Excel exportiert\n", "#Alle logs zu plant mit quantities nebeneinander in Excel exportiert\n",
@@ -481,12 +673,16 @@
"downloads_folder = os.path.join(os.path.expanduser(\"~\"), \"Downloads\")\n", "downloads_folder = os.path.join(os.path.expanduser(\"~\"), \"Downloads\")\n",
"file_path = os.path.join(downloads_folder, \"PlantLogs.xlsx\")\n", "file_path = os.path.join(downloads_folder, \"PlantLogs.xlsx\")\n",
"\n", "\n",
"if __name__ == \"__main__\":\n",
" asset = neo.Asset.Plant.from_id(\"76f89f82-1238-43bb-b34f-796a92d491a2\")\n",
"\n", "\n",
" # Definiere den Pflanzennamen\n", "# Definiere den Pflanzennamen\n",
" PlantName = \"W-Raps Helmacker Plant 24/25\"\n", "PlantName = \"W-Raps Helmacker Plant 24/25\"\n",
" print(f\"PlantName: {PlantName}\")\n", "PlantId = \"76f89f82-1238-43bb-b34f-796a92d491a2\"\n",
"print(f\"PlantName: {PlantName}\")\n",
"\n",
"\n",
"if __name__ == \"__main__\":\n",
" asset = neo.Asset.Plant.from_id(PlantId)\n",
"\n",
"\n", "\n",
" data = []\n", " data = []\n",
"\n", "\n",
@@ -573,7 +769,7 @@
" cell.number_format = 'DD.MM.YYYY' # Setze das Datumsformat\n", " cell.number_format = 'DD.MM.YYYY' # Setze das Datumsformat\n",
" \n", " \n",
" max_length = max(max_length, len(str(cell.value)) if cell.value else 0)\n", " max_length = max(max_length, len(str(cell.value)) if cell.value else 0)\n",
" adjusted_width = (max_length + 2) * 1.2 # Extra Puffer hinzufügen\n", " adjusted_width = (max_length + 2) * 1.0 # Extra Puffer hinzufügen\n",
" worksheet.column_dimensions[col_letter].width = adjusted_width\n", " worksheet.column_dimensions[col_letter].width = adjusted_width\n",
"\n", "\n",
" # Speichern Sie die Datei\n", " # Speichern Sie die Datei\n",
@@ -585,9 +781,88 @@
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"id": "ebcc62d0-4334-4c61-aaa2-14cd96e8a6f0", "id": "ebcc62d0-4334-4c61-aaa2-14cd96e8a6f0",
"metadata": {}, "metadata": {
"jupyter": {
"source_hidden": true
}
},
"outputs": [], "outputs": [],
"source": [] "source": [
"#Alle logs zu plant mit quantities nebeneinander tabelle\n",
"import neofarm.lib as neo\n",
"import pandas as pd\n",
"from datetime import datetime\n",
"\n",
"if __name__ == \"__main__\":\n",
" asset = neo.Asset.Plant.from_id(\"\")\n",
"\n",
" # Definiere den Pflanzennamen\n",
" PlantName = \"W-Raps Helmacker Plant 24/25\"\n",
" print(f\"PlantName: {PlantName}\")\n",
"\n",
" # Erstelle eine Liste zur Sammlung der Daten\n",
" data = []\n",
"\n",
" # Funktion, um Logs zu verarbeiten und die Daten zur Liste hinzuzufügen\n",
" def process_logs(logs, log_type):\n",
" for log in logs:\n",
" formatted_date = datetime.fromisoformat(log.timestamp).strftime(\"%d.%m.%y %H:%M\")\n",
" equipment_name = log.equipment[0].name if log.equipment else \"None\"\n",
" location_name = log.location[0].name if hasattr(log, 'location') and log.location else \"\"\n",
"\n",
" # Menge und weitere Details (bis zu zwei Mengen)\n",
" quantities = getattr(log, 'quantities', [])\n",
" \n",
" # Initialisiere Standardwerte für die zweite Menge\n",
" quant_type_2 = quant_measure_2 = quant_value_2 = quant_inventory_adjustment_2 = \"\"\n",
"\n",
" if len(quantities) > 0:\n",
" # Erste Menge vorhanden\n",
" quant_type_1 = quantities[0].type\n",
" quant_measure_1 = quantities[0].measure\n",
" quant_value_1 = quantities[0].value\n",
" quant_inventory_adjustment_1 = quantities[0].inventory_adjustment\n",
" else:\n",
" # Keine Mengenangaben vorhanden\n",
" quant_type_1 = quant_measure_1 = quant_value_1 = quant_inventory_adjustment_1 = \"\"\n",
" \n",
" if len(quantities) > 1:\n",
" # Zweite Menge vorhanden\n",
" quant_type_2 = quantities[1].type\n",
" quant_measure_2 = quantities[1].measure\n",
" quant_value_2 = quantities[1].value\n",
" quant_inventory_adjustment_2 = quantities[1].inventory_adjustment\n",
"\n",
" # Daten zur Tabelle hinzufügen\n",
" data.append({\n",
" \"PlantName\": PlantName,\n",
" \"LogType\": log_type,\n",
" \"Name\": log.name,\n",
" \"Timestamp\": formatted_date,\n",
" \"Equipment\": equipment_name,\n",
" \"Location\": location_name,\n",
" \"QuantType_1\": quant_type_1,\n",
" \"QuantMeasure_1\": quant_measure_1,\n",
" \"QuantValue_1\": quant_value_1,\n",
" \"QuantInventoryAdjustment_1\": quant_inventory_adjustment_1,\n",
" \"QuantType_2\": quant_type_2,\n",
" \"QuantMeasure_2\": quant_measure_2,\n",
" \"QuantValue_2\": quant_value_2,\n",
" \"QuantInventoryAdjustment_2\": quant_inventory_adjustment_2\n",
" })\n",
"\n",
" # Verarbeite die verschiedenen Log-Typen\n",
" process_logs(asset.get_logs_of_type(neo.Log.Maintenance), \"Maintenance\")\n",
" process_logs(asset.get_logs_of_type(neo.Log.Seeding), \"Seeding\")\n",
" process_logs(asset.get_logs_of_type(neo.Log.Input), \"Input\")\n",
" process_logs(asset.get_logs_of_type(neo.Log.Medical), \"Medical\")\n",
" process_logs(asset.get_logs_of_type(neo.Log.Harvest), \"Harvest\")\n",
" process_logs(asset.get_logs_of_type(neo.Log.Sale), \"Sale\")\n",
"\n",
" # Erstelle ein DataFrame aus den gesammelten Daten und zeige es an\n",
" df = pd.DataFrame(data)\n",
" display(df)\n"
]
}, },
{ {
"cell_type": "code", "cell_type": "code",