in KPIApplication possible to (1) add an operation, e.g. applying fertilizer and (2) add a cropfield characteristic containing cropyield.
This commit is contained in:
@@ -12,9 +12,12 @@ namespace FarmmapsApiSamples
|
||||
public const string SHAPE_ITEMTYPE = "vnd.farmmaps.itemtype.shape";
|
||||
public const string GEOJSON_ITEMTYPE = "vnd.farmmaps.itemtype.geojson";
|
||||
public const string BLIGHT_ITEMTYPE = "vnd.farmmaps.itemtype.blight";
|
||||
public const string CROPREC_ITEMTYPE = "vnd.farmmaps.itemtype.crprec.operation";
|
||||
public const string CROPREC_ITEMTYPE = "vnd.farmmaps.itemtype.crprec";
|
||||
public const string CROPOP_ITEMTYPE = "vnd.farmmaps.itemtype.crprec.operation";
|
||||
public const string CROPCHAR_ITEMTYPE = "vnd.farmmaps.itemtype.edicrop.characteristic";
|
||||
public const string CROPSCHEME_ITEMTYPE = "vnd.farmmaps.itemtype.croppingscheme"; // deze toegevoegd, misschien is het type van de KPI task wel een croppingscheme
|
||||
public const string KPI_ITEM = "vnd.farmmaps.itemtype.kpi.data";
|
||||
//public const string KPI_ITEM = "vnd.farmmaps.itemtype.kpi.data"; //PO20231004: originally with .data
|
||||
public const string KPI_ITEM = "vnd.farmmaps.itemtype.kpi.data.container"; //PO20231004: originally without .container
|
||||
|
||||
public const string VRANBS_TASK = "vnd.farmmaps.task.vranbs";
|
||||
public const string VRAHERBICIDE_TASK = "vnd.farmmaps.task.vraherbicide";
|
||||
@@ -26,6 +29,7 @@ namespace FarmmapsApiSamples
|
||||
public const string TASKMAP_TASK = "vnd.farmmaps.task.taskmap";
|
||||
public const string WORKFLOW_TASK = "vnd.farmmaps.task.workflow";
|
||||
public const string BOFEK_TASK = "vnd.farmmaps.task.bofek";
|
||||
public const string CROPREC_TASK = "vnd.farmmaps.task.crprec";
|
||||
public const string SHADOW_TASK = "vnd.farmmaps.task.shadow";
|
||||
public const string AHN_TASK = "vnd.farmmaps.task.ahn";
|
||||
public const string WATBAL_TASK = "vnd.farmmaps.task.watbal";
|
||||
|
@@ -37,6 +37,35 @@ namespace FarmmapsApi.Services
|
||||
return await _farmmapsApiService.CreateItemAsync(cropfieldItemRequest);
|
||||
}
|
||||
|
||||
public async Task<Item> CreateOperationItemAsync(string cropRecordingItemCode, string data = "{}")
|
||||
{
|
||||
JObject jdata = JObject.Parse(data);
|
||||
string name = string.Format($"CrpRec Operation, {jdata.GetValue("name")}");
|
||||
|
||||
ItemRequest operationItemRequest = new ItemRequest()
|
||||
{
|
||||
ParentCode = cropRecordingItemCode,
|
||||
ItemType = CROPOP_ITEMTYPE,
|
||||
Name = name,
|
||||
Data = jdata,
|
||||
};
|
||||
|
||||
return await _farmmapsApiService.CreateItemAsync(operationItemRequest);
|
||||
}
|
||||
public async Task<Item> CreateCropfieldCharacteristicItemAsync(string cropfieldItemCode, string data = "{}")
|
||||
{
|
||||
string name = "Cropfield characteristic";
|
||||
|
||||
ItemRequest cropfieldCharactericsticItemRequest = new ItemRequest()
|
||||
{
|
||||
ParentCode = cropfieldItemCode,
|
||||
ItemType = CROPCHAR_ITEMTYPE,
|
||||
Name = name,
|
||||
Data = JObject.Parse(data),
|
||||
};
|
||||
|
||||
return await _farmmapsApiService.CreateItemAsync(cropfieldCharactericsticItemRequest);
|
||||
}
|
||||
public async Task<Item> UploadDataAsync(UserRoot root, string itemType, string filePath, string itemName, string geoJsonString = null)
|
||||
{
|
||||
var startUpload = DateTime.UtcNow.AddSeconds(-3);
|
||||
@@ -247,6 +276,39 @@ namespace FarmmapsApi.Services
|
||||
return dataItem;
|
||||
}
|
||||
|
||||
public async Task<Item> RunCropRecordingTask(Item cropfieldItem)
|
||||
{
|
||||
var cropRecordingRequest = new TaskRequest { TaskType = CROPREC_TASK };
|
||||
|
||||
string itemTaskCode = await _farmmapsApiService.QueueTaskAsync(cropfieldItem.Code, cropRecordingRequest);
|
||||
|
||||
await PollTask(TimeSpan.FromSeconds(5), async (tokenSource) => {
|
||||
var itemTaskStatus = await _farmmapsApiService.GetTaskStatusAsync(cropfieldItem.Code, itemTaskCode);
|
||||
_logger.LogInformation($"Waiting on RunCropRecordingTask; status: {itemTaskStatus.State}");
|
||||
if (itemTaskStatus.IsFinished)
|
||||
tokenSource.Cancel();
|
||||
});
|
||||
|
||||
var itemTask = await _farmmapsApiService.GetTaskStatusAsync(cropfieldItem.Code, itemTaskCode);
|
||||
if (itemTask.State == ItemTaskState.Error)
|
||||
{
|
||||
_logger.LogError($"Something went wrong with task execution: {itemTask.Message}");
|
||||
return null;
|
||||
}
|
||||
|
||||
//the CropRecording data is a child of the cropfield
|
||||
var itemName = "Crprec";
|
||||
var cropRecordingItem = await FindChildItemAsync(cropfieldItem.Code,
|
||||
CROPREC_ITEMTYPE, itemName);
|
||||
if (cropRecordingItem == null)
|
||||
{
|
||||
_logger.LogError("Could not find the CropRecording data as a child item under the cropfield");
|
||||
return null;
|
||||
}
|
||||
|
||||
return cropRecordingItem;
|
||||
}
|
||||
|
||||
public async Task<Item> RunBofekTask(Item cropfieldItem) {
|
||||
var taskmapRequest = new TaskRequest { TaskType = BOFEK_TASK };
|
||||
|
||||
@@ -279,11 +341,12 @@ namespace FarmmapsApi.Services
|
||||
|
||||
public async Task<List<Item>> GetKpiItemsForCropField(Item cropfieldItem) // dit is dus nieuw om de KPI task te runnen
|
||||
{
|
||||
var taskmapRequest = new TaskRequest { TaskType = KPI_TASK }; //hier KPI request van maken
|
||||
taskmapRequest.attributes["processAggregateKpi"] = "false"; // zo de properties meegeven?, moet dit niet bij de KPIinput?
|
||||
taskmapRequest.attributes["year"] = "2022";
|
||||
var kpiRequest = new TaskRequest { TaskType = KPI_TASK };
|
||||
kpiRequest.attributes["processAggregateKpi"] = "false";
|
||||
int year = cropfieldItem.DataDate.Value.Year;
|
||||
kpiRequest.attributes["year"] = year.ToString();
|
||||
|
||||
string itemTaskCode = await _farmmapsApiService.QueueTaskAsync(cropfieldItem.Code, taskmapRequest);
|
||||
string itemTaskCode = await _farmmapsApiService.QueueTaskAsync(cropfieldItem.Code, kpiRequest);
|
||||
|
||||
await PollTask(TimeSpan.FromSeconds(5), async (tokenSource) => {
|
||||
var itemTaskStatus = await _farmmapsApiService.GetTaskStatusAsync(cropfieldItem.Code, itemTaskCode);
|
||||
@@ -299,10 +362,13 @@ namespace FarmmapsApi.Services
|
||||
return null;
|
||||
}
|
||||
await Task.Delay(60000); //wacht hier een minuut tot de KPIs berekend zijn
|
||||
|
||||
//PO20230627 Je zou hier ook om de 10 sec eens kunnen kijken of we al zo ver zijn? Iets in trant van while KPI_ITEM is null?
|
||||
//hier nog definieren waar in de hierarchie een KPI item is?
|
||||
var allChildren = await _farmmapsApiService.GetItemChildrenAsync(cropfieldItem.Code);
|
||||
var kpiItems = await _farmmapsApiService.GetItemChildrenAsync(cropfieldItem.Code, KPI_ITEM);
|
||||
|
||||
return await _farmmapsApiService.GetItemChildrenAsync(cropfieldItem.Code, KPI_ITEM);
|
||||
return kpiItems;
|
||||
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user