|  |  |  | 
|---|
|  |  |  | using Newtonsoft.Json; | 
|---|
|  |  |  | using SqlSugar; | 
|---|
|  |  |  | using System.Diagnostics.CodeAnalysis; | 
|---|
|  |  |  | using System.Threading.Tasks; | 
|---|
|  |  |  | using WIDESEAWCS_Common.TaskEnum; | 
|---|
|  |  |  | using WIDESEAWCS_Core; | 
|---|
|  |  |  | using WIDESEAWCS_Core.BaseServices; | 
|---|
|  |  |  | 
|---|
|  |  |  | WebResponseContent content = new WebResponseContent(); | 
|---|
|  |  |  | try | 
|---|
|  |  |  | { | 
|---|
|  |  |  | #region 真实数据 | 
|---|
|  |  |  | #region 请求入库任务巷道 | 
|---|
|  |  |  | // TODO: 调用接口获取下一个地址 | 
|---|
|  |  |  | //// 创建请求对象 | 
|---|
|  |  |  | //RequestTaskDto request = new RequestTaskDto() | 
|---|
|  |  |  | //{ | 
|---|
|  |  |  | //    Position = sourceAddress, | 
|---|
|  |  |  | //    PalletCode = palletCode, | 
|---|
|  |  |  | //}; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //// 发送请求并等待响应 | 
|---|
|  |  |  | //var result = HttpHelper.PostAsync("http:127.0.0.1:8098/api/Task/RequestTaskAsync", request.ToJsonString()).Result; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //// 反序列化响应内容 | 
|---|
|  |  |  | //content = JsonConvert.DeserializeObject<WebResponseContent>(result); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //// 检查状态并返回 | 
|---|
|  |  |  | //if (!content.Status) | 
|---|
|  |  |  | //    return content; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //// 反序列化任务数据 | 
|---|
|  |  |  | //WMSTaskDTO task = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //// 处理任务并返回结果 | 
|---|
|  |  |  | //content = ReceiveWMSTask(new List<WMSTaskDTO> { task }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #endregion | 
|---|
|  |  |  |  | 
|---|
|  |  |  | WMSTaskDTO taskDTO = new WMSTaskDTO() | 
|---|
|  |  |  | // 创建请求对象 | 
|---|
|  |  |  | RequestTaskDto request = new RequestTaskDto() | 
|---|
|  |  |  | { | 
|---|
|  |  |  | TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")), | 
|---|
|  |  |  | Grade = 1, | 
|---|
|  |  |  | Position = sourceAddress, | 
|---|
|  |  |  | PalletCode = palletCode, | 
|---|
|  |  |  | RoadWay = "CHSC01", | 
|---|
|  |  |  | SourceAddress = sourceAddress, | 
|---|
|  |  |  | TargetAddress = "CHSC01", | 
|---|
|  |  |  | TaskState = (int)TaskInStatusEnum.InNew, | 
|---|
|  |  |  | Id = 0, | 
|---|
|  |  |  | TaskType = (int)TaskInboundTypeEnum.Inbound | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO }); | 
|---|
|  |  |  | // 发送请求并等待响应 | 
|---|
|  |  |  | var result = HttpHelper.PostAsync("http://127.0.0.1:5000/api/Task/RequestTaskAsync", request.ToJsonString()).Result; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 反序列化响应内容 | 
|---|
|  |  |  | content = JsonConvert.DeserializeObject<WebResponseContent>(result); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | WMSTaskDTO task = new WMSTaskDTO(); | 
|---|
|  |  |  | // 检查状态并返回 | 
|---|
|  |  |  | if (!content.Status) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | task = new WMSTaskDTO() | 
|---|
|  |  |  | { | 
|---|
|  |  |  | TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")), | 
|---|
|  |  |  | Grade = 1, | 
|---|
|  |  |  | PalletCode = palletCode, | 
|---|
|  |  |  | RoadWay = "CHSC01", | 
|---|
|  |  |  | SourceAddress = sourceAddress, | 
|---|
|  |  |  | TargetAddress = "1020", | 
|---|
|  |  |  | TaskState = (int)TaskOutStatusEnum.Line_OutExecuting, | 
|---|
|  |  |  | Id = 0, | 
|---|
|  |  |  | TaskType = (int)TaskOutboundTypeEnum.Outbound | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Dt_Task task1 = _mapper.Map<Dt_Task>(task); | 
|---|
|  |  |  | task1.CurrentAddress = task.SourceAddress; | 
|---|
|  |  |  | task1.NextAddress = "1020"; | 
|---|
|  |  |  | BaseDal.AddData(task1); | 
|---|
|  |  |  | return content.OK(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | // 反序列化任务数据 | 
|---|
|  |  |  | task = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString()); | 
|---|
|  |  |  | // 处理任务并返回结果 | 
|---|
|  |  |  | content = ReceiveWMSTask(new List<WMSTaskDTO> { task }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #endregion | 
|---|
|  |  |  | } | 
|---|
|  |  |  | catch (Exception ex) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (task.TaskState == (int)TaskInStatusEnum.Line_InFinish) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | //if (task.Roadway.Contains("CH")) | 
|---|
|  |  |  | //{ | 
|---|
|  |  |  | //    Random random = new Random(); | 
|---|
|  |  |  | //    task.CurrentAddress = task.NextAddress; | 
|---|
|  |  |  | //    task.NextAddress = $"{random.Next(1, 1).ToString().PadLeft(3, '0')}-{random.Next(0, 0).ToString().PadLeft(3, '0')}-{random.Next(1, 1).ToString().PadLeft(3, '0')}"; | 
|---|
|  |  |  | //    task.TargetAddress = task.NextAddress; | 
|---|
|  |  |  | //} | 
|---|
|  |  |  | //else | 
|---|
|  |  |  | //{ | 
|---|
|  |  |  | //    Random random = new Random(); | 
|---|
|  |  |  | //    task.CurrentAddress = task.NextAddress; | 
|---|
|  |  |  | //    task.NextAddress = "002-020-001"; | 
|---|
|  |  |  | //    task.TargetAddress = task.NextAddress; | 
|---|
|  |  |  | //} | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #region 真实数据 | 
|---|
|  |  |  | // TODO: 调用接口获取下一个地址 | 
|---|
|  |  |  | #region 入库调用接口获取货位地址 | 
|---|
|  |  |  | // TODO: 调用接口获取货位地址 | 
|---|
|  |  |  | // 创建请求对象 | 
|---|
|  |  |  | RequestTaskDto request = new RequestTaskDto() | 
|---|
|  |  |  | RequestTaskDto taskDto = new RequestTaskDto() | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Position = task.NextAddress, | 
|---|
|  |  |  | PalletCode = task.PalletCode, | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 发送请求并等待响应 | 
|---|
|  |  |  | var result = HttpHelper.PostAsync("http:127.0.0.1:8098/api/Task/RequestTaskAsync", request.ToJsonString()).Result; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var abc = HttpHelper.PostAsync("http://127.0.0.1:5000/api/Task/RequestLocationTaskAsync", taskDto.ToJsonString()).Result; | 
|---|
|  |  |  | if (abc == null) | 
|---|
|  |  |  | return content.Error(); | 
|---|
|  |  |  | // 反序列化响应内容 | 
|---|
|  |  |  | content = JsonConvert.DeserializeObject<WebResponseContent>(result); | 
|---|
|  |  |  | content = JsonConvert.DeserializeObject<WebResponseContent>(abc); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 检查状态并返回 | 
|---|
|  |  |  | if (!content.Status) | 
|---|
|  |  |  | 
|---|
|  |  |  | BaseDal.UpdateData(task); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, App.User.UserId > 0 ? $"人工手动将任务状态从【{oldState}】跳转到【{task.TaskState}】" : $"系统自动流程,任务状态从【{oldState}】转到【{task.TaskState}】"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #region  更新任务状态 | 
|---|
|  |  |  | object request = new | 
|---|
|  |  |  | { | 
|---|
|  |  |  | TaskNum = task.TaskNum, | 
|---|
|  |  |  | TaskState = task.TaskState | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | var result = HttpHelper.PostAsync("http://127.0.0.1:5000/api/Task/UpdateTaskStatus", request.ToJsonString()).Result; | 
|---|
|  |  |  | content = JsonConvert.DeserializeObject<WebResponseContent>(result); | 
|---|
|  |  |  | #endregion | 
|---|
|  |  |  |  | 
|---|
|  |  |  | content = WebResponseContent.Instance.OK(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | BaseDal.UpdateData(task); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"堆垛机出库完成"); | 
|---|
|  |  |  | //todo 同步到WMS | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //暂不考虑多个出库口 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"堆垛机入库完成"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #region WMS同步任务完成 | 
|---|
|  |  |  | var x = new { taskNum = taskNum }; | 
|---|
|  |  |  | var result = HttpHelper.GetAsync("http:127.0.0.1:8098/api/Task/CompleteTaskAsync", x.ToJsonString()).Result; | 
|---|
|  |  |  | content = JsonConvert.DeserializeObject<WebResponseContent>(result); | 
|---|
|  |  |  | #endregion | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | throw new Exception($"任务类型错误,未找到该任务类型,任务号:【{taskNum}】,任务类型:【{task.TaskType}】"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #region WMS同步任务完成 | 
|---|
|  |  |  | var keys = new Dictionary<string, object>() | 
|---|
|  |  |  | { | 
|---|
|  |  |  | {"taskNum", taskNum} | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | var result = HttpHelper.GetAsync($"http://127.0.0.1:5000/api/Task/CompleteTaskAsync", keys).Result; | 
|---|
|  |  |  | content = JsonConvert.DeserializeObject<WebResponseContent>(result); | 
|---|
|  |  |  | #endregion | 
|---|
|  |  |  | #region  更新任务状态 | 
|---|
|  |  |  | object request = new | 
|---|
|  |  |  | { | 
|---|
|  |  |  | TaskNum = task.TaskNum, | 
|---|
|  |  |  | TaskState = task.TaskState | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | result = HttpHelper.PostAsync("http://127.0.0.1:5000/api/Task/UpdateTaskStatus", request.ToJsonString()).Result; | 
|---|
|  |  |  | content = JsonConvert.DeserializeObject<WebResponseContent>(result); | 
|---|
|  |  |  | #endregion | 
|---|
|  |  |  | //content = WebResponseContent.Instance.OK(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | catch (Exception ex) | 
|---|