892 lines
38 KiB
Plaintext
892 lines
38 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "f512fba3-877f-411e-935c-0c878d478b2d",
|
|
"metadata": {
|
|
"jupyter": {
|
|
"source_hidden": true
|
|
},
|
|
"scrolled": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import neofarm.lib as neo\n",
|
|
"\n",
|
|
"#plant = neo.Asset.Plant.from_id(\"76f89f82-1238-43bb-b34f-796a92d491a2\")\n",
|
|
"#print(plant.name)\n",
|
|
"\n",
|
|
"\n",
|
|
"seedings = neo.Log.Seeding.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",
|
|
"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",
|
|
"execution_count": null,
|
|
"id": "fdf49f3b-3949-4895-97fb-f5bd2484fce3",
|
|
"metadata": {
|
|
"jupyter": {
|
|
"source_hidden": true
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import neofarm.lib as neo\n",
|
|
"\n",
|
|
"inputs = neo.Input.get_list()\n",
|
|
"for element in inputs:\n",
|
|
" #equipment = element.equipment[0]\n",
|
|
" print(f\"name: {element.name}\")\n",
|
|
" print(f\"timestamp: {element.timestamp}\")\n",
|
|
" print(f\"plant name: {element.plant.name}\")\n",
|
|
" print(f\"plant crop: {element.plant.crop[0].name}\")\n",
|
|
" print(f\"plant loc: {element.plant.location[0].name}\")\n",
|
|
" print(f\"equipment: {element.equipment[0].name}\")\n",
|
|
" print(f\"isMovement: {element.isMovement}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "28598d92-24f2-47cb-bb19-9943800eefe1",
|
|
"metadata": {
|
|
"jupyter": {
|
|
"source_hidden": true
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import neofarm.lib as neo\n",
|
|
"\n",
|
|
"data = neo.Harvest.get_list()\n",
|
|
"for element in data:\n",
|
|
" #equipment = element.equipment[0]\n",
|
|
" print(f\"name: {element.name}\")\n",
|
|
" print(f\"timestamp: {element.timestamp}\")\n",
|
|
" print(f\"plant name: {element.plant.name}\")\n",
|
|
" print(f\"plant crop: {element.plant.crop[0].name}\")\n",
|
|
" print(f\"plant loc: {element.plant.location[0].name}\")\n",
|
|
" print(f\"equipment: {element.equipment[0].name}\")\n",
|
|
" print(f\"isMovement: {element.isMovement}\")\n",
|
|
" print(f\"Name vom Inventory asset von der Quantity: {element.quantities[0].inventory_asset.name}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "a993570d-dea2-4bd6-80c0-b36297ce6a3a",
|
|
"metadata": {
|
|
"jupyter": {
|
|
"source_hidden": true
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"#Beispiel\n",
|
|
"import neofarm.lib as neo\n",
|
|
"\n",
|
|
"if __name__ == \"__main__\":\n",
|
|
" asset = neo.Asset.Plant.from_id(\"76f89f82-1238-43bb-b34f-796a92d491a2\")\n",
|
|
" logs = asset.get_logs_of_type(neo.Log.Activity)\n",
|
|
" for log in logs:\n",
|
|
" print(log.name)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "3a33ffb1-afe7-44b5-863b-9779a95a2a9c",
|
|
"metadata": {
|
|
"jupyter": {
|
|
"source_hidden": true
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# alle logs von einem Plant\n",
|
|
"import neofarm.lib as neo\n",
|
|
"from datetime import datetime\n",
|
|
"\n",
|
|
"if __name__ == \"__main__\":\n",
|
|
" asset = neo.Asset.Plant.from_id(\"76f89f82-1238-43bb-b34f-796a92d491a2\")\n",
|
|
"\n",
|
|
"#Plantname\n",
|
|
" PlantName = \"W-Raps Helmacker Plant 24/25\" \n",
|
|
" print(f\"PlantName: {PlantName}\")\n",
|
|
"\n",
|
|
" \n",
|
|
"#log Maintenance\n",
|
|
" logs = asset.get_logs_of_type(neo.Log.Maintenance)\n",
|
|
" for log in logs:\n",
|
|
" print(\"Maintenance:\")\n",
|
|
" print(f\"name: {log.name}\")\n",
|
|
" formatted_date = datetime.fromisoformat(log.timestamp).strftime(\"%d.%m.%y %H:%M \") # Konvertiere in das gewünschte Format\n",
|
|
" print(f\"timestamp: {formatted_date}\") \n",
|
|
" print(f\"equipment: {log.equipment[0].name}\")\n",
|
|
"#quantity\n",
|
|
" input=neo.Log.Maintenance.from_id(log.id)\n",
|
|
" print(f\"quant_type: {input.quantities[0].type}\")\n",
|
|
" print(f\"quant_measure: {input.quantities[0].measure}\")\n",
|
|
" print(f\"quant_value: {input.quantities[0].value}\")\n",
|
|
" print(f\"quant_inventory_adjustment: {input.quantities[0].inventory_adjustment}\")\n",
|
|
" #print(f\"quant_value: {input.quantities[0].unit_price}\")\n",
|
|
" print(f\"unit_name: {input.quantities[0].units.name}\")\n",
|
|
" \t\n",
|
|
"#log Seeding \n",
|
|
" logs = asset.get_logs_of_type(neo.Log.Seeding)\n",
|
|
" for log in logs:\n",
|
|
" print(\"Seeding:\")\n",
|
|
" print(f\"name: {log.name}\")\n",
|
|
" formatted_date = datetime.fromisoformat(log.timestamp).strftime(\"%d.%m.%y %H:%M \") # Konvertiere in das gewünschte Format\n",
|
|
" print(f\"timestamp: {formatted_date}\")\n",
|
|
" print(f\"equipment: {log.equipment[0].name}\")\n",
|
|
" print(f\"plant loc: {log.location[0].name}\")\n",
|
|
"#quantity\n",
|
|
" input=neo.Log.Seeding.from_id(log.id)\n",
|
|
" print(f\"quant_type: {input.quantities[0].type}\")\n",
|
|
" print(f\"quant_measure: {input.quantities[0].measure}\")\n",
|
|
" print(f\"quant_value: {input.quantities[0].value}\")\n",
|
|
" print(f\"quant_inventory_adjustment: {input.quantities[0].inventory_adjustment}\")\n",
|
|
" \t\n",
|
|
"\n",
|
|
"#log Input \n",
|
|
" logs = asset.get_logs_of_type(neo.Log.Input)\n",
|
|
" for log in logs:\n",
|
|
" print(\"Input:\")\n",
|
|
" print(f\"name: {log.name}\")\n",
|
|
" #print(f\"name: {log.id}\")\n",
|
|
" formatted_date = datetime.fromisoformat(log.timestamp).strftime(\"%d.%m.%y %H:%M \") # Konvertiere in das gewünschte Format\n",
|
|
" print(f\"timestamp: {formatted_date}\")\n",
|
|
" print(f\"equipment: {log.equipment[0].name}\")\n",
|
|
"\n",
|
|
"#quantity\n",
|
|
" input=neo.Log.Input.from_id(log.id)\n",
|
|
" print(f\"quant_type: {input.quantities[0].type}\")\n",
|
|
" print(f\"quant_measure: {input.quantities[0].measure}\")\n",
|
|
" print(f\"quant_value: {input.quantities[0].value}\")\n",
|
|
" print(f\"quant_inventory_adjustment: {input.quantities[0].inventory_adjustment}\")\n",
|
|
"\n",
|
|
"#log Medical\n",
|
|
" logs = asset.get_logs_of_type(neo.Log.Medical)\n",
|
|
" for log in logs:\n",
|
|
" print(\"Medical:\")\n",
|
|
" print(f\"name: {log.name}\")\n",
|
|
" formatted_date = datetime.fromisoformat(log.timestamp).strftime(\"%d.%m.%y %H:%M \") # Konvertiere in das gewünschte Format\n",
|
|
" print(f\"timestamp: {formatted_date}\")\n",
|
|
" print(f\"equipment: {log.equipment[0].name}\")\n",
|
|
"\n",
|
|
"#quantity\n",
|
|
" input=neo.Log.Medical.from_id(log.id)\n",
|
|
" print(f\"quant_type: {input.quantities[0].type}\")\n",
|
|
" print(f\"quant_measure: {input.quantities[0].measure}\")\n",
|
|
" print(f\"quant_value: {input.quantities[0].value}\")\n",
|
|
" print(f\"quant_inventory_adjustment: {input.quantities[0].inventory_adjustment}\")\n",
|
|
"\n",
|
|
"\n",
|
|
"#log Harvest \n",
|
|
" logs = asset.get_logs_of_type(neo.Log.Harvest)\n",
|
|
" for log in logs:\n",
|
|
" print(\"Harvest:\")\n",
|
|
" print(f\"name: {log.name}\")\n",
|
|
" formatted_date = datetime.fromisoformat(log.timestamp).strftime(\"%d.%m.%y %H:%M \") # Konvertiere in das gewünschte Format\n",
|
|
" print(f\"timestamp: {formatted_date}\")\n",
|
|
" print(f\"equipment: {log.equipment[0].name}\")\n",
|
|
"\n",
|
|
"#quantity\n",
|
|
" input=neo.Log.Harvest.from_id(log.id)\n",
|
|
" print(f\"quant_type: {input.quantities[0].type}\")\n",
|
|
" print(f\"quant_measure: {input.quantities[0].measure}\")\n",
|
|
" print(f\"quant_value: {input.quantities[0].value}\")\n",
|
|
" print(f\"quant_inventory_adjustment: {input.quantities[0].inventory_adjustment}\")\n",
|
|
"\n",
|
|
"#log Sale \n",
|
|
" logs = asset.get_logs_of_type(neo.Log.Sale)\n",
|
|
" for log in logs:\n",
|
|
" print(\"Sale:\")\n",
|
|
" print(f\"name: {log.name}\")\n",
|
|
" formatted_date = datetime.fromisoformat(log.timestamp).strftime(\"%d.%m.%y %H:%M \") # Konvertiere in das gewünschte Format\n",
|
|
" print(f\"timestamp: {formatted_date}\")\n",
|
|
"\n",
|
|
"#quantity\n",
|
|
" input=neo.Log.Sale.from_id(log.id)\n",
|
|
" print(f\"quant_type: {input.quantities[0].type}\")\n",
|
|
" print(f\"quant_measure: {input.quantities[0].measure}\")\n",
|
|
" print(f\"quant_value: {input.quantities[0].value}\")\n",
|
|
" print(f\"quant_inventory_adjustment: {input.quantities[0].inventory_adjustment}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"id": "649e4d8e-c3a9-4d5f-9bdf-9427f416fca9",
|
|
"metadata": {
|
|
"collapsed": true,
|
|
"jupyter": {
|
|
"outputs_hidden": true,
|
|
"source_hidden": true
|
|
},
|
|
"scrolled": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"PlantName: W-Raps Helmacker Plant 24/25\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" 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 "
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"#Alle logs zu plant mit quantities untereinander 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(\"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 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 \"None\"\n",
|
|
"\n",
|
|
" # Menge und weitere Details (falls vorhanden)\n",
|
|
" quantities = getattr(log, 'quantities', [])\n",
|
|
" for quantity in quantities:\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\": quantity.type,\n",
|
|
" \"QuantMeasure\": quantity.measure,\n",
|
|
" \"QuantValue\": quantity.value,\n",
|
|
" \"QuantInventoryAdjustment\": quantity.inventory_adjustment\n",
|
|
" })\n",
|
|
" # Falls keine Mengeninformationen vorhanden sind\n",
|
|
" if not quantities:\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\": \"None\",\n",
|
|
" \"QuantMeasure\": \"None\",\n",
|
|
" \"QuantValue\": \"None\",\n",
|
|
" \"QuantInventoryAdjustment\": \"None\"\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",
|
|
"execution_count": null,
|
|
"id": "ef3c14f0-b158-4be9-ae7d-fd3b81aeb4ff",
|
|
"metadata": {
|
|
"jupyter": {
|
|
"source_hidden": true
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"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(\"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 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",
|
|
"execution_count": null,
|
|
"id": "c1b73098-08f3-43fd-9bf0-d3d628b15e0d",
|
|
"metadata": {
|
|
"jupyter": {
|
|
"source_hidden": true
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"#Alle logs zu plant mit quantities nebeneinander in Excel exportiert\n",
|
|
"import neofarm.lib as neo\n",
|
|
"import pandas as pd\n",
|
|
"from datetime import datetime\n",
|
|
"import os\n",
|
|
"from openpyxl import load_workbook\n",
|
|
"from openpyxl.utils import get_column_letter\n",
|
|
"from openpyxl.styles import Alignment\n",
|
|
"\n",
|
|
"# Spezifizierter Pfad zum Downloads-Ordner (Windows-Standardpfad)\n",
|
|
"downloads_folder = os.path.join(os.path.expanduser(\"~\"), \"Downloads\")\n",
|
|
"file_path = os.path.join(downloads_folder, \"PlantLogs.xlsx\")\n",
|
|
"\n",
|
|
"\n",
|
|
"# Definiere den Pflanzennamen\n",
|
|
"PlantName = \"W-Raps Helmacker Plant 24/25\"\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",
|
|
" 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",
|
|
" # Entferne die Zeitzone vom Timestamp\n",
|
|
" timestamp = datetime.fromisoformat(log.timestamp).replace(tzinfo=None) # Sicherstellen, dass es timezone-unaware ist\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",
|
|
"\n",
|
|
" quantities = getattr(log, 'quantities', [])\n",
|
|
" quant_type_2 = quant_measure_2 = quant_value_2 = quant_inventory_adjustment_2 = \"\"\n",
|
|
"\n",
|
|
" if len(quantities) > 0:\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",
|
|
" quant_type_1 = quant_measure_1 = quant_value_1 = quant_inventory_adjustment_1 = \"\"\n",
|
|
" \n",
|
|
" if len(quantities) > 1:\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",
|
|
" data.append({\n",
|
|
" \"PlantName\": PlantName,\n",
|
|
" \"LogType\": log_type,\n",
|
|
" \"Name\": log.name,\n",
|
|
" \"Timestamp\": timestamp, # Direkte Speicherung des datetime-Objekts\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\n",
|
|
" df = pd.DataFrame(data)\n",
|
|
" \n",
|
|
" # Prüfe, ob die Datei bereits existiert\n",
|
|
" if os.path.exists(file_path):\n",
|
|
" overwrite = input(f\"Die Datei '{file_path}' existiert bereits. Möchten Sie sie überschreiben? (ja/nein): \")\n",
|
|
" if overwrite.lower() != 'ja':\n",
|
|
" print(\"Der Export wurde abgebrochen.\")\n",
|
|
" else:\n",
|
|
" df.to_excel(file_path, index=False)\n",
|
|
" else:\n",
|
|
" df.to_excel(file_path, index=False)\n",
|
|
"\n",
|
|
" # Lade die Arbeitsmappe, um Formatierungen hinzuzufügen\n",
|
|
" workbook = load_workbook(file_path)\n",
|
|
" worksheet = workbook.active\n",
|
|
"\n",
|
|
" # Füge Autofilter hinzu\n",
|
|
" worksheet.auto_filter.ref = worksheet.dimensions\n",
|
|
"\n",
|
|
" # Passen Sie die Spaltenbreite an und aktivieren Sie den Zeilenumbruch\n",
|
|
" for col in worksheet.columns:\n",
|
|
" max_length = 0\n",
|
|
" col_letter = get_column_letter(col[0].column)\n",
|
|
" for cell in col:\n",
|
|
" # Setze den Zeilenumbruch\n",
|
|
" cell.alignment = Alignment(wrap_text=True) # Zeilenumbruch aktivieren\n",
|
|
" \n",
|
|
" # Formatieren der Timestamp-Spalte als Datum\n",
|
|
" if col_letter == 'D': # Angenommen, die Timestamp-Spalte ist Spalte D\n",
|
|
" cell.number_format = 'DD.MM.YYYY' # Setze das Datumsformat\n",
|
|
" \n",
|
|
" max_length = max(max_length, len(str(cell.value)) if cell.value else 0)\n",
|
|
" adjusted_width = (max_length + 2) * 1.0 # Extra Puffer hinzufügen\n",
|
|
" worksheet.column_dimensions[col_letter].width = adjusted_width\n",
|
|
"\n",
|
|
" # Speichern Sie die Datei\n",
|
|
" workbook.save(file_path)\n",
|
|
" print(f\"Die Datei wurde erfolgreich nach '{file_path}' exportiert, mit Autofilter, Zeilenumbruch und angepasster Spaltenbreite.\")\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "ebcc62d0-4334-4c61-aaa2-14cd96e8a6f0",
|
|
"metadata": {
|
|
"jupyter": {
|
|
"source_hidden": true
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"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",
|
|
"execution_count": null,
|
|
"id": "de57b155-d635-4367-9a56-90d033c3a922",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.12.5"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|