public void UpdateTask(ApiTask task) { repository.UpdateTask(mapper.Map <DtoTask>(task), task.BindedOpers); UpdateDtoEntitiesList(operations); UpdateTaskList(); SendServiceInfo($"Changed task {task.Id}"); }
} //init vm private async Task Save() { if (!IsValid || !IsDirty) { return; } if (!await Shell.ShowWarningAffirmativeDialogAsync(Id > 0 ? "Save these task settings?" : "Create this task?")) { return; } var opersToSave = BindedOpers.ToList(); foreach (var oper in opersToSave) { oper.Number = opersToSave.IndexOf(oper) + 1; } var editedTask = new ApiTask(); mapper.Map(this, editedTask); editedTask.BindedOpers = opersToSave.Select(oper => mapper.Map <ApiOperation>(oper)).ToArray(); cachedService.CreateOrUpdateTask(editedTask); Close(); cachedService.RefreshData(); } //saving to base
public ContentResult UpdateTask(int id, [FromBody] ApiTask task) { try { if (id != task.Id) { return new ContentResult { Content = "Request id does not match task id", StatusCode = StatusCodes.Status400BadRequest } } ; var dtoTask = mapper.Map <DtoTask>(task); dtoTask.UpdateDateTime = DateTime.Now; logic.UpdateTask(dtoTask, task.BindedOpers); return(new ContentResult { StatusCode = StatusCodes.Status200OK }); } catch { return(GetInternalErrorResult()); } }
private async Task Save() { if (!await CheckCanSave()) { return; } var opersToSave = BindedOpers.ToList(); foreach (var oper in opersToSave) { oper.Number = opersToSave.IndexOf(oper) + 1; } var editedTask = new ApiTask(); mapper.Map(this, editedTask); editedTask.DependsOn = taskDependencies.Count == 0 ? null : taskDependencies.Items.Select(dep => mapper.Map <ApiTaskDependence>(dep)) .ToArray(); editedTask.BindedOpers = opersToSave.Select(oper => mapper.Map <ApiOperation>(oper)).ToArray(); cachedService.CreateOrUpdateTask(editedTask); Close(); cachedService.RefreshData(); } //saving to base
/// <summary> /// 拦截方法的调用 /// </summary> /// <param name="target">接口的实例</param> /// <param name="method">接口的方法</param> /// <param name="parameters">接口的参数集合</param> /// <returns></returns> public virtual object Intercept(object target, MethodInfo method, object[] parameters) { var apiActionDescripter = this.GetApiActionDescriptor(method, parameters); var apiTask = ApiTask.CreateInstance(this.ApiConfig, apiActionDescripter); return(apiTask); }
private static ApiTaskDTO ApiTaskToDTO(ApiTask apiTask) => new ApiTaskDTO { Id = apiTask.Id, TaskId = apiTask.TaskId, Name = apiTask.Name, Status = apiTask.Status };
public long?CreateOrUpdateTask(ApiTask task) { if (task.Id == 0) { return(client.Post("tasks/", task)); } client.Put($"tasks/{task.Id}", task); return(task.Id); }
public int CreateTask(ApiTask task) { var newTaskId = repository.CreateTask(mapper.Map <DtoTask>(task), task.BindedOpers); UpdateDtoEntitiesList(operations); UpdateTaskList(); SendServiceInfo($"Created task {newTaskId}"); return(newTaskId); }
public NewTaskViewModel(TaskQueueItemsService taskQueueItemsService, int maxOrder, Logger logger) { Logger = logger; Task = new ApiTask(); MixerVolume = GetMixerVolume(); Volume = (decimal)0.2; MaxOrder = maxOrder; TaskQueueItemsService = taskQueueItemsService; UpdateRecipes(); UpdateCustomers(); }
/// <summary> /// 拦截方法的调用 /// </summary> /// <param name="target">接口的实例</param> /// <param name="method">接口的方法</param> /// <param name="parameters">接口的参数集合</param> /// <returns></returns> public virtual object Intercept(object target, MethodInfo method, object[] parameters) { var apiActionDescripter = this.GetApiActionDescriptor(method, parameters); var apiTask = ApiTask.CreateInstance(this.ApiConfig, apiActionDescripter); if (apiActionDescripter.Return.IsITaskDefinition == true) { return(apiTask); } else { return(apiTask.InvokeAsync()); } }
private ApiTask <T> ExecuteRequestAndMap <T>(IRestRequest request) { var tokenSource = new CancellationTokenSource(); var cancellationToken = tokenSource.Token; var tcs = new TaskCompletionSource <IRestResponse>(); _restClient.ExecuteAsync(request, tcs.SetResult); var requestAndMapTask = tcs.Task.ContinueWith((previousTask) => { cancellationToken.ThrowIfCancellationRequested(); return(MapToEntity <T>(previousTask.Result)); }, cancellationToken, TaskContinuationOptions.LongRunning, TaskScheduler.Default); return(ApiTask <T> .Create(requestAndMapTask, tokenSource)); }
public ContentResult CreateTask([FromBody] ApiTask newTask) { try { var dtoTask = mapper.Map <DtoTask>(newTask); dtoTask.UpdateDateTime = DateTime.Now; var id = logic.CreateTask(dtoTask, newTask.BindedOpers); return(GetSuccessfulResult(id.ToString())); } catch { return(GetInternalErrorResult()); } }
public async Task <ActionResult <ApiTaskDTO> > CreateApiTask(ApiTaskDTO apiTaskDTO) { var apiTask = new ApiTask { TaskId = apiTaskDTO.TaskId, Name = apiTaskDTO.Name, SubmittedAt = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds() }; await _tasksManager.StoreApiTaskAsync(apiTask); return(CreatedAtAction( nameof(CreateApiTask), new { id = apiTask.Id }, ApiTaskToDTO(apiTask))); }
/// <summary> /// 生成ApiReturnDescriptor /// </summary> /// <param name="method">方法信息</param> /// <returns></returns> private static ApiReturnDescriptor GetReturnDescriptor(this MethodInfo method) { var returnAttribute = method.FindDeclaringAttribute <IApiReturnAttribute>(true); if (returnAttribute == null) { returnAttribute = new AutoReturnAttribute(); } var dataType = method.ReturnType.GetGenericArguments().FirstOrDefault(); var descriptor = new ApiReturnDescriptor(); descriptor.Attribute = returnAttribute; descriptor.ReturnType = method.ReturnType; descriptor.DataType = dataType; descriptor.IsITaskDefinition = method.ReturnType.GetGenericTypeDefinition() == typeof(ITask <>); descriptor.ITaskCtor = ApiTask.GetITaskConstructor(dataType); return(descriptor); }
private Dictionary <ApiOpcParameter, string> GetValues(ApiTask task, ApiRecipe recipe, Dictionary <long, ApiRecipeMaterial> containers) { var result = new Dictionary <ApiOpcParameter, string>(); var isOk = true; var batchers = BatchersReader.ListBatchers(); foreach (var batcher in batchers) { foreach (var dosingSource in batcher.DosingSources) { containers.TryGetValue(dosingSource.Container.Id, out var recipeMaterial); if (recipeMaterial != null) { var materialSetParameter = dosingSource.DosingSourceOpcParameters.FirstOrDefault(x => x.Name == OpcHelper.GetTagName(OpcHelper.TagNames.MaterialSet)); if (materialSetParameter != null) { var volume = Math.Round(recipeMaterial.Volume * task.BatchVolume, 1); result.Add(materialSetParameter, volume.ToString(CultureInfo.InvariantCulture)); } else { isOk = false; Logger.Error($"У дозатора {batcher.Name} - источник дозирования {dosingSource.Name} отсутствует параметр - MaterialSet."); } var materialIdParameter = dosingSource.DosingSourceOpcParameters.FirstOrDefault(x => x.Name == OpcHelper.GetTagName(OpcHelper.TagNames.MaterialId)); if (materialIdParameter != null) { result.Add(materialIdParameter, recipeMaterial.Material.Id.ToString(CultureInfo.InvariantCulture)); } else { isOk = false; Logger.Error($"У дозатора {batcher.Name} - источник дозирования {dosingSource.Name} отсутствует параметр - MaterialId."); } var containerIdParameter = dosingSource.DosingSourceOpcParameters.FirstOrDefault(x => x.Name == OpcHelper.GetTagName(OpcHelper.TagNames.ContainerId)); if (containerIdParameter != null) { result.Add(containerIdParameter, dosingSource.Container.Id.ToString(CultureInfo.InvariantCulture)); } else { isOk = false; Logger.Error($"У дозатора {batcher.Name} - источник дозирования {dosingSource.Name} отсутствует параметр - ContainerId."); } } } } var batchesAmount = GetCommonParameter(OpcHelper.TagNames.BatchesAmount); if (batchesAmount != null) { result.Add(batchesAmount, task.BatchesAmount.ToString(CultureInfo.InvariantCulture)); } else { isOk = false; Logger.Error("Отсутствует параметр - BatchesAmount."); } var mixingTime = GetCommonParameter(OpcHelper.TagNames.MixingTime); if (mixingTime != null) { result.Add(mixingTime, recipe.MixingTime.ToString(CultureInfo.InvariantCulture)); } else { isOk = false; Logger.Error("Отсутствует параметр - MixingTime."); } var percentOpenGate = GetCommonParameter(OpcHelper.TagNames.PercentOpenGate); if (percentOpenGate != null) { result.Add(percentOpenGate, recipe.PercentOpenGate.ToString(CultureInfo.InvariantCulture)); } else { isOk = false; Logger.Error("Отсутствует параметр - PercentOpenGate."); } var timeFullUnload = GetCommonParameter(OpcHelper.TagNames.TimeFullUnload); if (timeFullUnload != null) { result.Add(timeFullUnload, recipe.TimeFullUnload.ToString(CultureInfo.InvariantCulture)); } else { isOk = false; Logger.Error("Отсутствует параметр - TimeFullUnload."); } var timePartialUnload = GetCommonParameter(OpcHelper.TagNames.TimePartialUnload); if (timePartialUnload != null) { result.Add(timePartialUnload, recipe.TimePartialUnload.ToString(CultureInfo.InvariantCulture)); } else { isOk = false; Logger.Error("Отсутствует параметр - TimePartialUnload."); } return(isOk ? result : null); }
private ApiTaskStatus calculateStatus(long epochSeconds, ApiTask apiTask) { return(epochSeconds - apiTask.SubmittedAt > 8 ? ApiTaskStatus.COMPLETED : ApiTaskStatus.CREATED); }
/// <summary> /// 返回的Task(Of T)的T类型描述 /// </summary> /// <param name="dataType">数据类型</param> public DataTypeDescriptor(Type dataType) { this.Type = dataType; this.ITaskConstructor = ApiTask.GetITaskConstructor(dataType); this.IsHttpResponseWrapper = dataType.IsInheritFrom <HttpResponseWrapper>(); }
public int CreateTaskByTemplate(ApiTask newTask) { throw new NotImplementedException(); }
public Task StoreApiTaskAsync(ApiTask apiTask) { apiTask.Id = Interlocked.Increment(ref id); return(Task.Run(() => _backgroundTaskQueue.Enqueue(apiTask))); }