From 824853fe17b79ed253cd52db58459806bf0371ee Mon Sep 17 00:00:00 2001
From: xiaoyang <xiaoyang@hnkhzn.com>
Date: 星期五, 08 十一月 2024 17:27:50 +0800
Subject: [PATCH] 11.08

---
 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs |  223 +++-----------
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs        |  395 ++++++++-----------------
 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WMS/RequestTaskDto.cs                      |    5 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs       |   17 +
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs           |   31 +
 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs                 |  138 +++++----
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/RequestTaskDto.cs                       |   13 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/UpdateStatusDto.cs                      |   21 +
 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs |    8 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MOM/ResultTrayCellsStatus.cs                  |    1 
 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs   |   26 -
 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Helper/HttpHelper.cs                      |    7 
 12 files changed, 353 insertions(+), 532 deletions(-)

diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Helper/HttpHelper.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Helper/HttpHelper.cs
index 7e1206a..91d5f89 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Helper/HttpHelper.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Helper/HttpHelper.cs
@@ -17,8 +17,11 @@
                 using HttpClient httpClient = new HttpClient();
                 httpClient.Timeout = new TimeSpan(0, 0, 60);
 
-                foreach (var header in headers)
-                    httpClient.DefaultRequestHeaders.Add(header.Key, header.Value);
+                if (headers != null)
+                {
+                    foreach (var header in headers)
+                        httpClient.DefaultRequestHeaders.Add(header.Key, header.Value);
+                }
 
                 result = await httpClient.GetAsync(serviceAddress).Result.Content.ReadAsStringAsync();
                 return result;
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WMS/RequestTaskDto.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WMS/RequestTaskDto.cs
index 80735df..320f70e 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WMS/RequestTaskDto.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WMS/RequestTaskDto.cs
@@ -17,5 +17,10 @@
         /// 鎵樼洏鍙�
         /// </summary>
         public string PalletCode { get; set; }
+
+        /// <summary>
+        /// 绌烘墭鐩樺彲鍏ュ贩鍒�
+        /// </summary>
+        public string PositionList { get; set; }
     }
 }
\ No newline at end of file
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
index 70f9860..71e16ac 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
+++ b/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;
@@ -133,45 +134,53 @@
             {
                 #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: 璋冪敤鎺ュ彛鑾峰彇涓嬩竴涓湴鍧�
+                        // 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/RequestTaskAsync", 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 鍚屾鍒癢MS
+
 
                     //鏆備笉鑰冭檻澶氫釜鍑哄簱鍙�
                 }
@@ -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,22 @@
                 {
                     throw new Exception($"浠诲姟绫诲瀷閿欒,鏈壘鍒拌浠诲姟绫诲瀷,浠诲姟鍙�:銆恵taskNum}銆�,浠诲姟绫诲瀷:銆恵task.TaskType}銆�");
                 }
+
+
+                #region WMS鍚屾浠诲姟瀹屾垚
+                //var x = new { taskNum = taskNum };
+                var result = HttpHelper.GetAsync($"http://127.0.0.1:5000/api/Task/CompleteTaskAsync?taskNum={taskNum}").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)
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
index cb46e26..16dccc6 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
@@ -175,139 +175,25 @@
         /// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
         public void RequestInbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue)
         {
-            // 鑾峰彇涓嬩竴涓换鍔�
-            var task = _taskService.QueryBarCodeConveyorLineTask(command.Barcode, childDeviceCode);
-            //var taskOut = _taskService.QueryNextConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
-            //return;
-            // 澶勭悊鍑哄簱浠诲姟
-            HandleTaskOut(conveyorLine, command, childDeviceCode, ProtocalDetailValue, task);
-
-            // 濡傛灉娌℃湁鍑哄簱浠诲姟锛屽鐞嗘柊浠诲姟
-            if (task == null && command.Barcode != "NoRead")
+            try
             {
-                HandleNewTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue);
+                // 鑾峰彇涓嬩竴涓换鍔�
+                var task = _taskService.QueryBarCodeConveyorLineTask(command.Barcode, childDeviceCode);
+                //var taskOut = _taskService.QueryNextConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
+                //return;
+                // 澶勭悊鍑哄簱浠诲姟
+                HandleTaskOut(conveyorLine, command, childDeviceCode, ProtocalDetailValue, task);
+
+                // 濡傛灉娌℃湁鍑哄簱浠诲姟锛屽鐞嗘柊浠诲姟
+                if (task == null && command.Barcode != "NoRead")
+                {
+                    HandleNewTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue);
+                }
             }
-
-            #region 鑰佺増鏈�
-
-            //var taskNew = _taskService.QueryCraneConveyorLineTask(command.Barcode.ObjToInt(), childDeviceCode);
-            //var Taskout = _taskService.QueryNextConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
-            //if (Taskout != null)
-            //{
-            //    // 绌烘墭鐩樹换鍔�
-            //    if (Taskout.TaskType == (int)TaskOutboundTypeEnum.OutTray)
-            //    {
-            //        ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(Taskout);
-            //        taskCommand.InteractiveSignal = command.InteractiveSignal;
-            //        if (command.Barcode == "")
-            //        {
-            //            var NGAddress = _platFormRepository.QueryFirst(x => x.PlatCode == Taskout.TargetAddress).Capacity;
-            //            taskCommand.TargetAddress = NGAddress;
-            //        }
-            //        conveyorLine.SendCommand(taskCommand, childDeviceCode);
-
-            //        ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
-
-            //        _taskService.UpdateTaskStatusToNext(Taskout);
-            //    }
-            //    else if (Taskout.TaskType == (int)TaskOutboundTypeEnum.Outbound)
-            //    {
-            //        ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(Taskout);
-            //        taskCommand.InteractiveSignal = command.InteractiveSignal;
-            //        if (Taskout.TaskState == (int)TaskOutStatusEnum.SC_OutFinish)
-            //        {
-            //            if (command.Barcode == "")
-            //            {
-            //                var NGAddress = _platFormRepository.QueryFirst(x => x.PlatCode == Taskout.TargetAddress).Capacity;
-            //                taskCommand.TargetAddress = NGAddress;
-            //            }
-            //            conveyorLine.SendCommand(taskCommand, childDeviceCode);
-
-            //            ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
-
-            //            _taskService.UpdateTaskStatusToNext(Taskout);
-            //        }
-            //        else if (Taskout.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting)
-            //        {
-            //            if (command.Barcode == "")
-            //            {
-            //                var NGAddress = _platFormRepository.QueryFirst(x => x.PlatCode == Taskout.TargetAddress).Capacity;
-            //                taskCommand.TargetAddress = NGAddress;
-
-            //                conveyorLine.SendCommand(taskCommand, childDeviceCode);
-
-            //                ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
-            //                _taskService.UpdateTaskStatusToNext(Taskout);
-            //            }
-            //            else
-            //            {
-            //                // todo 璋冪敤WMS浠诲姟瀹屾垚鎺ュ彛
-            //                var x = new { taskNum = Taskout.TaskNum };
-            //                var result = HttpHelper.GetAsync("http:127.0.0.1:8098/api/Task/CompleteTaskAsync", x.ToJsonString()).Result;
-            //                WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result);
-            //                if (content.Status)
-            //                {
-            //                    ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
-            //                    _taskService.UpdateTaskStatusToNext(Taskout);
-            //                }
-            //            }
-            //        }
-            //    }
-            //}
-            //if (taskNew == null)
-            //{
-            //    // 鍖栨垚->闄堝寲绌烘墭鐩樺洖娴�
-            //    if (conveyorLine.DeviceCode == "1003" && childDeviceCode == "1016")
-            //    {
-            //        //TODO 璋冪敤WMS鍒涘缓鍖栨垚->闄堝寲绌烘墭鐩樺洖娴�
-            //        WMSTaskDTO taskDTO = new WMSTaskDTO()
-            //        {
-            //            TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")),
-            //            Grade = 1,
-            //            PalletCode = command.Barcode,
-            //            RoadWay = "CHSC01",
-            //            SourceAddress = childDeviceCode,
-            //            TargetAddress = "CHSC01",
-            //            TaskState = (int)TaskInStatusEnum.InNew,
-            //            Id = 0,
-            //            TaskType = (int)TaskInboundTypeEnum.InTray,
-            //        };
-            //        WebResponseContent content = CreateAndSendTask(taskDTO);
-            //        if (content.Status)
-            //        {
-            //            Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
-            //            if (task != null)
-            //            {
-            //                ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(task);
-            //                taskCommand.InteractiveSignal = command.InteractiveSignal;
-            //                conveyorLine.SendCommand(taskCommand, childDeviceCode);
-
-            //                ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
-
-            //                _taskService.UpdateTaskStatusToNext(task);
-            //            }
-            //        }
-            //    }
-            //    else
-            //    {
-            //        if (_taskService.RequestWMSTask(command.Barcode, childDeviceCode).Status)
-            //        {
-            //            Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
-            //            if (task != null)
-            //            {
-            //                ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(task);
-            //                taskCommand.InteractiveSignal = command.InteractiveSignal;
-            //                conveyorLine.SendCommand(taskCommand, childDeviceCode);
-
-            //                ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
-
-            //                _taskService.UpdateTaskStatusToNext(task);
-            //            }
-            //        }
-            //    }
-            //}
-
-            #endregion
+            catch (Exception ex)
+            {
+                return;
+            }
         }
 
         /// <summary>
@@ -418,18 +304,6 @@
                     taskCommand.TargetAddress = 0;
                 }
 
-                #region 鍚慦MS涓婃姤浠诲姟瀹屾垚
-
-                WMSTaskDTO wMSTaskDTO = new WMSTaskDTO();
-                var result = HttpHelper.PostAsync("http:127.0.0.1:8098/api/Task/CompleteTaskAsync", (new { taskNum = command.TaskNum }).ToJsonString()).Result;
-
-                content = JsonConvert.DeserializeObject<WebResponseContent>(result);
-
-                // 妫�鏌ョ姸鎬佸苟杩斿洖
-                if (!content.Status)
-                    return;
-
-                #endregion 鍚慦MS璇锋眰绌烘墭鐩樹换鍔�
 
                 conveyorLine.SendCommand(taskCommand, childDeviceCode);
                 ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
@@ -437,18 +311,6 @@
             }
         }
 
-        /// <summary>
-        /// 鍒涘缓浠诲姟骞跺彂閫佽姹�
-        /// </summary>
-        public WebResponseContent CreateAndSendTask(WMSTaskDTO taskDTO)
-        {
-            var content = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
-            if (content.Status)
-            {
-                Console.WriteLine($"{taskDTO.TaskType}鍛煎彨鎴愬姛");
-            }
-            return content;
-        }
 
         /// <summary>
         /// 闄堝寲绌烘墭鐩樺嚭搴�
@@ -457,14 +319,21 @@
         /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
         /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
         /// <param name="index">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
-        public void EmptyTrayReturn(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int index, Platform platform)
+        public async void EmptyTrayReturn(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int index, Platform platform)
         {
-            TaskOutboundTypeEnum taskOutboundTypeEnum;
-            if (platform.PlatformType.Contains("OutTray"))
-                taskOutboundTypeEnum = TaskOutboundTypeEnum.OutTray;
-            else
-                taskOutboundTypeEnum = TaskOutboundTypeEnum.Outbound;
-            CheckAndCreateTask(TaskOutboundTypeEnum.OutTray, childDeviceCode, index, platform.Stacker.Split(',')[0], platform.Stacker.Split(',').ToList());
+            try
+            {
+                TaskOutboundTypeEnum taskOutboundTypeEnum;
+                if (platform.PlatformType.Contains("OutTray"))
+                    taskOutboundTypeEnum = TaskOutboundTypeEnum.OutTray;
+                else
+                    taskOutboundTypeEnum = TaskOutboundTypeEnum.Outbound;
+                await CheckAndCreateTask(taskOutboundTypeEnum, childDeviceCode, index, platform.Stacker.Split(',')[0], platform.Stacker.Split(',').ToList());
+            }
+            catch (Exception)
+            {
+
+            }
         }
 
         #region
@@ -506,33 +375,21 @@
         /// <summary>
         /// 妫�鏌ヤ换鍔″苟鍒涘缓鏂颁换鍔�
         /// </summary>
-        private void CheckAndCreateTask(TaskOutboundTypeEnum taskType, string childDeviceCode, int index, string roadWay, List<string> roadways = null)
+        private async Task CheckAndCreateTask(TaskOutboundTypeEnum taskType, string childDeviceCode, int index, string roadWay, List<string> roadways = null)
         {
             var tasks = _taskRepository.QueryData(x => x.TaskType == (int)taskType && x.TargetAddress == childDeviceCode);
             if (tasks.Count < index)
             {
-                //var taskDTO = new WMSTaskDTO()
-                //{
-                //    TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")),
-                //    Grade = 1,
-                //    PalletCode = DateTime.Now.ToString("yyyyMMddHHmmss"),
-                //    RoadWay = roadWay,
-                //    SourceAddress = sourceAddress,
-                //    TargetAddress = childDeviceCode,
-                //    TaskState = (int)TaskOutStatusEnum.OutNew,
-                //    Id = 0,
-                //    TaskType = (int)taskType
-                //};
                 #region 璋冪敤WMS鑾峰彇鍑哄簱浠诲姟
                 WMSTaskDTO taskDTO = new WMSTaskDTO();
-                dynamic dynamic = new
+                object dynamic = new
                 {
                     position = childDeviceCode,
                     tag = (int)taskType,
                     areaCdoe = roadWay,
                     roadways = roadways
                 };
-                var result = HttpHelper.PostAsync("http:127.0.0.1:8098/api/Task/RequestTaskAsync", dynamic.ToJsonString()).Result;
+                var result = await HttpHelper.PostAsync("http://localhost:5000/api/Task/RequestTrayOutTaskAsync", dynamic.ToJsonString());
 
                 WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result);
 
@@ -548,6 +405,18 @@
         }
 
         /// <summary>
+        /// 鍒涘缓浠诲姟
+        /// </summary>
+        public WebResponseContent CreateAndSendTask(WMSTaskDTO taskDTO)
+        {
+            var content = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
+            if (content.Status)
+            {
+                Console.WriteLine($"{taskDTO.TaskType}鍛煎彨鎴愬姛");
+            }
+            return content;
+        }
+        /// <summary>
         /// 杈撻�佺嚎浜や簰瀹屾垚
         /// </summary>
         /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs
index 6f9ab39..a6424b2 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs
@@ -62,7 +62,7 @@
                 // 璇锋眰WMS绌烘墭鐩樹换鍔�
                 CreateAndSendEmptyTrayTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue);
             }
-            else if ((conveyorLine.DeviceCode == "1001" && childDeviceCode == "1088")||(conveyorLine.DeviceCode == "1004" && childDeviceCode == "1339"))
+            else if ((conveyorLine.DeviceCode == "1001" && childDeviceCode == "1088") || (conveyorLine.DeviceCode == "1004" && childDeviceCode == "1339"))
             {
                 // 璇锋眰WMS鍏ュ簱浠诲姟
                 RequestWmsTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue);
@@ -97,7 +97,7 @@
             }
 
             // TODO璋冪敤WMS浠诲姟瀹屾垚鎺ュ彛
-            var result = HttpHelper.GetAsync("http://127.0.0.1:8098/api/Task/CompleteTaskAsync", new { taskNum = taskOut.TaskNum }.ToJsonString()).Result;
+            var result = HttpHelper.GetAsync($"http://127.0.0.1:5000/api/Task/CompleteTaskAsync?taskNum={taskOut.TaskNum}").Result;
             WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result);
             if (content.Status)
             {
@@ -143,32 +143,18 @@
         /// </summary>
         private WMSTaskDTO CreateEmptyTrayTaskDto(string barcode, string childDeviceCode)
         {
-            // 鍒涘缓骞惰繑鍥炵┖鎵樼洏浠诲姟DTO
-            //return new WMSTaskDTO
-            //{
-            //    TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")),
-            //    Grade = 1,
-            //    PalletCode = barcode,
-            //    RoadWay = "JZSC01",
-            //    SourceAddress = childDeviceCode,
-            //    TargetAddress = "JZSC01",
-            //    TaskState = (int)TaskInStatusEnum.InNew,
-            //    Id = 0,
-            //    TaskType = (int)TaskInboundTypeEnum.InTray,
-            //};
-
             #region 鍚慦MS璇锋眰绌烘墭鐩樹换鍔�
-
             WMSTaskDTO wMSTaskDTO = new WMSTaskDTO();
             RequestTaskDto request = new RequestTaskDto()
             {
                 Position = childDeviceCode,
                 PalletCode = barcode,
             };
-            var result = HttpHelper.PostAsync("http:127.0.0.1:8098/api/Task/RequestTaskAsync", request.ToJsonString()).Result;
+            var result = HttpHelper.PostAsync("http://127.0.0.1:5000/api/Task/RequestTrayInTaskAsync", request.ToJsonString()).Result;
+            if (result == null)
+                return wMSTaskDTO;
 
             WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result);
-
             // 妫�鏌ョ姸鎬佸苟杩斿洖
             if (!content.Status)
                 return wMSTaskDTO;
@@ -187,7 +173,7 @@
             if (_taskService.RequestWMSTask(command.Barcode, childDeviceCode).Status)
             {
                 // 鏌ヨ浠诲姟
-                Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
+                Dt_Task task = _taskService.QueryBarCodeConveyorLineTask(command.Barcode, childDeviceCode);
                 if (task != null)
                 {
                     // 鏄犲皠浠诲姟鍛戒护
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
index 99582b3..fea5ff2 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
@@ -441,22 +441,24 @@
                     AlertDescription = commonStackerCrane.StackerCraneStatusDes,
                     AlertReset = "0"
                 };
-                await HttpHelper.PostAsync("http://ts-momapp01:12020/api/MachineIntegration/EqptAlive", requestAlert.ToJsonString());
+                var S= await HttpHelper.PostAsync("http://ts-momapp01:12020/api/MachineIntegration/EqptAlive", requestAlert.ToJsonString());
+                WriteInfo("EqptAlive", S);
             }
             RequestEqptStatusDto requestEqptStatus = new RequestEqptStatusDto()
             {
                 EmployeeNo = "T00001",
-                EquipmentCode = commonStackerCrane.DeviceCode,
+                EquipmentCode = "ECH001-B",
                 RequestTime = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"),
                 SessionId = Guid.NewGuid().ToString(),
                 Software = commonStackerCrane.DeviceName,
-                ChangeTime = DateTime.Now.ToString(),
+                ChangeTime = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"),
                 Description = commonStackerCrane.StackerCraneStatusDes,
                 LocationID = "NA",
                 ReasonCode = "123",
                 StatusCode = code
             };
             var respone = await HttpHelper.PostAsync("http://ts-momapp01:12020/api/MachineIntegration/EqptStatus", requestEqptStatus.ToJsonString());
+            WriteInfo("EqptStatus", respone);
         }
     }
 }
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/RequestTaskDto.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/RequestTaskDto.cs
index 525996e..8ca8d59 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/RequestTaskDto.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/RequestTaskDto.cs
@@ -11,4 +11,17 @@
     /// 鎵樼洏鍙�
     /// </summary>
     public string PalletCode { get; set; }
+
+    /// <summary>
+    /// 绌烘墭鐩樺彲鍏ュ贩鍒�
+    /// </summary>
+    public string PositionList { get; set; }
+}
+
+public class RequestOutTaskDto
+{
+    public string   Position { get; set; }
+    public int Tag { get; set; }
+    public string AreaCdoe { get; set; }
+    public List<string> Roadways { get; set; }
 }
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/UpdateStatusDto.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/UpdateStatusDto.cs
new file mode 100644
index 0000000..2b109c5
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/UpdateStatusDto.cs
@@ -0,0 +1,21 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO
+{
+    public class UpdateStatusDto
+    {
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public int TaskNum { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鐘舵��
+        /// </summary>
+        public int TaskState { get; set; }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MOM/ResultTrayCellsStatus.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MOM/ResultTrayCellsStatus.cs
index 0f1ba4f..b83fc36 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MOM/ResultTrayCellsStatus.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MOM/ResultTrayCellsStatus.cs
@@ -11,6 +11,7 @@
         /// 鐢佃姱鍒楄〃
         /// </summary>
         public List<SerialNoDto> SerialNos { get; set; } = new List<SerialNoDto>();
+        public string BindCode { get; set; }
 
         public string TrayStatus { get; set; }
         /// <summary>
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs
index 8cc81fc..7b13658 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs
@@ -134,6 +134,13 @@
     Task<WebResponseContent> RequestTaskAsync(RequestTaskDto input);
 
     /// <summary>
+    /// 璇锋眰绌烘墭鐩樹换鍔�
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    Task<WebResponseContent> RequestTrayInTaskAsync(RequestTaskDto input);
+
+    /// <summary>
     /// 璇锋眰鎵樼洏浠诲姟
     /// </summary>
     /// <param name="position">鐩爣浣嶇疆</param>
@@ -141,5 +148,13 @@
     /// <param name="areaCode">鍖哄煙缂栫爜</param>
     /// <param name="roadways">宸烽亾鍒楄〃</param>
     /// <returns>杩斿洖缁撴灉闆�</returns>
-    Task<WebResponseContent> RequestTrayTaskAsync(string position, int tag, string areaCode, List<string> roadways);
+    Task<WebResponseContent> RequestTrayOutTaskAsync(string position, int tag, string areaCode, List<string> roadways);
+
+
+    /// <summary>
+    /// 浠诲姟鐘舵�佷慨鏀�
+    /// </summary>
+    /// <param name="input">璇锋眰鏁版嵁</param>
+    /// <returns></returns>
+    Task<WebResponseContent> UpdateTaskStatus(int taskNum, int taskState);
 }
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
index db6dbf3..5901b8a 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
@@ -190,7 +190,7 @@
             {
                 var process = await SqlSugarHelper.Db.Queryable<Dt_EquipmentProcess>()
                     .FirstAsync(x => x.EquipmentName == task.Roadway);
-                var info = JsonConvert.DeserializeObject<EquipmentParameterInfo>(process.ProcessValue);
+                var info = JsonConvert.DeserializeObject<List<EquipmentParameterInfo>>(process.ProcessValue);
 
                 var agingOutputDto = MapToAgingOutputDto(stock, info);
                 content = await _agingInOrOutInputService.GetOCVOutputAsync(agingOutputDto);
@@ -218,7 +218,7 @@
         }
     }
 
-    private AgingOutputDto MapToAgingOutputDto(DtStockInfo stock, EquipmentParameterInfo info)
+    private AgingOutputDto MapToAgingOutputDto(DtStockInfo stock, List<EquipmentParameterInfo> info)
     {
         return new AgingOutputDto
         {
@@ -230,20 +230,17 @@
                 SlotNo = x.OrderNo.ToInt32(),
                 SerialNo = x.SerialNumber,
                 SerialNoResult = true,
-                ParameterInfo = new List<ParameterInfo>
-            {
-                new ParameterInfo
+                ParameterInfo = info.Select(x => new ParameterInfo()
                 {
-                    LowerLomit = info.LowerControlLimit,
-                    UpperLimit = info.UpperControlLimit,
-                    ParameterResult = info.EquipmentAvailabilityFlag,
-                    ParameterCode = info.ParameterCode,
-                    ParameterDesc = info.Description,
-                    TargetValue = info.TargetValue,
-                    Value = info.TargetValue,
-                    DefectCode = info.UOMCode
-                }
-            }
+                    LowerLomit = x.LowerControlLimit,
+                    UpperLimit = x.UpperControlLimit,
+                    ParameterResult = x.EquipmentAvailabilityFlag,
+                    ParameterCode = x.ParameterCode,
+                    ParameterDesc = x.Description,
+                    TargetValue = x.TargetValue,
+                    Value = (DateTime.Now - stock.CreateDate).TotalMinutes.ToString(),
+                    DefectCode = x.UOMCode
+                }).ToList()
             }).ToList()
         };
     }
@@ -346,91 +343,6 @@
     #region 鍏ュ簱浠诲姟瀹屾垚
 
     /// <summary>
-    /// 鍏ュ簱浠诲姟瀹屾垚
-    /// </summary>
-    /// <param name="task">浠诲姟鏁版嵁鍚堥泦</param>
-    /// <returns>杩斿洖缁撴灉闆�</returns>
-    //public async Task<WebResponseContent> CompleteInboundTaskAsync(Dt_Task task)
-    //{
-    //    WebResponseContent content = new WebResponseContent();
-    //    try
-    //    {
-    //        var boxing = await _boxingInfoRepository.QueryFirstNavAsync(x => x.PalletCode == task.PalletCode);
-    //        var locationInf = await _locationRepository.QueryFirstAsync(x => x.LocationCode == task.TargetAddress);
-
-    //        locationInf.LocationStatus = (int)LocationEnum.InStock;
-
-    //        // 鍒涘缓鍘嗗彶浠诲姟瀹炰緥妯″瀷
-    //        var taskHty = CreateHistoricalTask(task);
-
-    //        // 鍒涘缓搴撳瓨瀹炰緥妯″瀷
-    //        DtStockInfo stock;
-    //        if (boxing == null)
-    //        {
-    //            // 绌烘墭鐩�
-
-    //            stock = new DtStockInfo()
-    //            {
-    //                PalletCode = task.PalletCode,
-    //                LocationCode = task.TargetAddress,
-    //                CreateDate = DateTime.Now,
-    //                Creater = "system",
-    //                IsFull = boxing.IsFull,
-    //                StockInfoDetails = new List<DtStockInfoDetail>()
-    //                {
-    //                    new DtStockInfoDetail()
-    //                    {
-    //                         MaterielCode = "绌烘墭鐩�",
-    //                         Id = 0,
-    //                    }
-    //                }
-    //            };
-    //        }
-    //        else
-    //        {
-    //            // 瀹炵洏
-    //            var boxDetail = boxing.BoxingInfoDetails.Adapt<List<DtStockInfoDetail>>();
-    //            // 鍒涘缓搴撳瓨瀹炰緥妯″瀷
-    //            stock = new DtStockInfo()
-    //            {
-    //                PalletCode = task.PalletCode,
-    //                LocationCode = task.TargetAddress,
-    //                CreateDate = DateTime.Now,
-    //                Creater = "system",
-    //                IsFull = boxing.IsFull,
-    //                StockInfoDetails = boxDetail,
-    //            };
-
-    //            AgingInputDto agingInputDto = new AgingInputDto()
-    //            {
-    //                SerialNos = boxing.BoxingInfoDetails
-    //                    .Select(item => new SerialNoInDto { SerialNo = item.SerialNumber, PositionNo = item.OrderNo })
-    //                    .ToList(),
-    //                TrayBarcode = task.PalletCode,
-    //                OpFlag = 1
-    //            };
-    //            var result = await _agingInOrOutInputService.GetOCVInputAsync(agingInputDto);
-    //            stock.Remark = JsonConvert.DeserializeObject<ResponeAgingInputDto>(result.Data.ToString()).LinedProcessFeedbackTime;
-
-    //            LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍏ュ簱浠诲姟瀹屾垚", $"璐т綅鍦板潃锛歿task.TargetAddress},淇敼鍚庤揣浣嶆暟鎹細{locationInf}");
-
-    //        }
-
-    //        // 鎵ц鏁版嵁搴撲簨鍔�
-    //        bool isResult = await ExecuteTransaction(stock, taskHty, locationInf, task.TaskId);
-    //        if (isResult)
-    //            content.OK("鍏ュ簱浠诲姟瀹屾垚鎴愬姛");
-    //        else
-    //            content.Error("鍏ュ簱浠诲姟瀹屾垚澶辫触");
-    //    }
-    //    catch (Exception err)
-    //    {
-    //        Console.WriteLine(err.Message.ToString());
-    //    }
-    //    return content;
-    //}
-
-    /// <summary>
     /// 瀹屾垚鍏ュ簱浠诲姟
     /// </summary>
     /// <param name="task">浠诲姟鏁版嵁鍚堥泦</param>
@@ -522,10 +434,13 @@
                 .Select(item => new SerialNoInDto { SerialNo = item.SerialNumber, PositionNo = item.OrderNo })
                 .ToList(),
             TrayBarcode = task.PalletCode,
-            OpFlag = 1
+            OpFlag = 1,
+            EquipmentCode = "ECH001-B",
+            Software = "WMS"
         };
         var result = _agingInOrOutInputService.GetOCVInputAsync(agingInputDto).Result;
-        stock.Remark = JsonConvert.DeserializeObject<ResponeAgingInputDto>(result.Data.ToString()).LinedProcessFeedbackTime;
+        var respone = JsonConvert.DeserializeObject<ResponeAgingInputDto>(result.Data.ToString());
+        stock.Remark = respone.LinedProcessFeedbackTime;
 
         // 璁板綍鏃ュ織
         LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍏ュ簱浠诲姟瀹屾垚", $"璐т綅鍦板潃锛歿task.TargetAddress},淇敼鍚庤揣浣嶆暟鎹細{locationInf}");
@@ -595,12 +510,28 @@
 
         try
         {
-
             // 璋冪敤BaseDal.QueryFirstAsync鏂规硶锛屾煡璇换鍔�
             var task = await BaseDal.QueryFirstAsync(x => x.PalletCode == input.PalletCode);
             if (task != null)
             {
-                content =  await UpdateExistingTask(input, task);
+                if (task.TaskState == (int)TaskInStatusEnum.InNew)
+                {
+                    // 鍒涘缓WMS浠诲姟
+                    WMSTaskDTO taskDTO = new WMSTaskDTO()
+                    {
+                        TaskNum = task.TaskNum.Value,
+                        Grade = 1,
+                        PalletCode = task.PalletCode,
+                        RoadWay = task.Roadway,
+                        SourceAddress = task.SourceAddress,
+                        TargetAddress = task.Roadway,
+                        TaskState = task.TaskState.Value,
+                        Id = 0,
+                        TaskType = task.TaskType,
+                    };
+                    return content.OK(data: taskDTO);
+                }
+                content = await UpdateExistingTask(input, task);
                 return content;
             }
             // 鍒涘缓涓�涓猅rayCellsStatusDto瀵硅薄锛屽苟璧嬪��
@@ -608,7 +539,7 @@
             {
                 Software = "WMS",
                 TrayBarcode = input.PalletCode,
-                 EquipmentCode = "ECH001-B"
+                EquipmentCode = "ECH001-B"
             };
 
             // 璋冪敤GetTrayCellStatusAsync鏂规硶锛岃幏鍙栨暣鐩樼數鑺�
@@ -619,6 +550,8 @@
             // 娣诲姞缁勭洏淇℃伅
             // 灏哻ontent.Data杞崲涓篟esultTrayCellsStatus瀵硅薄
             var result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.Data.ToString());
+            if (result.SerialNos.Count <= 0)
+                return content.Error(result.MOMMessage);
             var boxing = await CreateBoxingInfo(result, input.PalletCode);
 
             // 璋冪敤GetProcessApplyAsync鏂规硶锛岃幏鍙栧伐鑹鸿矾绾�
@@ -631,7 +564,7 @@
             var processResponse = await GetProcessResponseAsync(process, input.Position);
 
             // 濡傛灉task涓嶄负null锛屽垯璋冪敤UpdateExistingTask鏂规硶锛屾洿鏂颁换鍔★紱鍚﹀垯璋冪敤CreateNewTask鏂规硶锛屽垱寤烘柊浠诲姟
-            content = task != null ? await UpdateExistingTask(input, task) : await CreateNewTask(processResponse, input);
+            content = task != null ? await UpdateExistingTask(input, task) : await CreateNewTask(input, processResponse);
             if (content.Status)
             {
                 var isBox = await _boxingInfoRepository.AddDataNavAsync(boxing);
@@ -646,6 +579,41 @@
 
         // 杩斿洖content
         return content;
+    }
+
+    public async Task<WebResponseContent> RequestTrayInTaskAsync(RequestTaskDto input)
+    {
+        WebResponseContent content = new WebResponseContent();
+        try
+        {
+
+            // 璋冪敤BaseDal.QueryFirstAsync鏂规硶锛屾煡璇换鍔�
+            var task = await BaseDal.QueryFirstAsync(x => x.PalletCode == input.PalletCode);
+            if (task != null && task.TaskState == (int)TaskInStatusEnum.InNew)
+            {
+                // 鍒涘缓WMS浠诲姟
+                WMSTaskDTO taskDTO = new WMSTaskDTO()
+                {
+                    TaskNum = task.TaskNum.Value,
+                    Grade = 1,
+                    PalletCode = task.PalletCode,
+                    RoadWay = task.Roadway,
+                    SourceAddress = task.SourceAddress,
+                    TargetAddress = task.Roadway,
+                    TaskState = task.TaskState.Value,
+                    Id = 0,
+                    TaskType = task.TaskType,
+                };
+                return content.OK(data: task);
+            }
+
+            return await CreateNewTask(input, null, 1);
+        }
+        catch (Exception)
+        {
+
+            throw;
+        }
     }
 
     // 鑾峰彇鎵樼洏鍗曞厓鏍肩姸鎬�
@@ -679,8 +647,8 @@
         // 鍒涘缓涓�涓狿rocessApplyDto瀵硅薄锛屽苟璧嬪��
         return new ProcessApplyDto()
         {
-             EquipmentCode = "ECH001-B",
-             Software = "WMS",
+            EquipmentCode = "ECH001-B",
+            Software = "WMS",
             //WipOrderNo = result.BindCode,
             SerialNos = content.SerialNos.Select(item => new SerialNos
             {
@@ -723,104 +691,7 @@
 
     #endregion 璇锋眰浠诲姟鍏ュ簱
 
-    #region 璇锋眰鍑哄簱
-
-    //public async Task<WebResponseContent> RequestTrayTaskAsync(string position, int tag, string areaCdoe,List<string> roadways)
-    //{
-    //    WebResponseContent content = new WebResponseContent();
-    //    try
-    //    {
-    //        // 1==瀹炵洏 2 ==绌虹洏
-    //        if (tag == 1)
-    //        {
-    //            // 鏌ヨ搴撳瓨淇℃伅
-    //            DtStockInfo? stockInfo = _stockInfoRepository.QueryData(x => x.AreaCode == areaCdoe && Convert.ToDateTime(x.Remark) < DateTime.Now && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && roadways.Contains(x.LocationInfo.RoadwayNo)).OrderBy(x => x.CreateDate).FirstOrDefault();
-    //            // 鍒涘缓鏂颁换鍔″疄渚�
-    //            var task = new Dt_Task()
-    //            {
-    //                Grade = 1,
-    //                Roadway = stockInfo.LocationInfo.RoadwayNo,
-    //                TargetAddress = position,
-    //                Dispatchertime = DateTime.Now,
-    //                MaterialNo = "",
-    //                NextAddress = position,
-    //                OrderNo = null,
-    //                PalletCode = stockInfo.PalletCode,
-    //                SourceAddress = stockInfo.LocationCode,
-    //                TaskState = (int)TaskOutStatusEnum.OutNew,
-    //                TaskType = (int)TaskOutboundTypeEnum.Outbound,
-    //                TaskNum = await BaseDal.GetTaskNo(),
-    //                Creater = "Systeam"
-    //            };
-    //            var taskId = await BaseDal.AddDataAsync(task);
-    //            bool isResult = taskId > 0;
-    //            if (isResult)
-    //            {
-    //                WMSTaskDTO taskDTO = new WMSTaskDTO()
-    //                {
-    //                    TaskNum = task.TaskNum.Value,
-    //                    Grade = 1,
-    //                    PalletCode = DateTime.Now.ToString("MMddHHmmss"),
-    //                    RoadWay = task.Roadway,
-    //                    SourceAddress = stockInfo.LocationCode,
-    //                    TargetAddress = task.Roadway,
-    //                    TaskState = (int)TaskOutStatusEnum.OutNew,
-    //                    Id = 0,
-    //                    TaskType = (int)TaskOutboundTypeEnum.OutTray
-    //                };
-    //                stockInfo.LocationInfo.LocationStatus = (int)LocationEnum.InStockDisable;
-    //                _locationRepository.UpdateData(stockInfo.LocationInfo);
-    //                content.OK(data: taskDTO);
-    //            }
-    //        }
-    //        else
-    //        {
-    //            var stockInfo = _stockInfoRepository.QueryData(x => x.AreaCode == areaCdoe && x.StockInfoDetails.Any(z => z.MaterielCode == "绌烘墭鐩�") && roadways.Contains(x.LocationInfo.RoadwayNo)).OrderBy(x => x.CreateDate).FirstOrDefault();
-    //            // 鍒涘缓鏂颁换鍔″疄渚�
-    //            var task = new Dt_Task
-    //            {
-    //                CurrentAddress = stockInfo.LocationCode,
-    //                Grade = 1,
-    //                Roadway = stockInfo.LocationInfo.RoadwayNo,
-    //                TargetAddress = position,
-    //                Dispatchertime = DateTime.Now,
-    //                MaterialNo = "",
-    //                NextAddress = position,
-    //                OrderNo = null,
-    //                PalletCode = stockInfo.PalletCode,
-    //                SourceAddress = stockInfo.LocationCode,
-    //                TaskState = (int)TaskOutStatusEnum.OutNew,
-    //                TaskType = (int)TaskOutboundTypeEnum.OutTray,
-    //                TaskNum = await BaseDal.GetTaskNo(),
-    //                Creater = "Systeam"
-    //            };
-
-    //            var taskId = await BaseDal.AddDataAsync(task);
-    //            bool isResult = taskId > 0;
-    //            if (isResult)
-    //            {
-    //                WMSTaskDTO taskDTO = new WMSTaskDTO()
-    //                {
-    //                    TaskNum = task.TaskNum.Value,
-    //                    Grade = 1,
-    //                    PalletCode = DateTime.Now.ToString("MMddHHmmss"),
-    //                    RoadWay = task.Roadway,
-    //                    SourceAddress = stockInfo.LocationCode,
-    //                    TargetAddress = task.Roadway,
-    //                    TaskState = (int)TaskOutStatusEnum.OutNew,
-    //                    Id = 0,
-    //                    TaskType = (int)TaskOutboundTypeEnum.OutTray
-    //                };
-    //                content.OK(data: taskDTO);
-    //            }
-    //        }
-    //    }
-    //    catch (Exception ex)
-    //    {
-    //        throw;
-    //    }
-    //    return content;
-    //}
+    #region 璇锋眰鍑哄簱锛堝疄鐩�&绌虹洏锛�
 
     /// <summary>
     /// 璇锋眰鎵樼洏浠诲姟
@@ -830,13 +701,13 @@
     /// <param name="areaCode">鍖哄煙缂栫爜</param>
     /// <param name="roadways">宸烽亾缂栫爜闆嗗悎</param>
     /// <returns>杩斿洖缁撴灉闆�</returns>
-    public async Task<WebResponseContent> RequestTrayTaskAsync(string position, int tag, string areaCode, List<string> roadways)
+    public async Task<WebResponseContent> RequestTrayOutTaskAsync(string position, int tag, string areaCode, List<string> roadways)
     {
         WebResponseContent content = new WebResponseContent();
         try
         {
             // 鏍规嵁鎵樼洏绫诲瀷鏌ヨ搴撳瓨淇℃伅
-            DtStockInfo stockInfo = tag == 1
+            DtStockInfo stockInfo = tag == (int)TaskOutboundTypeEnum.Outbound
                 ? QueryStockInfoForRealTray(areaCode, roadways)
                 : QueryStockInfoForEmptyTray(areaCode, roadways);
 
@@ -856,7 +727,7 @@
 
             // 鍒涘缓浠诲姟DTO
             WMSTaskDTO taskDTO = CreateTaskDTO(task);
-            if (tag == 1)
+            //if (tag == 1)
             {
                 // 鏇存柊搴撳瓨浣嶇疆鐘舵�佷负涓嶅彲鐢�
                 stockInfo.LocationInfo.LocationStatus = (int)LocationEnum.InStockDisable;
@@ -870,7 +741,7 @@
         {
             // 璁板綍寮傚父淇℃伅骞舵姏鍑�
             LogFactory.GetLog("璇锋眰鎵樼洏浠诲姟").Error(true, ex);
-            throw;
+            return content.Error(ex.Message);
         }
     }
 
@@ -879,9 +750,11 @@
     /// </summary>
     private DtStockInfo QueryStockInfoForRealTray(string areaCode, List<string> roadways)
     {
-        return _stockInfoRepository.QueryData(x => x.AreaCode == areaCode && Convert.ToDateTime(x.Remark) < DateTime.Now && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && roadways.Contains(x.LocationInfo.RoadwayNo))
+        return _stockInfoRepository.Db.Queryable<DtStockInfo>().Where(x => x.AreaCode == areaCode && Convert.ToDateTime(x.Remark) < DateTime.Now && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && roadways.Contains(x.LocationInfo.RoadwayNo))
+                                   .Includes(x => x.LocationInfo)
+                                   .Includes(x => x.StockInfoDetails)
                                    .OrderBy(x => x.CreateDate)
-                                   .FirstOrDefault();
+                                   .First();
     }
 
     /// <summary>
@@ -889,9 +762,11 @@
     /// </summary>
     private DtStockInfo QueryStockInfoForEmptyTray(string areaCode, List<string> roadways)
     {
-        return _stockInfoRepository.QueryData(x => x.AreaCode == areaCode && x.StockInfoDetails.Any(z => z.MaterielCode == "绌烘墭鐩�") && roadways.Contains(x.LocationInfo.RoadwayNo))
+        return _stockInfoRepository.Db.Queryable<DtStockInfo>().Where(x => x.AreaCode == areaCode && x.StockInfoDetails.Any(z => z.MaterielCode == "绌烘墭鐩�") && roadways.Contains(x.LocationInfo.RoadwayNo))
+                                   .Includes(x => x.LocationInfo)
+                                   .Includes(x => x.StockInfoDetails)
                                    .OrderBy(x => x.CreateDate)
-                                   .FirstOrDefault();
+                                   .First();
     }
 
     /// <summary>
@@ -910,8 +785,9 @@
             OrderNo = null,
             PalletCode = stockInfo.PalletCode,
             SourceAddress = stockInfo.LocationCode,
+            CurrentAddress = stockInfo.LocationCode,
             TaskState = (int)TaskOutStatusEnum.OutNew,
-            TaskType = tag == 1 ? (int)TaskOutboundTypeEnum.Outbound : (int)TaskOutboundTypeEnum.OutTray,
+            TaskType = tag == (int)TaskOutboundTypeEnum.Outbound ? (int)TaskOutboundTypeEnum.Outbound : (int)TaskOutboundTypeEnum.OutTray,
             TaskNum = BaseDal.GetTaskNo().Result,
             Creater = "System" // 淇鎷煎啓閿欒
         };
@@ -938,64 +814,31 @@
 
     #endregion 璇锋眰鍑哄簱
 
-    #region 闄堝寲璇锋眰鍑哄簱
+    #region 浠诲姟鐘舵�佹洿鏀�
 
-    // 闄堝寲璇锋眰鍑哄簱
-    public async Task<WebResponseContent> OutTrayByCh(string position)
+    public async Task<WebResponseContent> UpdateTaskStatus(int taskNum, int taskState)
     {
         WebResponseContent content = new WebResponseContent();
         try
         {
-            var area = _areaInfoRepository.QueryFirst(x => x.AreaName == "闄堝寲鍖�");
-
-            // 鏌ヨ搴撳瓨淇℃伅
-            var stockInfo = _stockInfoRepository.QueryData(x => x.AreaCode == area.AreaCode && Convert.ToDateTime(x.Remark) < DateTime.Now && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock).OrderBy(x => x.CreateDate).FirstOrDefault();
-            // 鍒涘缓鏂颁换鍔″疄渚�
-            var task = new Dt_Task()
-            {
-                Grade = 1,
-                Roadway = stockInfo.LocationInfo.RoadwayNo,
-                TargetAddress = position,
-                Dispatchertime = DateTime.Now,
-                MaterialNo = "",
-                NextAddress = position,
-                OrderNo = null,
-                PalletCode = stockInfo.PalletCode,
-                SourceAddress = stockInfo.LocationCode,
-                TaskState = (int)TaskOutStatusEnum.OutNew,
-                TaskType = (int)TaskOutboundTypeEnum.OutTray,
-                TaskNum = await BaseDal.GetTaskNo(),
-                Creater = "Systeam"
-            };
-            var taskId = await BaseDal.AddDataAsync(task);
-            bool isResult = taskId > 0;
-            if (isResult)
-            {
-                WMSTaskDTO taskDTO = new WMSTaskDTO()
-                {
-                    TaskNum = task.TaskNum.Value,
-                    Grade = 1,
-                    PalletCode = DateTime.Now.ToString("MMddHHmmss"),
-                    RoadWay = task.Roadway,
-                    SourceAddress = stockInfo.LocationCode,
-                    TargetAddress = task.Roadway,
-                    TaskState = (int)TaskOutStatusEnum.OutNew,
-                    Id = 0,
-                    TaskType = (int)TaskOutboundTypeEnum.OutTray
-                };
-                stockInfo.LocationInfo.LocationStatus = (int)LocationEnum.InStockDisable;
-                _locationRepository.UpdateData(stockInfo.LocationInfo);
-                content.OK(data: taskDTO);
-            }
+            var task = await BaseDal.QueryFirstAsync(x => x.TaskNum == taskNum);
+            if (task == null)
+                return content.Error("鏈壘鍒颁换鍔�");
+            task.TaskState = taskState;
+            var asb = await BaseDal.UpdateDataAsync(task);
+            if (asb)
+                content.OK();
+            else
+                content.Error();
         }
         catch (Exception ex)
         {
-            throw;
+            content.Error(ex.Message);
         }
         return content;
     }
 
-    #endregion 闄堝寲璇锋眰鍑哄簱
+    #endregion
 
     #endregion 澶栭儴鎺ュ彛鏂规硶
 
@@ -1361,10 +1204,18 @@
     /// <param name="areaId">鍖哄煙ID</param>
     /// <param name="content">鍝嶅簲鍐呭</param>
     /// <returns></returns>
-    private async Task<WebResponseContent> CreateNewTask(List<Dt_EquipmentProcess> process, RequestTaskDto input)
+    private async Task<WebResponseContent> CreateNewTask(RequestTaskDto input, List<Dt_EquipmentProcess> process = null, int flag = 0)
     {
         WebResponseContent content = new WebResponseContent();
-        List<string> strings = process.Select(x => x.EquipmentName).ToList();
+        List<string> strings = new List<string>();
+        if (process != null)
+        {
+            strings = process.Select(x => x.EquipmentName).ToList();
+        }
+        else
+        {
+            strings = input.Position.Split(',').ToList();
+        }
         // 鑾峰彇鐩爣鍦板潃
         string ToAddress = await GetRoadWayAsync(strings);
 
@@ -1382,7 +1233,7 @@
             PalletCode = input.PalletCode,
             SourceAddress = input.Position,
             TaskState = (int)TaskInStatusEnum.InNew,
-            TaskType = (int)TaskTypeEnum.Inbound,
+            TaskType = flag == 0 ? (int)TaskInboundTypeEnum.Inbound : (int)TaskInboundTypeEnum.InTray,
             TaskNum = await BaseDal.GetTaskNo(),
             Creater = "Systeam"
         };
@@ -1460,6 +1311,22 @@
     {
         var minGroup = _locationRepository.QueryData(x => process.Contains(x.RoadwayNo) && x.LocationStatus == (int)LocationEnum.Free)
             .GroupBy(x => x.RoadwayNo)
+             .OrderByDescending(g => g.Count()) // 鏍规嵁姣忎釜缁勭殑鍏冪礌鏁伴噺鎺掑簭
+             .First(); // 鍙栧嚭鏁伴噺鏈�澶氱殑缁�
+
+        string minRoadwayNo = minGroup.Key; // 鏁伴噺鏈�澶氱殑缁勭殑Key
+
+        return minRoadwayNo;
+    }
+
+    /// <summary>
+    /// 鑾峰彇宸烽亾鎴栫珯鍙�
+    /// </summary>
+    /// <returns></returns>
+    public async Task<string> GetRoadWayAsync(int areaCode)
+    {
+        var minGroup = _locationRepository.QueryData(x => x.AreaId == areaCode && x.LocationStatus == (int)LocationEnum.Free)
+            .GroupBy(x => x.RoadwayNo)
              .OrderBy(g => g.Count()) // 鏍规嵁姣忎釜缁勭殑鍏冪礌鏁伴噺鎺掑簭
              .First(); // 鍙栧嚭鏁伴噺鏈�灏戠殑缁�
 
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs
index 7583011..58cf6b7 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs
@@ -1,4 +1,5 @@
 锘縰sing WIDESEA_DTO;
+using static WIDESEA_DTO.RequestTaskDto;
 
 namespace WIDESEA_WMSServer.Controllers;
 
@@ -56,13 +57,35 @@
     }
 
     /// <summary>
-    /// 绌烘墭鐩樿姹�
+    /// 绌烘墭鐩樺叆搴撹姹�
     /// </summary>
     /// <param name="input">璇锋眰鏁版嵁</param>
     /// <returns></returns>
-    [HttpPost, AllowAnonymous, Route("RequestTrayTaskAsync")]
-    public async Task<WebResponseContent> RequestTrayTaskAsync([FromBody] string position, int tag, string areaCdoe, List<string> roadways)
+    [HttpPost, AllowAnonymous, Route("RequestTrayInTaskAsync")]
+    public async Task<WebResponseContent> RequestTrayInTaskAsync([FromBody] RequestTaskDto input)
     {
-        return await Service.RequestTrayTaskAsync(position, tag, areaCdoe, roadways);
+        return await Service.RequestTrayInTaskAsync(input);
+    }
+
+    /// <summary>
+    /// 绌烘墭鐩�&婊$洏鍑哄簱璇锋眰
+    /// </summary>
+    /// <param name="input">璇锋眰鏁版嵁</param>
+    /// <returns></returns>
+    [HttpPost, AllowAnonymous, Route("RequestTrayOutTaskAsync")]
+    public async Task<WebResponseContent> RequestTrayOutTaskAsync([FromBody] RequestOutTaskDto request)
+    {
+        return await Service.RequestTrayOutTaskAsync(request.Position, request.Tag, request.AreaCdoe, request.Roadways);
+    }
+
+    /// <summary>
+    /// 浠诲姟鐘舵�佷慨鏀�
+    /// </summary>
+    /// <param name="input">璇锋眰鏁版嵁</param>
+    /// <returns></returns>
+    [HttpPost, AllowAnonymous, Route("UpdateTaskStatus")]
+    public async Task<WebResponseContent> UpdateTaskStatus([FromBody] UpdateStatusDto input)
+    {
+        return await Service.UpdateTaskStatus(input.TaskNum, input.TaskState);
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3