wanshenmean
2024-11-09 ad18b0c17b5b1f715c33cb2a2b39589c10434a00
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -22,6 +22,7 @@
using Newtonsoft.Json;
using SqlSugar;
using System.Diagnostics.CodeAnalysis;
using System.Threading.Tasks;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.BaseServices;
@@ -131,47 +132,55 @@
            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)
            {
@@ -419,35 +428,22 @@
                    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)
@@ -478,6 +474,16 @@
                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();
            }
@@ -550,7 +556,7 @@
                    BaseDal.UpdateData(task);
                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"堆垛机出库完成");
                    //todo 同步到WMS
                    //暂不考虑多个出库口
                }
@@ -565,12 +571,6 @@
                    _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)
                {
@@ -583,6 +583,25 @@
                {
                    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)