using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEA_Common.APIEnum; using WIDESEA_Common.CommonEnum; using WIDESEA_Common.LocationEnum; using WIDESEA_Common.OtherEnum; using WIDESEA_Common.StockEnum; using WIDESEA_Common.TaskEnum; using WIDESEA_Core; using WIDESEA_Core.Helper; using WIDESEA_DTO.Task; using WIDESEA_Model.Models; namespace WIDESEA_TaskInfoService { public partial class TaskService { public async Task TaskCompleted(int taskNum) { try { Dt_Task task = await Repository.QueryFirstAsync(x => x.TaskNum == taskNum); if (task == null) { return await Task.FromResult(WebResponseContent.Instance.Error($"未找到任务信息")); } if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup) { return await Task.FromResult(InboundTaskCompleted(taskNum)); } else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) { return await Task.FromResult(OutboundTaskCompleted(taskNum)); } else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup) { return await Task.FromResult(RelocationTaskCompleted(task)); } else { return await Task.FromResult(WebResponseContent.Instance.Error($"未找到该类型任务,任务类型:{task.TaskType}")); } } catch (Exception ex) { return await Task.FromResult(WebResponseContent.Instance.Error(ex.Message)); } } /// /// 任务信息推送至WCS /// /// public WebResponseContent PushTasksToWCSSingle(int taskNum, string agvDescription = "") { try { Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum); if (task == null) { return WebResponseContent.Instance.Error($"错误,未找到该任务信息"); } List taskDTOs = new List { _mapper.Map(task) }; taskDTOs.ForEach(x => { x.AGVArea = agvDescription; }); string url = AppSettings.Get("WCS"); if (string.IsNullOrEmpty(url)) { throw new Exception($"未找到WCSAApi地址,请检查配置文件"); } string response = HttpHelper.Post($"{url}/api/Task/ReceiveTask", taskDTOs.Serialize()); return JsonConvert.DeserializeObject(response) ?? WebResponseContent.Instance.Error("返回错误"); } catch (Exception ex) { return WebResponseContent.Instance.Error(ex.Message); } } /// /// 修改任务状态 /// /// /// public WebResponseContent UpdateTaskInfo(WCSTaskDTO task) { try { Dt_Task wmsTask = BaseDal.QueryFirst(x=>x.TaskNum == task.TaskNum); if (wmsTask != null) { wmsTask.TaskStatus = task.TaskState; wmsTask.CurrentAddress = task.CurrentAddress; wmsTask.NextAddress = task.NextAddress; wmsTask.Dispatchertime = task.Dispatchertime; BaseDal.UpdateData(wmsTask); } return WebResponseContent.Instance.OK(); } catch(Exception ex) { return WebResponseContent.Instance.Error(ex.Message); } } /// /// 回调wcs手动完成任务 /// /// /// public WebResponseContent FeedBackWCSTaskCompleted(int taskNum) { try { Dt_ApiInfo? url = _apiInfoRepository.QueryData(x => x.ApiCode == APIEnum.FeedBackWCSTaskCompleted.ToString()).First(); string? apiAddress = url.ApiAddress; if (string.IsNullOrEmpty(apiAddress)) { return WebResponseContent.Instance.Error($"{taskNum},未找到WCS任务完成接口,请检查接口配置"); } string responseStr = HttpHelper.Get(apiAddress + "?taskNum=" + taskNum); WebResponseContent content = JsonConvert.DeserializeObject(responseStr) ?? WebResponseContent.Instance.Error("未找到任务完成返回值"); return content; } catch (Exception ex) { return WebResponseContent.Instance.Error(ex.Message); } } } }