specify how many seconds to wait for the KPItask to be completed

This commit is contained in:
Pepijn van Oort 2023-11-15 16:49:46 +01:00
parent aa18393102
commit 3f66676914
2 changed files with 10 additions and 6 deletions

View File

@ -365,12 +365,13 @@ namespace FarmmapsApi.Services
return bofekItem; return bofekItem;
} }
public async Task<List<Item>> GetKpiItemsForCropField(Item cropfieldItem) public async Task<List<Item>> GetKpiItemsForCropField(Item cropfieldItem, int waitsecs = 6)
{ {
TaskRequest kpiRequest = new TaskRequest { TaskType = KPI_TASK }; TaskRequest kpiRequest = new TaskRequest { TaskType = KPI_TASK };
kpiRequest.attributes["processAggregateKpi"] = "false"; kpiRequest.attributes["processAggregateKpi"] = "false";
int year = cropfieldItem.DataDate.Value.Year; int year = cropfieldItem.DataDate.Value.Year;
kpiRequest.attributes["year"] = year.ToString(); kpiRequest.attributes["year"] = year.ToString();
int ms = waitsecs * 1000;
string itemTaskCode = await _farmmapsApiService.QueueTaskAsync(cropfieldItem.Code, kpiRequest); string itemTaskCode = await _farmmapsApiService.QueueTaskAsync(cropfieldItem.Code, kpiRequest);
@ -387,7 +388,9 @@ namespace FarmmapsApi.Services
_logger.LogError($"Something went wrong with task execution: {itemTask.Message}"); _logger.LogError($"Something went wrong with task execution: {itemTask.Message}");
return null; return null;
} }
await Task.Delay(6000); // wait 6000 secs for task to be completed _logger.LogInformation($"Taking {waitsecs} seconds to look up all KPI items. The longer we wait the more KPI's we get ..." +
$"");
await Task.Delay(ms); // wait 60000ms = 60 secs for task to be completed
//After the task is completed we have 1 kpiContainerItem with a code and with no data //After the task is completed we have 1 kpiContainerItem with a code and with no data
//Because the data are in the children of this kpiContainerItem. The container will have a list of children each with an "id" aand data, //Because the data are in the children of this kpiContainerItem. The container will have a list of children each with an "id" aand data,

View File

@ -85,6 +85,7 @@ namespace FarmmapsKPI
TimeSpan tsTotalEstimated; TimeSpan tsTotalEstimated;
for (int i = 0; i < fieldsInputs.Count; i++) for (int i = 0; i < fieldsInputs.Count; i++)
//for (int i = 7; i < 8; i++)
{ {
watch.Restart(); watch.Restart();
input = fieldsInputs[i]; input = fieldsInputs[i];
@ -262,7 +263,7 @@ namespace FarmmapsKPI
if (data.area != area_ha) if (data.area != area_ha)
{ {
double differencePercent = 100.0*(Convert.ToDouble(area_ha) / Convert.ToDouble(data.area) - 1.0); double differencePercent = 100.0*(Convert.ToDouble(area_ha) / Convert.ToDouble(data.area) - 1.0);
_logger.LogWarning($"cropfield has area {area_ha}, but operation has area {data.area}" + _logger.LogWarning($"cropfield has area {area_ha}, but in your KPIinput.json or file like that, you have an operation with area {data.area}" +
$" Difference is {area_ha} / {data.area} - 100% = {differencePercent}%." + $" Difference is {area_ha} / {data.area} - 100% = {differencePercent}%." +
$" Is that correct? Example if operation was applied in part of field, e.g. in case of variable rate (VRA) application." + $" Is that correct? Example if operation was applied in part of field, e.g. in case of variable rate (VRA) application." +
$" Or did you accidentally fill in area in the KPIinput json? To use cropfield area, omit field 'area' from json" + $" Or did you accidentally fill in area in the KPIinput json? To use cropfield area, omit field 'area' from json" +
@ -311,7 +312,7 @@ namespace FarmmapsKPI
//Now get the KPIs for this cropfield, mounted with operations & cropyield //Now get the KPIs for this cropfield, mounted with operations & cropyield
// Get KPI data for saving it in a file, here the generalsedrvice is called to get the KPI data // Get KPI data for saving it in a file, here the generalsedrvice is called to get the KPI data
_logger.LogInformation($"GetKpiItemsForCropField('{cropfieldItem.Code}')"); _logger.LogInformation($"GetKpiItemsForCropField('{cropfieldItem.Code}')");
KPIItems = await _generalService.GetKpiItemsForCropField(cropfieldItem); KPIItems = await _generalService.GetKpiItemsForCropField(cropfieldItem, 60);
_logger.LogInformation($"Found {KPIItems.Count} KPI items"); _logger.LogInformation($"Found {KPIItems.Count} KPI items");
//Download KPI's into a json output file for this specific cropfield (with unique cropfieldItem.Code) //Download KPI's into a json output file for this specific cropfield (with unique cropfieldItem.Code)