From 2c4c125072e1b88c994efc9bb6f1ff5ef754d41b Mon Sep 17 00:00:00 2001
From: 陈勇 <chenyong@hnkhzn.com>
Date: 星期四, 14 十一月 2024 10:01:21 +0800
Subject: [PATCH] 忽略项

---
 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs |  195 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 195 insertions(+), 0 deletions(-)

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
new file mode 100644
index 0000000..78f336f
--- /dev/null
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs
@@ -0,0 +1,195 @@
+锘縰sing Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_DTO.TaskInfo;
+using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_QuartzJob;
+using WIDESEAWCS_Tasks.ConveyorLineJob;
+using HslCommunication;
+using OfficeOpenXml.ConditionalFormatting;
+using WIDESEAWCS_DTO.WMS;
+
+namespace WIDESEAWCS_Tasks
+{
+    public partial class CommonConveyorLineJob
+    {
+        /// <summary>
+        /// 澶勭悊鍑哄簱浠诲姟
+        /// </summary>
+        private void HandleTaskOut(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue, Dt_Task taskOut)
+        {
+            // 濡傛灉娌℃湁浠诲姟锛岀洿鎺ヨ繑鍥�
+            if (taskOut == null) return;
+
+            // 鏄犲皠浠诲姟鍛戒护
+            var taskCommand = MapTaskCommand(taskOut, command);
+
+            // 鏍规嵁涓嶅悓鐨勪换鍔$被鍨嬪拰鐘舵�佹墽琛屼笉鍚岀殑閫昏緫
+            bool isOutTray = taskOut.TaskType == (int)TaskOutboundTypeEnum.OutTray;
+            bool isOutboundAndOutFinish = taskOut.TaskType == (int)TaskOutboundTypeEnum.Outbound && taskOut.TaskState == (int)TaskOutStatusEnum.SC_OutFinish;
+            bool isOutboundAndLineOutExecuting = taskOut.TaskType == (int)TaskOutboundTypeEnum.Outbound && taskOut.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting;
+
+            if (isOutTray || isOutboundAndOutFinish || isOutboundAndLineOutExecuting)
+            {
+                // 鍙戦�佸懡浠ゅ埌杈撻�佺嚎
+                conveyorLine.SendCommand(taskCommand, childDeviceCode);
+                // 鏍囪鍙戦�佸畬鎴�
+                ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
+                // 鏇存柊浠诲姟鐘舵��
+                _taskService.UpdateTaskStatusToNext(taskOut);
+            }
+            else if (taskOut.TaskType == (int)TaskOutboundTypeEnum.OutTray && taskOut.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting)
+            {
+                // 瀹屾垚WMS浠诲姟
+                CompleteWmsTask(taskOut, command, conveyorLine, childDeviceCode, ProtocalDetailValue);
+            }
+        }
+
+        /// <summary>
+        /// 澶勭悊鏂颁换鍔�
+        /// </summary>
+        private void HandleNewTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue)
+        {
+            // 鐗瑰畾鏉′欢涓嬪垱寤哄苟鍙戦�佺┖鎵樼洏鍏ュ簱浠诲姟
+            if ((conveyorLine.DeviceCode == "1003" && childDeviceCode == "1016") || (conveyorLine.DeviceCode == "1005" && childDeviceCode == "1048"))
+            {
+                // 璇锋眰WMS绌烘墭鐩樹换鍔�
+                CreateAndSendEmptyTrayTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue);
+            }
+            else if ((conveyorLine.DeviceCode == "1001" && childDeviceCode == "1088") || (conveyorLine.DeviceCode == "1004" && childDeviceCode == "1339"))
+            {
+                // 璇锋眰WMS鍏ュ簱浠诲姟
+                RequestWmsTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue);
+            }
+            else if ((conveyorLine.DeviceCode == "1001" && childDeviceCode == "1073") || (conveyorLine.DeviceCode == "1003" && childDeviceCode == "1002"))
+            {
+                //TODO 鍙戦�佺洿鎺ュ幓NG鍙d换鍔�
+            }
+        }
+
+        /// <summary>
+        /// 鏄犲皠浠诲姟鍛戒护
+        /// </summary>
+        private ConveyorLineTaskCommand MapTaskCommand(Dt_Task task, ConveyorLineTaskCommand command)
+        {
+            // 浣跨敤mapper鏄犲皠浠诲姟鍛戒护
+            var comm = _mapper.Map<ConveyorLineTaskCommand>(task);
+            comm.InteractiveSignal = command.InteractiveSignal;
+            return comm;
+        }
+
+        /// <summary>
+        /// 瀹屾垚WMS浠诲姟
+        /// </summary>
+        private void CompleteWmsTask(Dt_Task taskOut, ConveyorLineTaskCommand command, CommonConveyorLine conveyorLine, string childDeviceCode, int ProtocalDetailValue)
+        {
+            // 濡傛灉娌℃湁鏉$爜淇℃伅锛屽垯璁剧疆鐩爣鍦板潃涓篘G鍦板潃
+            if (command.Barcode == "NoRead")
+            {
+                var NGAddress = _platFormRepository.QueryFirst(x => x.PlatCode == taskOut.TargetAddress).Capacity;
+                taskOut.TargetAddress = NGAddress.ToString();
+            }
+
+            // TODO璋冪敤WMS浠诲姟瀹屾垚鎺ュ彛
+            var keys = new Dictionary<string, object>()
+                {
+                    {"taskNum", taskOut.TaskNum}
+                };
+            var result = HttpHelper.GetAsync($"http://127.0.0.1:5000/api/Task/CompleteTaskAsync", keys).Result;
+            WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result);
+            if (content.Status)
+            {
+                // 鏍囪鍙戦�佸畬鎴�
+                ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
+                // 鏇存柊浠诲姟鐘舵��
+                _taskService.UpdateTaskStatusToNext(taskOut);
+            }
+        }
+
+        /// <summary>
+        /// 鍒涘缓骞跺彂閫佺┖鎵樼洏浠诲姟
+        /// </summary>
+        public void CreateAndSendEmptyTrayTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue)
+        {
+            if (command.Barcode != "NoRead")
+            {
+                // 鍒涘缓绌烘墭鐩樹换鍔TO
+                WMSTaskDTO taskDTO = CreateEmptyTrayTaskDto(command.Barcode, childDeviceCode);
+                // 鍒涘缓骞跺彂閫佷换鍔�
+                WebResponseContent content = CreateAndSendTask(taskDTO);
+                if (content.Status)
+                {
+                    // 鏌ヨ浠诲姟
+                    Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
+                    if (task != null)
+                    {
+                        // 鏄犲皠浠诲姟鍛戒护
+                        ConveyorLineTaskCommand taskCommand = MapTaskCommand(task, command);
+                        // 鍙戦�佸懡浠ゅ埌杈撻�佺嚎
+                        conveyorLine.SendCommand(taskCommand, childDeviceCode);
+                        // 鏍囪鍙戦�佸畬鎴�
+                        ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
+                        // 鏇存柊浠诲姟鐘舵��
+                        _taskService.UpdateTaskStatusToNext(task);
+                    }
+                }
+            }
+        }
+
+        /// <summary>
+        /// 鍒涘缓绌烘墭鐩樹换鍔TO
+        /// </summary>
+        private WMSTaskDTO CreateEmptyTrayTaskDto(string barcode, string childDeviceCode)
+        {
+            #region 鍚慦MS璇锋眰绌烘墭鐩樹换鍔�
+            WMSTaskDTO wMSTaskDTO = new WMSTaskDTO();
+            RequestTaskDto request = new RequestTaskDto()
+            {
+                Position = childDeviceCode,
+                PalletCode = barcode,
+            };
+            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;
+
+            return JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
+
+            #endregion 鍚慦MS璇锋眰绌烘墭鐩樹换鍔�
+        }
+
+        /// <summary>
+        /// 璇锋眰WMS浠诲姟
+        /// </summary>
+        private void RequestWmsTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue)
+        {
+            // 璇锋眰WMS浠诲姟
+            if (_taskService.RequestWMSTask(command.Barcode, childDeviceCode).Status)
+            {
+                // 鏌ヨ浠诲姟
+                Dt_Task task = _taskService.QueryBarCodeConveyorLineTask(command.Barcode, childDeviceCode);
+                if (task != null)
+                {
+                    // 鏄犲皠浠诲姟鍛戒护
+                    ConveyorLineTaskCommand taskCommand = MapTaskCommand(task, command);
+                    // 鍙戦�佸懡浠ゅ埌杈撻�佺嚎
+                    conveyorLine.SendCommand(taskCommand, childDeviceCode);
+                    // 鏍囪鍙戦�佸畬鎴�
+                    ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
+                    // 鏇存柊浠诲姟鐘舵��
+                    _taskService.UpdateTaskStatusToNext(task);
+                }
+            }
+        }
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3