using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; 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 WebResponseContent TaskCompleted(int taskNum) { try { Dt_Task task = Repository.QueryFirst(x => x.TaskNum == taskNum); if (task == null) { return WebResponseContent.Instance.Error($"未找到任务信息"); } if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup) { return InboundTaskCompleted(taskNum); } else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) { return OutboundTaskCompleted(taskNum); } else if (task.TaskType.GetTaskTypeGroup() != TaskTypeGroup.RelocationGroup) { return RelocationTaskCompleted(task); } else { return WebResponseContent.Instance.Error($"未找到该类型任务,任务类型:{task.TaskType}"); } } catch (Exception ex) { return 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); } } } }