| 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<WebResponseContent> 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)); | 
|             } | 
|         } | 
|   | 
|         /// <summary> | 
|         /// 任务信息推送至WCS | 
|         /// </summary> | 
|         /// <returns></returns> | 
|         public WebResponseContent PushTasksToWCSSingle(int taskNum, string agvDescription = "", string agvtaskNum = "") | 
|         { | 
|             try | 
|             { | 
|                 Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum); | 
|                 if (task == null) | 
|                 { | 
|                     return WebResponseContent.Instance.Error($"错误,未找到该任务信息"); | 
|                 } | 
|   | 
|                 List<WMSTaskDTO> taskDTOs = new List<WMSTaskDTO> { _mapper.Map<WMSTaskDTO>(task) }; | 
|                 taskDTOs.ForEach(x => | 
|                 { | 
|                     x.AGVArea = agvDescription; | 
|                     x.AGVTaskNum = agvtaskNum; | 
|                 }); | 
|   | 
|                 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<WebResponseContent>(response) ?? WebResponseContent.Instance.Error("返回错误"); | 
|             } | 
|             catch (Exception ex) | 
|             { | 
|                 return WebResponseContent.Instance.Error(ex.Message); | 
|             } | 
|         } | 
|   | 
|         /// <summary> | 
|         /// 修改任务状态 | 
|         /// </summary> | 
|         /// <param name="task"></param> | 
|         /// <returns></returns> | 
|         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); | 
|             } | 
|         } | 
|         /// <summary> | 
|         /// 回调wcs手动完成任务 | 
|         /// </summary> | 
|         /// <param name="taskNum"></param> | 
|         /// <returns></returns> | 
|         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<WebResponseContent>(responseStr) ?? WebResponseContent.Instance.Error("未找到任务完成返回值"); | 
|                 return content; | 
|             } | 
|             catch (Exception ex) | 
|             { | 
|                 return WebResponseContent.Instance.Error(ex.Message); | 
|             } | 
|         } | 
|     } | 
| } |