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