From c9982eb3dd76696b8a3851cc6411a71c402d042f Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期三, 06 十一月 2024 20:04:41 +0800
Subject: [PATCH] 11.06

---
 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs |  135 ++++++++++++++++++++++++++++++--------------
 1 files changed, 92 insertions(+), 43 deletions(-)

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 5733764..ec87b7c 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
@@ -20,11 +20,9 @@
 using AutoMapper;
 using HslCommunication;
 using Newtonsoft.Json;
-using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
 using Quartz;
 using SqlSugar;
 using System.Reflection;
-using System.Threading.Tasks;
 using WIDESEAWCS_Common.TaskEnum;
 using WIDESEAWCS_Core;
 using WIDESEAWCS_Core.Helper;
@@ -121,7 +119,7 @@
                                     {
                                         command.InteractiveSignal = commandWrite.WriteInteractiveSignal;
                                         int count = string.IsNullOrEmpty(platform.Location) ? 0 + 1 : platform.Location.Split(',').Count() + 1;
-                                        method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count });
+                                        method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count, platform });
                                     }
                                 }
                                 else
@@ -140,7 +138,7 @@
                                                 {
                                                     command.InteractiveSignal = commandWrite.WriteInteractiveSignal;
                                                     int count = strings.Count - index;
-                                                    method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count });
+                                                    method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count, platform });
                                                 }
                                             }
                                         }
@@ -407,28 +405,42 @@
             Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode);
             if (task != null)
             {
+                WebResponseContent content = new WebResponseContent();
                 ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(task);
                 taskCommand.InteractiveSignal = command.InteractiveSignal;
                 if (task.PalletCode != command.Barcode)
                 {
                     var NGAddress = _platFormRepository.QueryFirst(x => x.PlatCode == task.TargetAddress).Capacity;
                     taskCommand.TargetAddress = NGAddress;
-                    conveyorLine.SendCommand(taskCommand, childDeviceCode);
                 }
                 else
                 {
                     taskCommand.TargetAddress = 0;
                 }
-                // TODO璋冪敤浠诲姟瀹屾垚鎵ц浠诲姟瀹屾垚
+
+                #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);
-                WebResponseContent content = _taskService.UpdateTaskStatusToNext(task);
+                content = _taskService.UpdateTaskStatusToNext(task);
             }
         }
 
         /// <summary>
         /// 鍒涘缓浠诲姟骞跺彂閫佽姹�
         /// </summary>
-        private WebResponseContent CreateAndSendTask(WMSTaskDTO taskDTO)
+        public WebResponseContent CreateAndSendTask(WMSTaskDTO taskDTO)
         {
             var content = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
             if (content.Status)
@@ -445,54 +457,91 @@
         /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
         /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
         /// <param name="index">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
-        public void EmptyTrayReturn(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int index)
+        public void EmptyTrayReturn(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int index, Platform platform)
         {
-            CheckAndCreateTask((int)TaskOutboundTypeEnum.OutTray, childDeviceCode, index, "CHSC01", "001-001-001");
+            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());
         }
 
-        /// 闈欑疆绌烘墭鐩樺嚭搴�
-        /// </summary>
-        /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
-        /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
-        /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
-        /// <param name="index">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
-        public void EmptyTrayOutbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int index)
-        {
-            CheckAndCreateTask((int)TaskOutboundTypeEnum.OutTray, childDeviceCode, index, "JZSC01", "002-020-001");
-        }
+        #region
+        ///// <summary>
+        ///// 闄堝寲瀹炵洏鍑哄簱)
+        ///// </summary>
+        ///// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
+        ///// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
+        ///// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
+        ///// <param name="index">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
+        //public void ChuanhuaOutbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode)
+        //{
+        //    CheckAndCreateTask(TaskOutboundTypeEnum.Outbound, childDeviceCode, "CHSC01", "001-001-001");
+        //}
 
-        /// <summary>
-        /// 闄堝寲鍑哄簱(瀹炵洏)
-        /// </summary>
-        /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
-        /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
-        /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
-        /// <param name="index">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
-        public void ChuanhuaOutbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int index)
-        {
-            CheckAndCreateTask((int)TaskOutboundTypeEnum.Outbound, childDeviceCode, index, "CHSC01", "001-001-001");
-        }
+        ///// 闈欑疆绌烘墭鐩樺嚭搴�
+        ///// </summary>
+        ///// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
+        ///// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
+        ///// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
+        ///// <param name="index">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
+        //public void EmptyTrayOutbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int index)
+        //{
+        //    CheckAndCreateTask(TaskOutboundTypeEnum.OutTray, childDeviceCode, index, "JZSC01", "002-020-001");
+        //}
+        ///// <summary>
+        ///// 闈欑疆瀹炵洏鍑哄簱
+        ///// </summary>
+        ///// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
+        ///// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
+        ///// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
+        ///// <param name="index">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
+        //public void JingzhiOutbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int index)
+        //{
+        //    CheckAndCreateTask(TaskOutboundTypeEnum.Outbound, childDeviceCode, index, "JZSC01", "002-000-001");
+        //}
+        #endregion
 
         /// <summary>
         /// 妫�鏌ヤ换鍔″苟鍒涘缓鏂颁换鍔�
         /// </summary>
-        private void CheckAndCreateTask(int taskType, string childDeviceCode, int index, string roadWay, string sourceAddress)
+        private void CheckAndCreateTask(TaskOutboundTypeEnum taskType, string childDeviceCode, int index, string roadWay, List<string> roadways = null)
         {
-            var tasks = _taskRepository.QueryData(x => x.TaskType == taskType && x.TargetAddress == childDeviceCode);
+            var tasks = _taskRepository.QueryData(x => x.TaskType == (int)taskType && x.TargetAddress == childDeviceCode);
             if (tasks.Count < index)
             {
-                var taskDTO = new WMSTaskDTO()
+                //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
                 {
-                    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 = taskType
+                    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;
+
+                WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result);
+
+                // 妫�鏌ョ姸鎬佸苟杩斿洖
+                if (!content.Status)
+                    return;
+
+                taskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
+                #endregion
 
                 CreateAndSendTask(taskDTO);
             }

--
Gitblit v1.9.3